当前位置:首页 期刊杂志

基于模板匹配和Kalman滤波器的目标跟踪

时间:2024-07-28

房广江,孔一荟

(中国电子科技集团公司 第二十八研究所,江苏 南京 210016)

0 引言

模板匹配是从一幅图像(目标图像)中寻找已知模式(模板)的一个过程,是计算机视觉研究的重要方法[1]。通过选择模板,在目标图像中移动模板,将模板图像与原图像比对,找到目标图像中与模板相匹配的区域[2]。在模板匹配过程中,如果模板是始终不变的,那么当序列图像中某一帧图像受较大噪声干扰时,极易出现跟踪点的漂移现象[3]。另外,从模板匹配的原理上讲,该算法在与模板匹配时,遍历了整幅图像,因而比较耗时,一般不能满足系统跟踪过程中的实时性和迅速性的要求[4]。针对上述传统模板匹配存在的局限性,本文在将模板匹配过程中引进了Kalman滤波器和模板更新来跟踪目标。在实验中,取得了良好的效果。

1 系统算法框架

运动目标的跟踪技术包括:目标的捕获(初始目标的确定)、目标的识别或提取、目标的位置测量、目标的跟踪[5]。首先通过鼠标在初始帧上选取目标作为初始模板,当捕获到新的图像序列时,根据Kalman滤波器预测目标大概范围,在较小的范围中根据模板匹配算法从图像中提取目标。如果此帧的目标与模板的匹配度高于阈值,则将此帧的目标作为下帧的目标来更新模板,如果此帧目标与模板匹配度低于阈值,模板不变。框架示意图如图1所示。

图1 系统框架示意图

2 模板匹配与更新

2.1 模板匹配

模板匹配是图像中寻找目标的方法之一。其原理较简单,就是在一幅图像中寻找和模板图像最相似的区域[6]。示意图如图2所示。

图2 模板匹配示意图

模板T的大小为w×h,被搜索图像I的大小为W×H,模板从源图像的左上角平移到右下角,模板覆盖源图像的区域称作子图I',子图I'左上角在原图上的坐标(x,y),子图是原图的一部分,有:

(1)

比较模板T和子图I'的相似性,完成模板匹配的过程。

模板和子图的相似性可以用两者之间的平方差R(x,y)表示:

(2)

将其归一化,得到模板匹配的相关系数:

(3)

(4)

模板与目标的匹配度与匹配相关系数成反比,即归一化的匹配相关系数Rnormed(x,y)越接近于0,匹配度越高。

2.2 模板更新

在目标实际跟踪过程中,目标的形状是不断变化的,传统的模板匹配会导致目标的跟踪漂移[7]。模板更新能够很好地解决由此引发的跟踪漂移[8]。模板更新原则是:如果第n-1帧的目标与模板匹配相关系数低于阈值,则将第n-1帧的目标作为第n帧的模板;如果第n-1帧的目标与模板匹配相关系数高于阈值,则不进行模板的更新。即:

(5)

式中:Tn(x,y)为第n帧的模板,Tn-1(x,y)为第n-1帧的模板,Rn-1(x,y)为第n-1帧中跟踪到的目标,(Rnormed(x,y)n-1)min为n-1帧的最小的匹配相关系数;ξ为设定的最小相关系数阈值。

3 Kalman滤波器

Kalman滤波器是一个线性的滤波器,算法主要包括状态方程和量测方程[9],分别如下:

状态方程:xk=F·xk-1+Wk-1

(6)

量测方程:Zk=Hk·xk+Vk

(7)

xk是k时刻的状态向量,F是一个n×n的状态变量增益矩阵。Zk是k时刻观测到的系统状态向量,Hk是m×n的量测矩阵。Wk-1和Vk表示过程和测量噪声,一般可假定这2个噪声为相互独立的均值为0的正态白色噪声:

(8)

由于系统确定,则F和Hk确定,Wk-1和Vk满足一定假设,则可以得到先验:

x'k=F·xk-1+Wk-1

(9)

用P'k表示误差协方差,此协方差在时刻k的先验估计由其在时刻k-1的值得到:

P'k=F·Pk-1·FT+Qk-1

(10)

上述等式构成了预估器预测部分的基础,由此可以得到Kalman系数:

(11)

于是可以计算xk和Pk最优的估计值:

xk=x'k+Kk(Zk-Hkx'k)

(12)

Pk=(1-Kk·Hk)P'k

(13)

由预测原理可知,在跟踪二维运动目标时,可以将目标的状态用2个位置变量x和y,以及2个速度变量vx和vy表示,这4个变量组成状态向量xk的元素,则:

(14)

4 算法实现过程

模板匹配更新能够很好地解决跟踪漂移的问题,适合于非线性运动目标的跟踪,Kalman滤波器可以准确地检测运动目标的位置和速度[10]。因此本文将两种算法结合,避免跟踪漂移并同时对目标的运动状态进行预测。改进的运动目标跟踪算法步骤如下:

1) 初始化目标的位置、速度,若运动目标速度未知设为0,并记录当前图像的时刻;进行目标模板初始化,获得目标模板。

2) 通过图像相邻两帧的差,获得差分图像。然后用矩形框和质心来确定运动目标区域。在目标区域构成的矩形框内提取目标特征点。

3) 利用Kalman滤波器计算预测目标的位置;再根据Kalman预测结果,确定当前目标帧中目标搜索区域,并修正Kalman滤波器。

4) 根据目标检测方法,在搜索区域中找到与目标模型最匹配的候选目标位置。根据候选目标与目标的相似度判断是否需要模板更新,使用模板更新解决目标姿态变化和遮挡对跟踪的影响。模板匹配成功后判断跟踪是否完成。如果完成则退出程序,否则跳到下一帧,直到跟踪结束为止。

5 实验结果与讨论

实验中分别用简单的模板匹配、更新模板的模板匹配以及带Kalman滤波的更新模板的模板匹配方法,对连续的200帧视频序列进行了跟踪(模板是通过鼠标选取的第0帧的图像),视频的分辨率是768×768像素。实验中主机配置为Intel(R)Core(TM) i3 CPU 530 @2.70GHz 2.93GHz,实验环境为VS2010,采用C#语言,利用计算机视觉库Emgu实现的。选取的第35帧、85帧、135帧、185帧的实验效果如图3-图5所示。

图3 简单模板匹配算法跟踪效果

图4 更新模板的模板匹配算法跟踪效果

图5 带Kalman滤波器的跟新模板匹配算法跟踪效果

不同算法的的目标识别率和识别速度是不一样的,对比数据如表1和表2所示。

表1 不同方法连续50帧图像中目标识别数与识别率

表2 不同方法处理一帧图像平均耗时 ms

由实验结果可知,进行简单的模板匹配时,随着目标的移动,识别率逐渐降低。在车辆目标转弯之后,识别率急剧下降。更新模板之后,200帧图像中未跟丢目标,有效地保证了目标的识别率。

在识别效率上,未采用Kalman滤波器时处理一帧图像需要的时间约为160 ms。采用Kalman滤波器之后缩小了搜索目标的范围,减小了计算量,平均每帧图片处理时间为14.130 8 ms,满足工程实时性的要求。

6 结语

本文首先针对简单的模板匹配的目标识别率随着目标的运动而下降的局限性,在模板匹配过程中实时有效地更新模板,提高目标的识别率。同时为了满足图像处理的实时性要求,结合Kalman滤波,有效地预测下一帧可能出现的区域,在较小的区域中进行模板匹配运算,减小计算量。实验表明,采用带Kalman预测的模板更新匹配算法能够快速准确地跟踪目标。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!