なんか記憶がおぼろげでこんがらがってきたので備忘録。 現在確認中
NORMEDというのが明るさを正規化している。テンプレートと同じものを計算すると1/1になるため結果は1。全く逆のパターンが入ると1/-1となるので-1になる。
画像は適当に書いたテンプレート画像を使用し似たような物が複数ある画像を処理した結果。(1600*1200 BYTE1プレーン)
スケーリングはBYTEに合わせてあるので単純にコントラストを信用してはいけない。
式が多くなると速度が遅くなりそうだが、結局中でDFTとかしてるので処理時間はそれほど変わらない。
どのパターンを使うか何をしたいかにより変わってくるが、今回は形状と色合いを両方みたいので相関係数を使うつもりだったが安定しない。
正規化相関係数を使うと非常に安定するんだが、明るさが違うものに対しては反応しない?
結果的にはいいんだが、釈然としないのでそのうち確認しなければ・・・
各処理とも速度はいいのだが、その後の最大検出点を計測するminMaxLocが非常に遅いのが難点(1スキャン1msec強)。

method=CV_TM_SQDIFF 差分相関:SSD(Sum of Squared Difference) 115msec

R(x,y)= \sum _{x',y'} (T(x',y')-I(x+x',y+y'))^2
テンプレートと対象画像の差を積算するだけ。
類似が高いと差分が小さくなり結果が大きくる。類似が低いと差分が大きくなり結果が小さくなる。
テンプレートのサイズ分結果が大きくなる可能性がありこれはスケーリングしにくいな・・・
下図は最大値をBYTEでスケーリングして階調を反転させたもの。
CV_TM_SQDIFF

method=CV_TM_SQDIFF_NORMED 正規化差分相関:SAD(Sum of Absolute Difference) 137msec
R(x,y)= \frac{\sum_{x',y'} (T(x',y')-I(x+x',y+y'))^2}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}

差分相関を明るさで正規化したもの
下図は-1.0~1.0をBYTEにスケーリングし階調を反転させたもの。
CV_TM_SQDIFF_NORMED

method=CV_TM_CCORR 相互相関:(Cross-Correlation) 95msec

R(x,y)= \sum _{x',y'} (T(x',y')  \cdot I(x+x',y+y'))

下図は最大値をBYTEでスケーリングしたもの。
CV_TM_CCORR

method=CV_TM_CCORR_NORMED 正規化相互相関:NCC(Normalized Cross-Correction) 126msec
R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I'(x+x',y+y'))}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}

相互相関を明るさで正規化したもの
結果 -1.0~1.0 全く同じパターンが1.0で全く逆のパターンが-1.0。明るさを正規化しているのでパターンさえ同じであれば階調差は結果に全く影響されない。
下図は-1.0~1.0をBYTEにスケーリングしたもの。
CV_TM_CCORR_NORMED
この画像がクリティカルなのはテンプレートが悪い。本当はもっとコントラストが際立つ。

method=CV_TM_CCOEFF 相関係数:(Correlation-Coefficient) 106msec

R(x,y)= \sum _{x',y'} (T'(x',y')  \cdot I(x+x',y+y'))
下図は最大値をBYTEでスケーリングしたもの。
CV_TM_CCOEFF

method=CV_TM_CCOEFF_NORMED 正規化相関係数:ZNCC(Zero-mean Normalized Cross-Correlation) 135msec

R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }
結果 -1.0~1.0 全く同じパターンが1.0で全く逆のパターンが-1.0。明るさを正規化しているのでパターンさえ同じであれば階調差は結果に全く影響されない。
下図は-1.0~1.0をBYTEにスケーリングしたもの。

CV_TM_CCOEFF_NORMED