1

ハッシュセット/辞書キーとして使用する画像のサイズを知りたいです。この目的でハッシュ関数を使用することも考えていますが、ハッシュの衝突が心配です。約100万枚の画像を保存する必要があります。

4

3 に答える 3

2

HashSet または Dictionary のキーにどのデータを使用するかは問題ではありませんが、そのためのGetHashCodeおよびEqualsメソッドを実装する必要があります。

ハッシュの衝突は問題ではありません。これは、2 つの画像を同じバケットに入れ、Equalsメソッドを使用して適切な画像を見つけるだけです。

于 2012-12-17T14:27:55.543 に答える
1

キーとしてのビットマップ画像?それはあまり良い考えではありません。ハッシュセットキーはできるだけ小さくする必要があります。そうしないと、パフォーマンスが大幅に低下します。

できることは、画像からハッシュ値(SHA1など)を計算し、それをキーとして使用することです。たった20バイトなので、フルビットマップイメージよりもはるかに優れた適切なサイズになるはずです。

于 2012-12-17T14:29:48.633 に答える
1

画像のバイトを指定すると、MD5 や SHA1 などのアルゴリズムを使用してそのハッシュを計算できます。

bytesあなたの写真のバイト配列である例:

using (var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider())
{
    var hash = Convert.ToBase64String(md5.ComputeHash(bytes));
    //Store hash
}
于 2012-12-17T14:32:14.643 に答える