38

2 つの画像ファイルがファイル レベルで異なる場合がありますが、人間はそれらを知覚的に同一と見なします。それを踏まえて、画像の巨大なデータベースがあり、人間が画像 X がデータベースに存在すると考えるかどうかを知りたいとします。すべての画像に知覚ハッシュ/指紋がある場合、画像 X をハッシュすることができ、それがデータベースにあるかどうかを確認するのは簡単なことです。

この問題に関する調査があり、いくつかのアルゴリズムが存在することは知っていますが、アルゴリズムを最初から実装せずにそのようなハッシュを計算するために使用できる UNIX コマンド ライン ツールやライブラリなどのツールはありますか?

編集:ImageMagickを使用して、findimagedupesからの関連コード

try $image->Sample("160x160!");
try $image->Modulate(saturation=>-100);
try $image->Blur(radius=>3,sigma=>99);
try $image->Normalize();
try $image->Equalize();
try $image->Sample("16x16");
try $image->Threshold();
try $image->Set(magick=>'mono');
($blob) = $image->ImageToBlob();

編集:警告!ImageMagick の $image オブジェクトには、読み込まれた画像ファイルの作成時刻に関する情報が含まれているようです。これは、同じ画像であっても、異なる時刻に取得された場合、取得される blob が異なることを意味します。フィンガープリントが同じままであることを確認するには、最後のステップとして $image->getImageSignature() を使用します。

4

8 に答える 8

14

findimagedupesはかなり良いです。たとえば、「findimagedupes -v 指紋イメージ」を実行して、「知覚ハッシュ」を出力できます。

于 2008-12-03T02:38:03.353 に答える
5

相互相関または位相相関は、ノイズ、劣化、および水平または垂直オフセットがあっても、画像が同じであるかどうかを示します。FFT ベースの方法を使用すると、質問で説明されているアルゴリズムよりもはるかに高速になります。

ただし、通常のアルゴリズムは、同じスケールまたは回転ではない画像には機能しません。それらを事前に回転または事前にスケーリングすることはできますが、それは実際にはプロセッサを集中的に使用します. どうやら、対数極空間で相関を行うこともでき、回転、平行移動、およびスケールに対して不変になりますが、それを説明するのに十分な詳細はわかりません。

MATLAB の例:正規化された相互相関を使用したイメージのレジストレーション

ウィキペディアはこれを「位相相関」と呼び、スケールおよび回転不変にすることについても説明しています。

この方法を拡張して、最初に画像を対数極座標に変換することにより、2 つの画像間の回転とスケーリングの違いを特定できます。フーリエ変換の特性により、回転およびスケーリング パラメータは、平行移動に対して不変な方法で決定できます。

于 2009-08-15T18:44:24.210 に答える
4

カラー ヒストグラムは、サイズ変更や再サンプリングなどを行った同じ画像に適しています。
同じランドマークのさまざまな人物の写真を一致させたい場合は、よりトリッキーです。haar 分類器を見てください。Opencv は、画像処理用の優れた無料ライブラリです。

于 2008-12-03T03:51:53.547 に答える
1

その背後にあるアルゴリズムはわかりませんが、Microsoft Live Image Searchがこの機能を追加したばかりです。Picasa には、画像内の顔を識別し、似ている顔をグループ化する機能もあります。ほとんどの場合、それは同一人物です。

この種の問題には、サポート ベクター マシン、ニューラル ネットワーク、単純ベイズ分類器、ベイジアン ネットワークなどの機械学習テクノロジが最適です。手書きの数字を分類するために、最初の 3 つをそれぞれ 1 つずつ書きました。これは、基本的に画像パターン認識です。

于 2008-12-03T02:45:50.093 に答える
0

多数の画像がある場合、各画像の完全な画像比較 (O(n^2) など) を行う前に、カラー ヒストグラムを使用して画像の大まかな近似度を取得できます。

于 2008-12-03T03:39:07.270 に答える
0

画像のサイズを 1x1 ピクセルに変更します...それらが正確な場合、それらが同じ画像である可能性はわずかです...今度は 2x2 ピクセルの画像にサイズ変更します。4 つのピクセルすべてが正確な場合は、正確です... 9 ピクセルすべてが正確な場合は 3x3... 可能性が高く、16 ピクセルすべてが正確な場合は 4x4... 可能性が高くなります。

等...

このようにすることで、効率を改善できます... 1x1 ピクセル グリッドが大幅にずれている場合、2x2 グリッドをわざわざチェックする必要はありません。等

于 2008-12-03T03:09:59.717 に答える
-1

diff を使用して、それらが本当に異なるかどうかを確認できます..これにより、多くの無駄な比較が削除されると思います。次に、アルゴリズムについては、確率論的アプローチを使用します..それらが同じように見える可能性は何ですか..各ピクセルのRGBの量に基づいています. 光度などの他の指標を見つけることもできます。

于 2008-12-03T02:37:29.297 に答える
-1

DPEG「The」Duplicate Media Managerがありますが、そのコードは公開されていません。これは非常に古いツールで、2003 年に使用したことを覚えています。

于 2008-12-03T03:17:34.490 に答える