11

php とGraphic Draw (GD) Libraryを使用して 2 つの画像を比較する最良の方法は何ですか?

これはシナリオです:

代替テキスト

画像があり、特定のセットのどの画像がそれに最も似ているかを見つけたいと考えています。最も類似した画像は、実際には同じ画像であり、ピクセル完全一致ではなく、同じ画像です。意味を理解しやすくするために、例の番号 1 を使用して 2 つの画像の違いを脚色しました。

一貫した結果は得られませんでしたが、私のアプローチは、imagecopyresampled関数を使用して画像を 1 ピクセルに縮小し、画像間の RGB 値がどれだけ近いかを確認することでした。

可能な一致の赤、緑、青の 10 進相当値から赤、緑、青の 10 進相当値を差し引いた値の合計は、非類似度指数を与えてくれまし。ほとんどの RGB 類似画像がターゲット画像であり、使用可能なターゲットから画像を選択するために使用できました。

4 つの画像をターゲット画像 (この場合はリンゴのロゴ) と比較した場合の出力のサンプルを次に示します。この画像はそれらの 1 つに一致しますが、完全には同じではありません。

元の画像:

赤:222 緑:226 青:232

比較対象:

http://a1.twimg.com/profile_images/571171388/logo-twitter_normal.png 赤:183 緑:212 青:212 類似度指数 56

赤:117 緑:028 青:028 と非類似度 530 のインデックス

赤:218 緑:221 青:221 と非類似度13 の指標が正しく一致しました。

赤:061 緑:063 青:063 と非類似度の指標 491

私がすでに得ているものよりも良い結果を出すことさえできないかもしれませんし、私はここで時間を無駄にしていますが、経験豊富なphpプログラマーがたくさんいるように見えるので、改善方法について正しい方向に私を向けることができると思います.これ。

iMagickGmagickCairo for phpなどの他の画像ライブラリを使用できますが、php 以外の言語の使用は避けたいと思います。

前もって感謝します。

4

4 に答える 4

4

あなたのアプローチは合理的だと思っていましたが、画像全体を 1x1 ピクセルのサイズに縮小するのは、おそらくやり過ぎです。

ただし、各画像を同じサイズに変換してから、各 16x16 (または使用する処理時間/電力に応じて 32x32、64x64 など) のセルの平均色を計算すると、何らかの種類を形成できるはずです。賢明な(っぽい)比較の。

于 2010-01-10T14:26:47.537 に答える
0

middaparka のように、すべての空間情報が失われるため、1 ピクセルのみの画像にダウンサンプリングしないことをお勧めします。16x16 (または 32x32 など) にダウンサンプリングすると、確かにより良い結果が得られます。

次に、色情報が重要かどうかにも依存します。私が理解していることから、実際にはそれなしで行うことができ、カラー画像(ルマなど)からグレーレベル画像を計算し、相互相関を計算できます。あなたが言ったように、(色情報を除いて)正確に一致する画像がいくつかある場合、これはかなり良い信頼性を与えるはずです.

于 2010-01-10T22:39:06.897 に答える
-1

middparka の方法を使用すると、各画像を一連の数値に変換し、レーベンシュタイン アルゴリズムを使用して最も近い一致を見つけることができます。

于 2010-01-10T15:16:52.640 に答える