模板匹配matchTemplate

 

C++: void matchTemplate(InputArray  image,  InputArray  templ,   OutputArray  result,  int  method);

 

image:输入图像。必须为8位或者32位的浮点型。

templ:用于搜索的模板图像。必须小于输入图像并且是一样的数据类型。

result:匹配结果图像。必须是单通道32位浮点型,且大小是(W-w+1*H-h+1),其中WH分别为输入图像的宽和高,wh分别为模板图像的宽和高。

method:相似度衡量的方法。

1平方差匹配法,最好的匹配为0,值越大匹配越差;

method=CV_TM_SQDIFFSum of SquaredDifference

 

 

2归一化平方差匹配法,第一种方法的归一化形式;

method=CV_TM_SQDIFF_NORMED

 

3相关匹配法,采用乘法操作,数值越大表明匹配越好;

method=CV_TM_CCORRCross Correlation

 

4归一化相关匹配法,第三种方法的归一化形式;

method=CV_TM_CCORR_NORMED

 

5相关系数匹配法,最好的匹配为1-1表示最差的匹配;

method=CV_TM_CCOEFF

 

6归一化相关系数匹配法,第五种方法的归一化形式;

method=CV_TM_CCOEFF_NORMED 

 

注意:

  1. 前面方法(1)(2)为越小的值表示越匹配;方法(3)(4)(5)(6)值越大越匹配。
  2. 如果输入图像和模板图像都是彩色图像,则三个通道分别计算上述相似度,然后求平均值。
  3. 函数通过在输入图像image中滑动(从左到右,从上到下),寻找各个位置的区块(搜索窗口)与模板图像templ的相似度,并将结果保存在结果图像result中。该图像中的每一个点的亮度表示该处的输入图像与模板图像的匹配程度,然后可以通过某方法(一般使用函数minMaxLoc)定位result中的最大值或者最小值得到最佳匹配点,最后根据匹配点和模板图像的矩形框标出匹配区域

猜你喜欢

转载自blog.csdn.net/caomin1hao/article/details/81202401