1.OpenCV的模板匹配函数:
CV_EXPORTS_W void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method );
模板匹配的工作方式:
跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像image上滑动图像块,对实际的图像块和模板图像templ进行匹配。
假设我们有一张100x100的输入图像image,有一张10x10的模板图像templ,查找的过程是这样的:
(1)从输入图像image的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;
(2)用临时图像和模板图像templ进行对比,对比结果记为c,存储在结果图像result的(0,0)处,即result在(0,0)处的像素值;
(3)向右滑动切割图像块,重复(1)~(2)的步骤,并记录到结果图像result中;直到输入图像image的右下角。
可见,直方图反向投影对比的是直方图,而模板匹配对比的是图像的像素值;模板匹配比直方图反向投影速度要快一些,但是有人认为直方图反向投影的鲁棒性会更好。
模板匹配的匹配方式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 归一化相关系数匹配法
enum { TM_SQDIFF=0, TM_SQDIFF_NORMED=1, TM_CCORR=2, TM_CCORR_NORMED=3, TM_CCOEFF=4, TM_CCOEFF_NORMED=