OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 6885|回复: 2

关于opencv的cvMatchTemplate匹配原理

[复制链接]
发表于 2011-10-26 17:15:01 | 显示全部楼层 |阅读模式
详见[url:2m3x2m4a]http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=15213[/url:2m3x2m4a]。
内容如下:
核心的是使用卷积原理:
cvDFT( _dft_img, _dft_img, CV_DXT_FORWARD, isz.height );
cvGetSubRect( dft_templ, dst,
cvRect(0,(templ_cn>1?yofs:0),dftsize.width,dftsize.height) );

cvMulSpectrums( _dft_img, dst, _dft_img, CV_DXT_MUL_CONJ );
cvDFT( _dft_img, _dft_img, CV_DXT_INVERSE, csz.height );

步骤如下:
1.将模板图像填补到和待匹配图像一样大小,补充的部分填0.进行傅里叶变换,下面称作傅里叶模板。(模板原始图像放在左上角,对应后面取值矩阵起始点也是左上角。)
2.将待匹配图像进行傅里叶变换。下面称为傅里叶图像。
3.将傅里叶模板与傅里叶图像进行傅里叶乘法。之后进行反变换。
4.在上述变换结果取相关矩阵大小(起始点参照1。)即为结果(使用cvMatchTemplate方法选取为CV_TM_CCORR,此时即为结果。其他方法则在此基础上增加了其他操作。)
因为 有补零影响,所以使用cvMatchTemplate得到的位置可能有偏差,建议得到这个结果后,自己再写for循环在附近点进行匹配计算结果。
欢迎大家继续来讨论,找到正确描述它的原理的表述,然后加到中文文档里面,
可以避免想我学过冈萨雷斯的《数字图像处理》,但遇到相关计算还是傻傻的去写for循环实现匹配。
回复

使用道具 举报

发表于 2013-1-14 14:22:00 | 显示全部楼层

关于opencv的cvMatchTemplate匹配原理

你好,模板图像在扩充的时候,不是扩充跟源图像一样大,是扩充到一个合适的尺寸吧,另外,如果目标有旋转的话,怎么匹配呢?
回复 支持 反对

使用道具 举报

发表于 2013-8-26 10:59:18 | 显示全部楼层
哪位有cvMatchTemplate源码,分享一下啊,949185061@QQ.COM,多谢了啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-29 20:14 , Processed in 0.010361 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表