16

私はPHPで、画像の類似性を比較するためのシンプルで高速なアルゴリズムを開発しました。

ハッシュへの高速(800x600画像の場合は毎秒約40)で、最適化されていない検索アルゴリズムは、22分で3,000枚の画像を処理し、それぞれを他の画像と比較します(3 /秒)。

基本的な概要は、画像を取得し、それを8x8に再スケーリングしてから、それらのピクセルをHSV用に変換することです。次に、色相、彩度、値が4ビットに切り捨てられ、1つの大きな16進文字列になります。

画像の比較は、基本的に2つの文字列に沿って進み、検出された違いを追加します。総数が64未満の場合は、同じ画像です。さまざまな画像は通常600〜800前後です。20未満で非常によく似ています。

このモデルに使用できる改善点はありますか?さまざまなコンポーネント(色相、彩度、値)が比較にどの程度関連しているかは調べていません。色相はおそらく非常に重要ですが、他のものは?

検索を高速化するために、おそらく各部分の4ビットを半分に分割し、最上位ビットを最初に配置して、チェックに失敗した場合にlsbをチェックする必要がないようにすることができます。そのようなビットを保存する効率的な方法はわかりませんが、それでも簡単に検索して比較することができます。

私は3,000枚の写真(ほとんどがユニーク)のデータセットを使用してきましたが、誤検知はありませんでした。サイズ変更の影響を完全に受けず、明るさとコントラストの変化にかなり耐性があります。

4

1 に答える 1

10

使用したいものは次のとおりです。

  1. 特徴抽出
  2. ハッシュ
  3. ローカル認識のブルームハッシュ。

  1. ほとんどの人はSIFT機能を使用しますが、私はスケール不変ではない機能でより良い経験をしました。基本的に、エッジ検出器を使用して興味深い点を見つけ、それらの点を中心に画像パッチを配置します。そうすれば、サブイメージを検出することもできます。

  2. 実装したのはハッシュメソッドです。試すべきものはたくさんありますが、あなたはうまくいくはずです:)

  3. 高速化するための重要なステップは、ハッシュをハッシュすることです。値を1進表現に変換してから、ビットのランダムなサブセットを新しいハッシュとして使用します。20〜50のランダムサンプルでこれを行うと、20〜50のハッシュテーブルが得られます。これらの50個のハッシュテーブルのうち2つ以上に一致する機能がある場合、その機能は既に保存されているものと非常によく似ています。これにより、abs(xy)を変換できます

自分で開発した画像類似性検索を試してみたい場合は、spratpixのhajoにメールを送ってください。

于 2011-01-30T21:50:52.247 に答える