cv::matchTemplateの計算方法について

opencvのテンプレートマッチング [matchTemplate] を使っていて、

そういえば手法について詳しく知らないなと思ったので調べてみました。

手法には、以下の6つがあります。

  • CV_TM_SQDIFF
  • CV_TM_SQDIFF_NORMED
  • CV_TM_CCORR
  • CV_TM_CCORR_NORMED
  • CV_TM_CCOEFF
  • CV_TM_CCOEFF_NORMED

計算式は、opencvリファレンスに掲載されています。

計算式の意味は、こちらを参考にすればわかるかと思います。

 

CV_TM_SQDIFFは、輝度値の差の2乗の合計を求めます。

なので、値が小さいほど類似しているということになります。

CV_TM_CCORRは、輝度値の相関を求めています。

なので、値が大きいほど類似しているということになります。

CV_TM_CCOEFFは、輝度値の平均を引いてから相関を求めています。

これにより、テンプレート画像と探索画像の明るさに左右されにくくなります。

相関を求めているので、こちらも値が大きいほど類似しているということになります。