私はPHPで、画像の類似性を比較するためのシンプルで高速なアルゴリズムを開発しました。
ハッシュへの高速(800x600画像の場合は毎秒約40)で、最適化されていない検索アルゴリズムは、22分で3,000枚の画像を処理し、それぞれを他の画像と比較します(3 /秒)。
基本的な概要は、画像を取得し、それを8x8に再スケーリングしてから、それらのピクセルをHSV用に変換することです。次に、色相、彩度、値が4ビットに切り捨てられ、1つの大きな16進文字列になります。
画像の比較は、基本的に2つの文字列に沿って進み、検出された違いを追加します。総数が64未満の場合は、同じ画像です。さまざまな画像は通常600〜800前後です。20未満で非常によく似ています。
このモデルに使用できる改善点はありますか?さまざまなコンポーネント(色相、彩度、値)が比較にどの程度関連しているかは調べていません。色相はおそらく非常に重要ですが、他のものは?
検索を高速化するために、おそらく各部分の4ビットを半分に分割し、最上位ビットを最初に配置して、チェックに失敗した場合にlsbをチェックする必要がないようにすることができます。そのようなビットを保存する効率的な方法はわかりませんが、それでも簡単に検索して比較することができます。
私は3,000枚の写真(ほとんどがユニーク)のデータセットを使用してきましたが、誤検知はありませんでした。サイズ変更の影響を完全に受けず、明るさとコントラストの変化にかなり耐性があります。