opencv学习笔记(三十二)模板匹配

本文介绍了OpenCV中的模板匹配方法,通过对比输入图像和模板图像的像素值来寻找匹配区域。文章讨论了模板匹配的工作原理,与直方图反向投影的差异,以及cvMatchTemplate函数的使用,包括各种匹配方法的解释。最后,提到了cvMinMaxLoc函数在确定匹配区域位置中的作用,并提供了一个程序实例来展示模板匹配的应用。
摘要由CSDN通过智能技术生成

模板匹配的工作方式
模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。
假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的:
(1)从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;
(2)用临时图像和模板图像进行对比,对比结果记为c;
(3)对比结果c,就是结果图像(0,0)处的像素值;
(4)切割输入图像从(0,1)至(10,11)的临时图像,对比,并记录到结果图像;
(5)重复(1)~(4)步直到输入图像的右下角。
大家可以看到,直方图反向投影对比的是直方图,而模板匹配对比的是图像的像素值;模板匹配比直方图反向投影速度要快一些,但是我个人认为直方图反向投影的鲁棒性会更好。
参考的是:
http://www.cnblogs.com/xrwang/archive/2010/02/05/MatchTemplate.html

cvMatchTemplate()函数
http://www.lxway.com/914114412.htm
定义:
void cvMatchTemplate(
const CvArr* image,
const CvArr* templ,
CvArr* result, int method
);
参数:
image:欲搜索的图像。它应该是单通道、8-比特或32-比特 浮点数图像
templ :搜索模板,不能大于输入图像,且与输入图像具有一样的数据类型
result :比较结果的映射图像。单通道、32-比特浮点数.。如果图像是 W×H 而 templ 是 w×h ,则 result 一定是 (W-w+1)×(H-h+1)。
所以在下面的程序中,才会有
int iwidth = src->width - temp1->width + 1;
int iheight = src->height - temp1->height + 1;
method 指定匹配方法:
在OpenCv和EmguCv中支持以下6种对比方式:
CV_TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值