3

2つの画像を撮影して比較し、それらがどれほど類似しているかを確認するにはどうすればよいですか?

MD5を使用して2つの正確な画像を比較することについて話しているのではありません。私が比較している2つの画像は完全に異なり、場合によってはサイズも異なる可能性があります。

例としてポケモンカードを使用する:各カードのHD画像をスキャンします。ユーザーが自分の携帯電話でポケモンカードの写真を撮ることができるようにし、それをスキャンした画像と比較して、どのカードを撮ったのかを判断できるようにしたいです。

処理は電話で直接行う必要はありません。Webサービスへのオフロードはオプションですが、私の知識はプログラミング言語にいくらか制限されていることに注意してください(PHP / JAVA / Androidにかなり制限されています)。私が使用しているサーバーは私自身のUbuntuサーバーであるため、これが役立つ場合は、phpからexecコマンドにアクセスできます。

最初は、誰かが以前にこのようなことをしただろうと思いました(2つの画像を比較して)。(compareImages()を使用して)自分が試していることを実行すると主張している例を使用して、imageikでphpを使用してみましたが、まったく機能しませんでした。このようなことを行うためのドキュメントは(あるとしても)あまりないようです。そのため、私は行き詰まっています。私が探しているのは、正しい方向へのプッシュだけです。

私の2番目の考えは、OCRを使用してカードのタイトルだけを取得し、それをタイトルのデータベースと比較して、そのタイトルに関連付けられた画像を表示することでした。これまでのところ、最初にphpocrを使用してみましたが、理解するにはモノクロ画像が必要なため、まったく機能しませんでした。次に、サーバーのコンソールから直接tesseractを試しましたが、phpocrよりもはるかに優れていましたが、スキャンした画像の文字の80%以上が間違っているか間違っていたため、スマートフォンからの低品質の画像は実際に困っている。

Android用のOpenCVも試しましたが、どのサンプルも機能しませんでした。

誰かがこのようなことをしたか、少なくともイムが探していることを達成できる何かを使用したことがありますか?

4

2 に答える 2

1

2つの異なるタスクがあります-関心領域の特定(Haarカスケードで実行できます-顔検出と同じ)と
不変モーメント技術(Huモーメントなど)で実行できる識別された画像の認識-ソビエトタンクを数えるのに十分でした衛星画像であるため、ポケモンに適しています)。不変モーメントの優れた特性は、品質が低い場合の結果のソフトな劣化です。シンボルの確率のリストが表示されます。これは、80%がピカチュウで、30%が他の何かです。

ここでは、Androidで使用するための不変の瞬間に基づいたOCRライブラリを開発しています。

https://sourceforge.net/projects/javaocr/

(純粋なJavaと妥当な速度、そしてデモサブディレクトリにAndroidのサンプルがあります。これはjavaocrに基づくアプリで、白地に黒の電話番号を認識してダイヤルします:https ://play.google.com/store/apps/ details?id = de.pribluda.android.ocrcall&feature = search_result#?t = W251bGwsMSwyLDEsImRlLnByaWJsdWRhLmFuZHJvaWQub2NyY2FsbCJd

また、ユーザーがシンボルを適切に配置するように、いくつかの照準ヘルプを検討することもできます(したがって、最初のタスクは実際の知性を使用します)

于 2012-10-03T19:53:42.787 に答える
0

必要な類似性の比較の種類を決定する必要があります。幾何学的アルゴリズムがあります。エッジ検出を使用してから、両方の画像で検出されたエッジを一致させようとします。これらは、同じ形状の異なる色のオブジェクトを処理する場合におそらく役立ちます。そして、色の類似性にさらに基づいたアルゴリズムがあります。それらは、画像に含まれる色とそれらがどのように分布しているかを比較します。

具体的なアルゴリズムをお探しの場合は、おそらくハフ変換をご覧ください。

于 2012-10-03T19:44:07.900 に答える