基于模板匹配的运动目标跟踪
来源:互联网 发布:未来java的发展前景 编辑:程序博客网 时间:2024/05/21 21:49
一、实验目的
通过该实验,初步了解模板匹配算法,体会并学习如何用该算法实现视频跟踪。
二、算法概要
模板就是一幅已知的小图像。模板匹配就是在一幅大图像中搜寻目标。已知在该图中有要寻找的目标,且该目标与模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。 如图1 所示,设模板T 叠放在搜索图S 上平移,模板覆盖下的那块搜索图叫做子图, 这块子图的左上角像素点在S 图中的坐标,叫参考点,从图中可知i 和j 的取值范围为: 0 i, j N -M , 其中,N x N 为被搜索图的大小,M x M 为模板T 的大小(如图 2 所示)。
可以用向量余弦夹角来衡量T 和 的相似程度:
当模板和子图完全一样时,R(i, j) =1。在被搜索图中逐个像素点地移动模板图像T ,同时 计算每处子图与模板的R 值,当移过整幅图像S 之后,找出R 的最大值 , 最大响应点坐标即为最佳匹配的左上角点。以该坐标为起始点,范围大小就以模板的大小为准就可以锁定目标。
三、算法步骤
(1)首先取得待跟踪的目标图像,该目标图像常较小,称该图像为模板,以T 表示;
(2)定义匹配公式以备在移动模板时得到匹配度;
(3)把模板T 在待检测的图像(往往是视频中的一帧帧图像)中移动,在模板覆盖下那块搜索图叫做子图,每移动到一个位置就按定义的匹配公式计算匹配度,直至移动完整幅图像为止;
(4)按照匹配度的大小,选择匹配度最大(即最匹配)的位置,此位置即为最佳匹配位置,以此点为起始点,范围的大小就以模板的大小为准,即可锁定目标;
(5)针对视频中的每一帧图像执行步骤(3)~(4),这样就达到了跟踪的目的。
四、程序使用说明
void TemplateMatch(unsigned char *pTo,unsigned char *pTemplate)
{
int p,q,m,n;
float y=0,x1=0,x2=0,R[200][200],max=0,s=0,t=0;
for(p=0;p<bmpimage.infohead.biHeight-bmptemplate.infohead.biHeight;p++)
for(q=0;q<bmpimage.infohead.biWidth-bmptemplate.infohead.biWidth;q++)
{
y=0;x1=0;x2=0;
for(m=0;m<bmptemplate.infohead.biHeight;m++)
for(n=0;n<bmptemplate.infohead.biWidth;n++)
{
s=*(bmpimage.imgbuf+((m+p)*bmpimage.infohead.biWidth+(n+q)));
t=*(bmptemplate.imgbuf+(m*bmptemplate.infohead.biWidth+n));
y+=s*t;
x1+=s*s;
x2+=t*t;
}
R[p][q]=y/(sqrt(x1)*sqrt(x2));
}
for(p=0;p<bmpimage.infohead.biHeight-bmptemplate.infohead.biHeight;p++)
for(q=0;q<bmpimage.infohead.biWidth-bmptemplate.infohead.biWidth;q++)
{
if(R[p][q]>max)
{
max=R[p][q];
nMaxX=q;
nMaxY=p;
}
}
}
- 基于模板匹配的运动目标跟踪
- 同一窗口下基于KCF 目标跟踪和基于模板匹配的目标跟踪效果比较
- [opencv]模板匹配算法(单图像模板匹配和基于模板匹配的目标跟踪)
- [opencv]模板匹配算法(单图像模板匹配和基于模板匹配的目标跟踪)
- 目标跟踪:模板匹配
- 最简单的目标跟踪-模板匹配跟踪
- 一种基于直方图模式的运动目标实时跟踪算法
- 一种基于轮廓的运动目标检测与跟踪算法
- 一种基于边缘的运动目标检测与跟踪算法
- 基于opencv的L-K光流法跟踪运动目标
- OpenCV目标跟踪(四)-运动模板
- 视频运动目标跟踪,基于opencv , vc++
- 运动目标检测--基于直方图匹配的鬼影消除
- 运动目标检测--基于直方图匹配的鬼影消除
- 基于特征点匹配的自适应目标跟踪算法
- 基于OpenCV的运动目标检测跟踪系统在PC上的软件设计流程
- 运动目标跟踪
- 运动目标跟踪简介
- 各大名企笔试及面经大全(程序员必读)
- Oracle 树操作(select…start with…connect by…prior)
- AudioClip类播放音乐
- 目标文件和库文件的链接顺序
- iOS事件拦截处理
- 基于模板匹配的运动目标跟踪
- Java的String简单解读
- 有关死锁的讨论
- VxWork介绍及编程
- nginx 报错 upstream timed out (110: Connection timed out)解决方案
- 猴子选王-链表水题
- zoj 3795 Grouping 强连通缩点+拓扑排序最长链
- oracle 数据库支持生命周期表
- Android操作系统11种传感器[转]