2つの画像間の類似性を計算するためのさまざまなアルゴリズムがありますが、類似した画像をすばやく見つけることができるように、この情報をデータベースに保存する方法については何も見つかりません。
「類似」とは、回転(90度刻み)、色調整、および/または再保存(非可逆jpeg圧縮)された正確な複製を意味します。
すばやく検索できるように、画像の「指紋」を考え出そうとしています。
私がこれまでに思いついた最善の方法は、グレースケールヒストグラムを生成することです。16個のビンと256色のグレーで、16バイトの指紋を簡単に作成できます。これはかなりうまく機能しますが、私が望むほど堅牢ではありません。
私が試したもう1つの解決策は、画像のサイズを変更し、すべて同じ方向になるように回転させ、グレースケールし、ヒストグラムを正規化してから、約8x8に縮小し、色を16段階のグレーに縮小することでした。ミニチュア画像は非常に似ていますが、通常は1〜2ピクセルずれているため、正確に一致させることはできません。
完全に一致しないと、類似した写真をグループ化する効率的な方法はないと思います(すべての写真を他のすべての写真と比較せずに、つまりO(n ^ 2))。
それで、(1)上記の要件に不変の指紋/署名を作成するにはどうすればよいですか?または、(2)それが不可能な場合、単一の画像が与えられた場合に、数千のデータベースで最適なものを見つけることができるように、他にどのようなメトリックを使用できますか?