• ベストアンサー

Javaでの画像比較方法

複数の画像(画面のキャプチャを想定)内に、比較画像が何度含まれるかをカウントしたいです。 (イメージとしては、UWSCというツールの画像認識を画像2枚で行いたいといった感じです) 以前作ったテンプレートマッチングで試したところ、画像1枚(1920×1080)に3分ほどかかってしまいます。 何かいいライブラリ・アルゴリズムがあれば、教えて頂きたく。 また、出来たらライブラリの使い方を簡単にでかまいませんので教えて頂けたら幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KSOH
  • ベストアンサー率93% (29/31)
回答No.1

例をみると特定の状態(選択状態)のコントロールがいくつあるかを画像から調べるといった用途に見えます。 表示モードにもよるかも知れませんがピクセルの単純一致で間に合ったりしませんか? 単純一致でよいならテンプレートマッチングで対象画像のある領域とテンプレートを比較する際に、対応するピクセルの不一致を検出した際に直ちに次に画像位置の計算に移れるので単純に実装しても非常に高速に判定できる気がします。そうではなくある程度の誤差を許容する場合でも例えばテンプレートと比較画像のピクセルの差を無条件に累積するのではなく、ピクセル値同志の差がある一定以上になった場合に「一致しない」と見切って次の位置の計算に移るといった戦略で高速化できる気がします。 もうひとつテンプレート画像に特徴があるならその特徴を生かす検索が考えられると思います。例のようなコントロール画像であれば大部分が背景色なので、テンプレートから背景色とは異なる特徴的なピクセルを最初に探しておき、比較画像の中からそのピクセル値に近いピクセルをサーチしつつ見つかった位置でのみテンプレートとの比較を行うという方法が考えられると思います。

moredeep
質問者

お礼

迅速な回答、ありがとうございました。 ご提示の通りに動作するメソッドを追加したところ、1秒以内でレスポンスがありました。 テンプレートマッチングは大分前に作ってライブラリにしていたので、中身をすっかり忘れていました。。。

関連するQ&A