2011-07-21 7 views
0

私はプログラムでデフォルトで5つの画像を持っており、私はユーザがデスクトップから画像を選択できるようにします。プログラムは、5つの画像間のどの画像がユーザ画像に最も近い画像であるかを決定する。Javaで2つのイメージを比較するにはどうすればよいですか?

誰でも私を助け、アイデアの始まりに連れて行くことができますか?

+1

あなたの制約を少し良く説明する必要があります。画像の90度回転は「近い」ですか? – aioobe

+0

TinEyeの仕組みに関する記事があります。ただし、何千もの画像と比較していないため、いくつかのステップを変更できます。 http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html – MikeKusold

答えて

4

SIFT,SURFなどのような特徴抽出アルゴリズムを試してみることができます。抽出された特徴をデータベースと比較してください。正しい一致の数に基づいて、最適な画像を選択することができます。

一般的に、SIFTは、ラベルの画像や広告ボードのような2Dオブジェクトでうまく機能します。 SIFTを使用している場合は、2D平面での回転やスケールの回転は問題になりません。 SURFはSIFTの改善であると考えられていますが、私はそれに多くの経験がありません。

これらのアルゴリズムは少し重いと言われています。とにかく5枚の画像にマッチしているのであれば、それほど問題にはなりません(あるいは、画像のディスクリプタ(機能)を手作業で計算して保存するだけです)。実行時には、ユーザーの画像を比較してください)しかし、正方形や円のような基本的な形状の画像に一致させようとしているのであれば、四角形の検出や円の検出を使うと効率的なパフォーマンスが得られるかもしれません。

関連する問題