これらのアルゴリズムは通常、指紋ベースです。フィンガープリントは、かなり小さなデータ構造であり、長いハッシュ コードのようなものです。ただし、フィンガープリント関数の目的は、ハッシュ関数の目的とは逆です。優れたハッシュ関数は、非常に類似した (しかし等しくない) オブジェクトに対して非常に異なるコードを生成する必要があります。逆に、フィンガープリント関数は、類似した画像に対して同じフィンガープリントを生成する必要があります。
例を挙げると、これは (あまり良くない) 指紋機能です。画像のサイズを 32x32 の正方形に変更し、色を正規化および量子化して、色数を 256 程度に減らします。次に、1024 バイトの指紋があります。画像のために。指紋のテーブルを保持するだけです => [画像 URL のリスト]。特定の画像に似た画像を見る必要がある場合は、そのフィンガープリント値を計算して、対応する画像リストを見つけるだけです。簡単。
簡単なことではありませんが、実際に有用であるためには、フィンガープリント関数はクロップ、アフィン変換、コントラストの変化などに対して堅牢である必要があります。優れたフィンガープリント関数の構築は、別の研究トピックです。多くの場合、それらは手動で調整され、多くのヒューリスティックを使用します (つまり、典型的な写真の内容、画像形式/EXIF の追加データなどに関する知識を使用します)。
もう 1 つのバリエーションは、複数の指紋関数を使用し、それぞれを適用して結果を結合することです。実は、似たような文章を探すのと似ています。画像類似性検索では、「bag of words」の代わりに「bag of Fingerprints」を使用し、あるバッグの要素が別のバッグの要素と同じである要素の数を見つけます。この検索を効率的にする方法は、別のトピックです。
さて、記事・論文について。さまざまな方法の概要を説明する適切な記事が見つかりませんでした。私が知っている公開記事のほとんどは、特定の方法に対する特定の改善について議論しています。これらを確認することをお勧めします。
「ウェーブレットを使用したコンテンツ フィンガープリンティング」 . この記事では、ウェーブレットを使用したオーディオ フィンガープリントについて説明しますが、同じ方法をイメージ フィンガープリントにも適用できます。
順列グループ化: オーディオおよび画像検索のためのインテリジェントなハッシュ関数設計。ローカリティ センシティブ ハッシュに関する情報。
大規模な部分重複 Web 画像検索のバンドル機能。非常に優れた記事で、SIFT と効率化のためのバンドル機能について説明しています。最後に素敵な参考文献もあります