- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
實验四基于模板匹配的运动目标跟踪
智能系统平台专业实验报告
基于模板匹配的运动目标跟踪
一、实验目的
通过该实验,初步了解模板匹配算法,体会并学习如何用该算法实现视频跟踪。
二、算法概要
模板就是一幅已知的小图片。模板匹配就是在一幅大图像中搜寻目标。已知在该图中有要寻找的目标,且该目标与模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。
如图所示,设模板T叠放在搜索图S上平移,模板覆盖下的那块搜索图叫做子图,这块子图的左上角像素点在S图中的坐标,叫参考点,从图中可知和的取值范围为:, 其中,为被搜索图的大小,为模板的大小。
图1 被搜索图 图2 模板
现在可以比较与的内容,如两者一致,则和之差为零,所以我们可以用下式来衡量和的相似程度:
(1-1)
展开上式,则有:
(1-2)
上式等号右边第三项表示模板的总能量,是一个常数与坐标位置无关,第一项是模板覆盖下那块子图的能量,它随坐标位置的改变而缓慢改变,这两项都与模板匹配无关。第二项是子图像和模板的互相关,随而改变,和匹配时该项有最大值。
上式第二项的计算是通过将图像元素和模板图像元素联系起来获得的,将相关元素相乘后累加。现在我们完全可以将模板图像视为一个按行或者按列存储的向量,将被覆盖的图像区域视为另一个按照同样的方式存储的向量。这样,相似程度的计算就转换成了向量之间的点积运算。
(1-3)
显然,当和方向相同时,=1(为向量、的夹角),此时上式取得最大值,即当模板和子图匹配时,相关运算产生最大的响应。但是,上式最终的取值还与向量、自身的模值有关,比如说由于自身较大而同样能产生一个很高的响应。因此我们需要用向量模值的归一化解决这一问题。
改进的用于匹配的相关系数计算公式如下:
(1-4)
当模板和子图完全一样时,相关系数=1。在被搜索图中逐个像素点地移动模板图像,同时计算每处子图与模板的相关系数,当移过整幅图像S之后,找出的最大值,最大响应点坐标即为最佳匹配的左上角点。以该坐标为起始点,范围大小就以模板的大小为准就可以锁定目标。
三、算法步骤
(1)首先取得待跟踪的目标图像,该目标图像常较小,称该图像为模板,以代表;
(2)然后,定义匹配公式以备在移动模板时得到匹配度;
(3)把模板在待检测的图像(往往是视频中的一帧帧图像)中移动,在模板覆盖下那块搜索图叫做子图,每移动到一个位置就按定义的匹配公式计算匹配度,直至移动完整幅图像为止;
(4)按照匹配度的大小,选择匹配度最大(即最匹配)的位置,此位置即为最佳匹配位置,以此点为起始点,范围的大小就以模板的大小为准,即可锁定目标;
(5)针对视频中的每一帧图像执行步骤(3)~(4),这样就达到了跟踪的目的。
四、程序使用说明
例程给出了BMP_Display,内部函数实现了读图片和显示图片的功能。请同学们自行编写函数实现基于模板匹配的视频跟踪。
五、实验程序
#include cdefBF561.h
#include sys\exception.h
#include ccblkfn.h
#include ..\D_image_API\D_image_API.h
#include common.h
#include ..\sys_res.h
#include ..\sml2\sml2.h
#include dip_algorithm.h
#include math.h
//最大响应出现位置
int nMaxX=0;
int nMaxY=0;
#define TEMPLATE_END_ADDRESS ..\\end_flag.bmp
#define TEMPLATE_ADDRESS ..\\template.bmp
BMPIMAGE bmpimage; //原始图像
BMPIMAGE bmptemplate; //模板图像
void TemplateMatch(unsigned char *pTo,unsigned char *pTemplate)
{
//循环变量
int i,j,m,n;
int nGraySrc=0;
int nGrayTpl=0;
double dSumT; //模板元素的平方和
double dSumS; // 图像子区域元素的平方和
double dSumST; //图像子区域和模板的点积
double R; //响应值
doubl
文档评论(0)