web-dev-qa-db-ja.com

画像ハッシュは何に使用されますか?

私は時々この用語を聞いて、それが何のために使われているのか疑問に思っていますか?

37
seanbrant

ハッシング は、任意のデータに適用され、固定サイズ(ほとんどの場合非常に小さいサイズ)のデータを生成する関数です。ハッシュにはさまざまな種類がありますが、画像ハッシュについて話している場合は、次のいずれかの目的で使用されます。

  • 重複を非常に高速に見つけます。ほとんどすべてのハッシュ関数が機能します。画像全体を検索する代わりに、画像のハッシュを探します。
  • 後で説明する類似の画像を見つける

私たちと同じように見える画像は、生のバイトを比較するだけであれば、大きく異なる場合があります。これは次の原因が考えられます。

  • サイズ変更
  • 回転
  • わずかに異なる色のガンマ
  • 異なる形式
  • いくつかの小さなノイズ、透かし、アーティファクト

1バイトだけ異なる画像を見つけたとしても、ハッシュ関数を適用すると、結果が大きく異なる可能性があります( MD5、SHA などのハッシュの場合、おそらく完全に異なる)。

そのため、同様の画像に対して同様の(または同一の)ハッシュを作成するハッシュ関数が必要です。一般的なものの1つは locality sensitive hashing です。しかし、画像にどのような問題が発生するかはわかっているので、 より特殊な種類のハッシュ を見つけることができます。

最もよく知られているアルゴリズムは次のとおりです。

  • a-hash 。平均ハッシュは、いくつかの変換のみを使用する最も単純なアルゴリズムです。画像をスケーリングし、グレースケールに変換し、平均を計算し、平均に基づいてグレースケールを二値化します。次に、バイナリイメージを整数に変換します。アルゴリズムは非常に単純なので、1時間で実装できます。
  • p-hash 。知覚的ハッシュも同様のアプローチを使用しますが、平均化の代わりに 離散コサイン変換 (信号処理の一般的な変換)に依存します。
  • d-hash 。差分ハッシュはa-hashと同じアプローチを使用しますが、平均値に関する情報を使用する代わりに、勾配(隣接するピクセル間の差)を使用します。
  • w-hash 。 p-hashに非常に似ていますが、DCTの代わりに ウェーブレット変換 を使用します。

ところで、pythonを使用する場合、これらのハッシュはすべて this library で既に実装されています。

41
Salvador Dali

通常、ファイルのハッシュはファイルのデータの個々のビットをハッシュしますが、画像のハッシュは少し高いレベルで機能します。違いは、画像ハッシュでは、2つの画像が実質的に同一に見えてもフォーマットや解像度が異なる場合(または、おそらく圧縮による小さな破損がある場合)、同じ数にハッシュする必要があることです。データの実際のビットはまったく異なりますが、それらが実際に人間とまったく同じに見える場合、同じものにハッシュされます。

これの1つのアプリケーションは検索です。 TinEye.comを使用すると、画像をアップロードして、インターネットでその発生の多くを見つけることができます。グーグルのように、ウェブページをクロールして画像を探すウェブクローラーがあります。次に、これらの画像をハッシュし、ハッシュとURLをデータベースに保存します。画像をアップロードすると、ハッシュが計算され、データベース内のそのハッシュにリンクしているすべてのURLが取得されます。 TinEyeの使用例には、高解像度バージョンの写真の検索や、誰かの公開Facebook/myspace /などの検索が含まれます。写真からのプロファイル(これらのプロファイルが同じ写真を使用すると仮定します。

また、画像ハッシュをキャッシュまたはローカルストレージで使用して、それぞれ写真の再送信または複製のストレージを防ぐことができます。

画像認証やビデオ内の類似フレームの検索など、他の多くの可能性があります(他の誰かが言及したように)。

37
Matt Boehm

ハッシュは、一般的に、大量のデータをその画像を識別するために使用できる短い(ish)数に減らすための便利な方法です。

特に重複しないマスターカウンター(JPG001 JPG002)のインクリメントに依存できない複数の並行作成者が存在する場合、特に、人間の介入なしにファイルを識別する便利な方法を提供することを目的としています。

時々、ハッシュは偽造できないように意図されているので、私が言うことができる-あなたが生成する画像ハッシュがあなたに画像を送ったときに作ったものと同じなら、あなたはそれが私からのものであることを確信できます(そして悪人によって調整されていない) )。ただし、すべてのハッシュがこの保証を行うことができるわけではありません。数年ごとに、このような「暗号化」ハッシュが致命的な欠陥を持つことが示されています。

3
Alex Brown

実際には、画像ハッシュは、一連のフレームまたはビデオで同様の画像を見つけるため、または多くの映画スタジオが現在行っているようにさまざまな画像に透かしを埋め込むために人気があります(ほとんど不気味な意味でFight Clubに耳を傾けます!)。

1
mduvall