cv::matchTemplate()模板匹配算法


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

image:  搜索对象图像 It must be 8-bit or 32-bit floating-point.

templ:模板图像,小于image,并且和image有相同的数据类型

result:比较结果 必须是单通单32位浮点数

method:比较算法总共有六种如下所示:




CV_TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。


    CV_TM_CCORR 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。


    CV_TM_CCOEFF 相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。


    CV_TM_SQDIFF_NORMED 归一化平方差匹配法


    CV_TM_CCORR_NORMED 归一化相关匹配法


    CV_TM_CCOEFF_NORMED 归一化相关系数匹配法



该算法地工作方式是:

模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。
    假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的:
  (1)从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;
  (2)用临时图像和模板图像进行对比,对比结果记为c;
  (3)对比结果c,就是结果图像(0,0)处的像素值;
  (4)切割输入图像从(0,1)至(10,11)的临时图像,对比,并记录到结果图像;
  (5)重复(1)~(4)步直到输入图像的右下角。




先验知识:先于经验的知识,它不依赖感觉或其他类型的经验。

级联分类器

Haar特征:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况。

例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述特定走向(水平、垂直、对角)的结构。