アプリ版:「スタンプのみでお礼する」機能のリリースについて

OpenCVで画像一致検出のプログラムを組んでいます。
Cvmatchtemplateは動作していますが、そのパラメーター、

CV_TM_SQDIFFはSquared difference 輝度差の二乗和
CV_TM_CCORRはCross correlation 相互相関
CV_TM_CCOEFFはCorrelation coefficient 相関係数
でNORMEDはそれらの正規化したもの

と言う所までは判ったのですが、(分かったでは無い-笑-)それらの意味が良く分かりません、かろうじて理解出来るのは輝度差の二乗和のみです。
私としては各々の詳細を理解出来なくても、どの様な結果を導きたい時使うパラメーターかが判れば良いのですが、色々サイトを探しても、数式が書かれている所はありますが具体例が書かれている所が見つかりませんでした。
どなたか良いサイト、もしくは本をご存知無いでしょうか。
よろしくお願いいたします。

A 回答 (1件)

具体例というのが、どこまで期待しているのか?わかりませんが、OpenCVの引数は画像処理用語的には以下のような表現をします。


CV_TM_SQDIFF→SSD(Sum of Squared Difference)
CV_TM_CCORR_NORMED→NCC(Normalized Cross-Correlation)
CV_TM_CCOEFF_NORMED→ZNCC(Zero-mean Normalized Cross-Correlation)

このNormalized Cross-Correlationは『正規化相互相関』なので詳しくはこれらのキーワードで検索してもらうと、詳細がわかると思います。

当然ですが、二乗和を用いた場合は結果が小さいほど似ている事となります。
逆に相関を用いた場合は結果が大きいほど似ている事になります。

また、『相関』というのは、ほぼベクトルの内積を計算している事と等しくなります。
CV_TM_CCORRの場合は内積そのものです。
CV_TM_CCORR_NORMEDの場合は内積の公式をcosθ=a・b/(|a||b|)とした場合と同じです。
cosθを計算しているので、最も似ている場合、θが0°(ズレが無い)となり最大相関の1となり、θが180°(真逆にズレている)の場合、相関値は-1となります。

一般的にCV_TM_CCOEFF_NORMED(正規化相互相関)が輝度値の変化に影響を受けずらく比較的、安定してパターンを検出しますが、逆に、全く関係なさそうな部分を誤検出する場合もあります。

本はディジタル画像処理(CGーARTS協会)という本がオススメです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

丁度私も下記のサイトを見つけ、今まで分からなかった式がやっと理解出来る様になり、各々どんな事をやっているのか考えて見ようと思った所です。
http://dixq.net/board/log/bbslog_76.html

実際の問題としてはマスターとターゲットの輝度差の問題がありますので、CV_TM_CCORR_NORMEDが良さそうですので、これから色々試験して処理時間も考慮してどのパラメーターを採用するか検討して見たいと思います。

ありがとうございました。

お礼日時:2011/01/11 22:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!