2 つの画像が「類似」しているかどうかを判断し、色、明るさ、形状などの類似パターンを認識できるアルゴリズムが必要です。人間の脳が画像を「分類」するために使用するパラメーターについて、いくつかの指針が必要になる場合があります。..
私はハウスドルフベースのマッチングを見てきましたが、それは主に変換されたオブジェクトと形状のパターンをマッチングするためのようです。
2 つの画像が「類似」しているかどうかを判断し、色、明るさ、形状などの類似パターンを認識できるアルゴリズムが必要です。人間の脳が画像を「分類」するために使用するパラメーターについて、いくつかの指針が必要になる場合があります。..
私はハウスドルフベースのマッチングを見てきましたが、それは主に変換されたオブジェクトと形状のパターンをマッチングするためのようです。
ウェーブレット変換を使用して画像を署名に分解することにより、同様のことを行いました。
私のアプローチは、変換された各チャネルから最も重要なn 個の係数を選び、それらの位置を記録することでした。これは、abs(power) に従って (power,location) タプルのリストをソートすることによって行われました。類似した画像は、同じ場所に重要な係数があるという点で類似性を共有します。
画像を YUV 形式に変換するのが最適であることがわかりました。これにより、形状 (Y チャネル) と色 (UV チャネル) の類似性を効果的に重み付けできます。
上記の私の実装はmactoriiで見つけることができますが、残念ながら私は必要なほど多くの作業を行っていません:-)
私の友人の何人かが驚くほど良い結果を出した別の方法は、単純に画像のサイズを 4x4 ピクセルに変更し、それを署名として保存することです。2 つの画像がどの程度類似しているかは、対応するピクセルを使用して 2 つの画像間のマンハッタン距離を計算することでスコア付けできます。彼らがサイズ変更をどのように実行したかについての詳細はわかりません。そのため、そのタスクに使用できるさまざまなアルゴリズムを試して、適切なものを見つける必要があるかもしれません。
pHashに興味があるかもしれません。
知覚ハッシュ n. オーディオ、ビデオ、またはイメージ ファイルのフィンガープリントで、含まれるオーディオまたはビジュアル コンテンツに基づいて数学的に作成されます。入力の小さな変化が出力の劇的な変化につながるなだれ効果に依存する暗号化ハッシュ関数とは異なり、入力が視覚的または聴覚的に類似している場合、知覚ハッシュは互いに「近い」ものです。
私はSIFTを使用して、異なる画像内の同じオブジェクトを再検出しました。それは本当に強力ですが、かなり複雑で、やり過ぎかもしれません。画像が非常に似ていると思われる場合は、2つの画像の違いに基づくいくつかの単純なパラメータでかなりわかります。いくつかのポインタ:
Perceptual Image Diffを使用できます
これは、知覚メトリックを使用して 2 つの画像を比較するコマンド ライン ユーティリティです。つまり、人間の視覚系の計算モデルを使用して、2 つの画像が視覚的に異なるかどうかを判断するため、ピクセルの小さな変化は無視されます。さらに、乱数生成の違い、OS またはマシン アーキテクチャの違いによって引き起こされる誤検出の数が大幅に減少します。
難しい問題です!それはあなたがどれだけ正確である必要があるかに依存し、そしてそれはあなたがどんな種類の画像を扱っているかに依存します。ヒストグラムを使用して色を比較できますが、画像内のそれらの色の空間分布(つまり形状)は明らかに考慮されていません。エッジ検出とそれに続くある種のセグメンテーション(つまり、形状の選択)は、別の画像と照合するためのパターンを提供できます。共起行列を使用して、画像をピクセル値の行列と見なし、それらの行列を比較することで、テクスチャを比較できます。画像マッチングとマシンビジョンに関する優れた本がいくつかあります。Amazonで検索すると、いくつかの本が見つかります。
お役に立てれば!
一部の画像認識ソフトウェア ソリューションは、実際には純粋なアルゴリズム ベースではなく、代わりにニューラル ネットワークの概念を利用しています。http://en.wikipedia.org/wiki/Artificial_neural_networkと、興味深いサンプルを含む NeuronDotNet をチェックしてください: http://neurondotnet.freehostia.com/index.html
大幅に縮小されたバージョン (例: 6x6 ピクセル) のピクセル カラー値の差の二乗和を計算するとうまくいきます。同一の画像は 0 になり、類似の画像は小さな数字になり、異なる画像は大きな数字になります。
上記の他の人のアイデアは、最初に YUV に侵入するという興味深いものに聞こえます。私のアイデアはうまく機能しますが、色盲の観察者の観点からでも、正しい結果が得られるように、画像を「異なる」ものとして計算したいと考えています。
Kohonenニューラルネットワーク/自己組織化マップを用いた関連研究あり
アカデミックなシステム (PicSOM の Google) とアカデミックでない
( http://www.generation5.org/content/2004/aiSomPic.asp、(すべての作業環境には適していない可能性があります)) プレゼンテーションが存在します。
必要な正確な結果に応じて、画像をnxnピクセルブロックに分割して分析することができます。最初のブロックで異なる結果が得られた場合、処理を停止することはできず、パフォーマンスが向上します。
正方形を分析するために、たとえば、色の値の合計を取得できます。
この記事は、それがどのように機能するかを説明するのに非常に役立ちました。
http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html
これは視覚の問題のように聞こえます。Adaptive Boosting と Burns Line Extraction アルゴリズムを調べることをお勧めします。これら 2 つの概念は、この問題への取り組みに役立つはずです。エッジ検出は、基本を説明しているため、ビジョン アルゴリズムに慣れていない場合でも簡単に開始できます。
分類のためのパラメータに関する限り:
2 つの画像間である種のブロック マッチング モーション推定を実行し、残差とモーション ベクトル コストの全体的な合計を測定できます (ビデオ エンコーダーで行うのと同じように)。これにより、動きが補正されます。ボーナス ポイントとして、アフィン変換モーション推定を行います (ズームやストレッチなどを補正します)。オーバーラップ ブロックまたはオプティカル フローを実行することもできます。
最初のパスとして、カラー ヒストグラムを使用してみることができます。ただし、問題のドメインを絞り込む必要があります。一般的な画像マッチングは非常に難しい問題です。
これに関する他のスレッドにはいくつかの良い答えがありますが、スペクトル分析を含む何かがうまくいくかどうか疑問に思いますか?つまり、画像を位相と振幅の情報に分解し、それらを比較します。これにより、トリミング、変換、強度の違いに関する問題の一部を回避できます。とにかく、これは興味深い問題のように思われるので、それは私が推測しているだけです。http://scholar.google.comを検索した場合、これに関するいくつかの論文を思い付くことができると確信しています。