20

重複検出のために画像の指紋を取得する効率的な方法はありますか?

つまり、jpgやpngなどの画像ファイルが与えられた場合、画像コンテンツを識別し、画像の他の側面(画像メタデータなど)の変更に対してかなり回復力のある値をすばやく計算できるようにしたいと思います。サイズ変更を扱う場合は、さらに優れています。

【更新】jpgファイルのメタデータについて、ファイルの特定の部分に保存されているかどうか誰か知っていますか?私はそれを無視する簡単な方法を探しています-例えば。ファイルの最初のxバイトをスキップするか、ファイルの最後からxバイトを取得して、メタデータを取得しないようにすることはできますか?

4

8 に答える 8

21

メタデータとサイズに関連するものを回避しようとしている場合は、暗闇の中で突き刺してください。

  1. エッジ検出とスケールに依存しない比較
  2. グレースケール/RGB値のサンプリングと統計分析(平均輝度、平均カラーマップ)
  3. FFTおよびその他の変換(FFTを使用した指紋の良い記事の分類)

そして他の多く。

基本的に:

  1. JPG / PNG/GIFをエンコードに依存しないRGBバイト配列に変換します
  2. ファジーパターン分類方法を使用して、画像に「パターンのハッシュ」を生成します...一部の人が示唆しているようにRGB配列のハッシュではありません
  3. 次に、カプセル化されたハッシュまたはパターンのエンコーディングの一致しきい値に基づいた高速ハッシュ比較の分散メソッドが必要です。Erlangはこれに適しています:)

利点は次のとおりです。

  1. AI /トレーニングを使用する場合、エンコーディング、サイズ、アスペクト、色相とラムの変更、ダイナミックレンジ/サブサンプリングの違い、場合によってはパースペクティブに関係なく、重複を特定します

短所:

  1. コーディングが難しい場合があります..OpenCVのようなものが役立つかもしれません
  2. 確率的...誤検知の可能性がありますが、ニューラルネットワークやその他のAIを使用して減らすことができます
  3. パターン品質をカプセル化して検索を分散できない限り、低速です(MapReduceスタイル)

次のような画像分析の本をチェックアウトします。

  1. パターン分類2ed
  2. 画像処理の基礎
  3. 画像処理-原理と応用

その他

画像を拡大縮小する場合は、作業が簡単になります。そうでない場合は、サンプルの削減よりも多くの点でスケーリングが不可逆であるという事実に対処する必要があります。

于 2009-08-11T17:06:06.587 に答える
4

比較のために画像のバイトサイズを使用することは、多くのアプリケーションに適しています。別の方法は次のとおりです。

  1. メタデータを取り除きます。
  2. 画像のMD5(または他の適切なハッシュアルゴリズム)を計算します。
  3. それを潜在的な重複画像のMD5(またはその他)と比較します(その画像のメタデータも削除した場合)
于 2009-08-11T17:06:10.440 に答える
3

SIFT (Scale Invariant Feature Transform) のようなアルゴリズムを使用して、写真のキー ポイントを決定し、これらを一致させることができます。

http://en.wikipedia.org/wiki/Scale-invariant_feature_transformを参照してください

たとえば、パノラマで画像をつなぎ合わせて、異なる画像内の一致するポイントを検出する場合に使用されます。

于 2011-12-26T18:30:40.870 に答える
1

画像ハッシュを実行したい。あなたは特定の言語を指定しなかったので、私はあなたが好みを持っていないと推測しています。少なくとも、それを実行できるMatlabツールボックス(ベータ版)があります:http://users.ece.utexas.edu/~bevans/projects/hashing/toolbox/index.html。これに関するグーグルの結果のほとんどは、実際のライブラリやツールではなく、研究結果です。

MD5ingの問題は、MD5が入力の小さな変化に非常に敏感であり、少し「よりスマート」なことをしたいように聞こえることです。

于 2009-08-11T17:08:47.300 に答える
0

かなり興味深い質問です。最も速くて簡単なのは、コンテンツバイト配列のcrc32を計算することですが、これは100%同一の画像でのみ機能します。よりインテリジェントな比較を行うには、おそらく何らかのファジーロジック分析が必要になります...

于 2009-08-11T17:05:47.053 に答える
0

これは単なるアイデアです。jpegのDCTに存在する可能性のある低周波数成分は、サイズ不変の識別子として使用できます。

于 2009-08-11T17:24:58.170 に答える
0

私はこれの少なくとも些細なバージョンを実装しました。すべての画像を非常に小さい(固定サイズの)白黒サムネイルに変換してサイズ変更します。次に、それらを比較します。正確なサイズ変更された複製、および白黒に変換された複製を検出します。それは多くのコストなしで多くの複製を取得します。

于 2009-08-11T17:08:17.173 に答える
0

最も簡単な方法は、他のすべてのメタデータを無視して、画像データのハッシュ(MD5など)を実行することです。一般的な画像形式をデコードできる多くのオープンソースライブラリを見つけることができるので、メタデータを簡単に取り除くことができます。

ただし、スケーリングや回転など、画像自体が操作されている場合は機能しません。

あなたが望むことを正確に行うには、画像透かしを使用する必要がありますが、特許を取得しており、高価になる可能性があります。

于 2009-08-11T17:09:44.067 に答える