OpenCVで画像一致検出のプログラムを組んでいます。
Cvmatchtemplateは動作していますが、そのパラメーター、
CV_TM_SQDIFFはSquared difference 輝度差の二乗和
CV_TM_CCORRはCross correlation 相互相関
CV_TM_CCOEFFはCorrelation coefficient 相関係数
でNORMEDはそれらの正規化したもの
と言う所までは判ったのですが、(分かったでは無い-笑-)それらの意味が良く分かりません、かろうじて理解出来るのは輝度差の二乗和のみです。
私としては各々の詳細を理解出来なくても、どの様な結果を導きたい時使うパラメーターかが判れば良いのですが、色々サイトを探しても、数式が書かれている所はありますが具体例が書かれている所が見つかりませんでした。
どなたか良いサイト、もしくは本をご存知無いでしょうか。
よろしくお願いいたします。
No.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協会)という本がオススメです。
ご回答ありがとうございました。
丁度私も下記のサイトを見つけ、今まで分からなかった式がやっと理解出来る様になり、各々どんな事をやっているのか考えて見ようと思った所です。
http://dixq.net/board/log/bbslog_76.html
実際の問題としてはマスターとターゲットの輝度差の問題がありますので、CV_TM_CCORR_NORMEDが良さそうですので、これから色々試験して処理時間も考慮してどのパラメーターを採用するか検討して見たいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 時間を語るなら、(複数の時間の正体)を知る必要が有る。 1 2023/02/16 22:14
- 物理学 英語表現についてどうもわからないので教えて貰えないでしょうか? 具体的には以下の文の中でreflec 1 2023/04/29 20:59
- 物理学 量子力学や相対性理論での1からの独学方法について 詳しい方回答をお願いします 現在、量子力学や相対性 6 2023/03/22 12:07
- 法学 労働紛争の口外禁止条項とはどこまでの制限がありますか? 2 2022/10/15 22:48
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
- ヘアケア・ヘアアレンジ・ヘアスタイル 自分に合った上手な美容師さんが見付けられません 3 2022/09/08 23:31
- 哲学 神の《二性性相》とは いったい何のことか? (つづき) 1 2022/07/17 06:02
- 物理学 特殊相対性理論を、完全否定に成功~ガンマの数式は、成立しない。 2 2023/03/08 19:30
- 英語 英語に詳しい方に質問です。 2 2022/06/21 15:33
- ハッキング・フィッシング詐欺 インターネットの怖さについて 8 2022/05/27 01:14
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで階乗を求めるプログラ...
-
式?文?節?
-
COBOLのIFの入れ子について
-
プログラミング言語ベーシック
-
小文字wと大文字Wの区別
-
エラーが起こる理由を教えてい...
-
ruby で C(コンビネーション...
-
ruby serverが起動出来なく困っ...
-
Linuxの「find」コマンドについて
-
Ruby と Ruby on Rails
-
バーコードのチェックデジット...
-
python 素数判定コード
-
ruby.exeとrubyw.exeに違いがあ..
-
Passengerがインストールできな...
-
rubyでバイナリファイルを直接...
-
ActiveScriptRubyについて
-
Windows上のRubyから、IMAP経由...
-
Windowsプログラミング、全部こ...
-
rubyのエラー out of float ra...
-
僕は高校生なんですがプログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで階乗を求めるプログラ...
-
VBとフィボナッチに明るい方、...
-
式?文?節?
-
COBOLのIFの入れ子について
-
OpenCV cvmatchtemplate
-
FORTRAN77の質問です。
-
GoTo文について
-
COBOL計算
-
アルゴリズム、C言語に関する...
-
アプレットで三次方程式1
-
プログラミングの問題です。
-
fortranのif文で・・・
-
二つの図形を画面上で同時に動...
-
反省文
-
苦しんで覚えるc言語について
-
Ruby / passenger のインストー...
-
システムエンジニアの適正について
-
小文字wと大文字Wの区別
-
初心者 パイソンプログラム
-
プログラミング講師はまだ需要...
おすすめ情報