Windows7
OpenCv2.2
Vc2008
OpenCvを使用してテンプレートマッチングを行っています。↓
http://opencv.jp/sample/matching.html
マッチング率を出したいのでminMaxLoc関数を使用して
&max_valを取得しています。
max_val → マッチングした位置での最大値(最大値1で完全一致)
この値がなんともよくわからないのですが、マッチングを行った場合、
入力画像にテンプレート画像が存在する場合、1に近い値が出るのですが。
入力画像にテンプレート画像が全く存在しない場合でも0.95あたりの高い数値がでてしまいます。
期待している数値はもっと低い数値なのですが、この辺の切り分けは難しいのでしょうか?
OpenCvのminMaxLoc関数に関して
Re: OpenCvのminMaxLoc関数に関して
人間の目には全く違うように見えてもアルゴリズムによっては高い数値が出ることは十分考えられますが、なり さんが書きました: 入力画像にテンプレート画像が全く存在しない場合でも0.95あたりの高い数値がでてしまいます。
期待している数値はもっと低い数値なのですが、この辺の切り分けは難しいのでしょうか?
これだけの情報では何とも言えませんね。
どのような画像の比較なのでしょうか?
-
なり
Re: OpenCvのminMaxLoc関数に関して
入力画像は絵とかではなく、リアル画像です。
テンプレート画像は何でもいいですが、例えばマウスなどとします。
このマウスがカメラに入っているときに判定をしているのですが、max_valがマウスが無い時でも高い数値がでます。(マウスがある場合はそれよりさらに高い数値でちゃんと空き缶の場所を認識する)
ということです。
なにもないのに変な場所を認識して、その場所の数値が0.95ぐらい出てしまうとmax_valでは比較をとるのがかなりシビアだなと思いました。
テンプレート画像は何でもいいですが、例えばマウスなどとします。
このマウスがカメラに入っているときに判定をしているのですが、max_valがマウスが無い時でも高い数値がでます。(マウスがある場合はそれよりさらに高い数値でちゃんと空き缶の場所を認識する)
ということです。
なにもないのに変な場所を認識して、その場所の数値が0.95ぐらい出てしまうとmax_valでは比較をとるのがかなりシビアだなと思いました。
-
なり
Re: OpenCvのminMaxLoc関数に関して
すいません、自己解決です。
一致検出時のパラメータをCV_TM_CCORR_NORMEDからCV_TM_CCOEFF_NORMEDに変更したら思い通りの結果を得ることができました。
一致検出時のパラメータをCV_TM_CCORR_NORMEDからCV_TM_CCOEFF_NORMEDに変更したら思い通りの結果を得ることができました。