CCD测量系统中基于自适应相关算法的动态目标跟踪
摘要:相关匹配是目标跟踪和模式识别的一种重要方法。介绍了CCD(电荷耦合器件)误差测量系统光学原理;针对该测量系统实际情况,提出了用相关算法实现目标位置的测量;使用自适应相关匹配的方法,实现了对连续视频图像中动态目标的跟踪;给出了实验结果,并对算法提出了改进的意见。
关键词:CCD测量 图像处理 自适应相关 目标跟踪
基于相关算法的目标跟踪是利用从以前图像中获得的参考模板,在当前图像中寻找最相似的区域来估计当前目标位置的方法。它对于背景复杂、会有杂波噪声的情况具有良好的效果。CCD(电荷耦合器件)测量技术是近年来发展迅速的一种非接触式测量技术。CCD摄像器件在分辨率、动态范围、灵敏度、实时传输方面的优越性是其它器件无法比拟的,在动态飞行目标跟踪测量中发挥着重要的作用。作者在CCD测量系统中使用相关匹配的方法,实现了对连续视频图像中动态目标的跟踪。
1 CCD误差测量系统原理
在同一观测位置布置两台CCD,其视轴平行。其中CCD1用于瞄准,CCD2用于跟踪飞行目标。CCD1瞄准线和视轴重合,获得瞄准线和靶标之间的偏差角α。CCD2获得飞行目标和靶标之间的偏差角β。系统要求得到瞄准线和飞行目标之间的水平和垂直方向上的偏差角ψx、ψy。因此规定CCD的视场中均以靶标十字中心为原点,向左和向上为正方向,将α、β分别投影到坐标轴上得到水平和垂直方向上的偏差角αx、αy、βx、βy。两台CCD的视频轴平行,视轴间距远远小于CCD到目标的距离,因此可以认为两CCD的视轴重合。所以有:
ψx=αx-βx,ψy=αy-βy (1)
图1是系统的原理图,图中靶板上的黑十字是靶标,javascript:window.open(this.src);" style="cursor:pointer;"/>虚线十字为瞄准分划板在靶板上的投影(由于实际靶板上没有,所以用虚线表示)。
2 图像处理算法的选择
从系统的原理分析可知,要完成偏差角度的测量首先应当从图像中提取出各个目标在图像中的位置,再根据CCD当量(每像元对应的弧度数)算出水平和垂直方向的偏差角。从CCD1的图像中的最靶标十字和瞄准分划板的位置,从CCD2的图像中提取靶标十字和飞行目标的位置。
由于飞行目标几乎贴地飞行,CCD视场中有复杂的地面背景。而且靶标是不发光的暗目标,与背景灰度反差不大,很难将目标从背景中分离出来,因此只有采用相关处理技术来进行目标识别,才能实现瞄准误差和飞行轨迹的测量。相关算法非常适合在复杂背景下识别和跟踪运行目标。由于系统图像处理是事后处理,处理连续的大量视频图像,实时性要求不高,而对处理精度和自动处理程度要求较高,因此采用该算法。
本系统中相关处理将预先选定的目标或目标特定位置作为匹配样板,求取模板和输入图像间的相关函数,找出相关函数的峰值及所在位置,求判断输入图像是否包括目标图像及目标位置。
3 相关算法的原理及改进
在机器识别事务的过程中,常把不同传感器或同一传感器在不同时间、成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式在另一幅图像中寻找相应的模式,这就叫做匹配。如果被搜索图中有待寻的目标,且同模板有一样的尺寸和方向,在图像匹配中使用相关匹配,就是通过相关函数找到它及其在被搜索图中的位置。
3.1 相关算法
基于相关的目标跟踪寻找最佳匹配点,需要一个从以前图像中得以的模板。在图2中设模板T为一个M×M的参考图像,搜索图S为一个N×N图像(M<N),T在S上平移,模板下覆盖的那块搜索图叫做子图Si,j,(i,j)为子图左上角点在S中的坐标,叫参考点。比较T和Si,j的内容。若两者一致,则它们的差为0。用误差的平方和作为它们相似程度的测度:
javascript:window.open(this.src);" style="cursor:pointer;"/>
展开公式(2),则有:
javascript:window.open(this.src);" style="cursor:pointer;"/>
公式(3)右边的第三项表示模板的总能量,是一个常数。第一项是模板覆盖下的子图能量,随(i,j)位置而缓慢改变。第二项是子图和模板的互相关,随(i,j)改变。当模板和子图匹配时刻值最大。因此可以用以下相关函数做相似性测度:
javascript:window.open(this.src);" style="cursor:pointer;"/>
根据柯西-施瓦兹不等式可知公式(4)中0<R(i,j)≤1,并且仅在Si,j(i,j)/[T(m,n)]为常数时,R(i,j)取最大值(等于1)。相关法求匹配计算量很大,如图2所示的情况,要在(N-M+1)×(N-M+1)个参考位置上做相关计算,每次相关计算要做3M2次加法、3M2次乘法、1次除法、2次开方运算。由于乘除法运算量最大,整个算法的时间复杂度大约为o((N-M+1) ×2×(3M2+1))。整个运算过程中,除了匹配点一点以外,都是在非匹配点上做无用功。但是,模板匹配算法准确度较高,适合对大量的连续视频图像做自动处理。
3.2 自适应的相关匹配
在相关匹配过程中目标的大小、形状等或者连续帧中的原点位置发生变化,都会引起图像相关偏离。一旦模板不能和目标严格地匹配,那么最佳匹配点就不是目标的中心。这会给相关算法造成误差。虽然这个误差是随机的,但是它会随着相关处理逐帧积累。如果积累了足够的帧数,模板会完全偏离目标。增大模板也会引入误差。这是因为,当模板大于目标时,模板中将有部分背景信息。每帧中背景的变化,便引入了误差。为了消除误差,必须尽可能地减少模板中的背景信息。
为了解决以上问题,引入了自适应的相关算法。首先在图像的灰度直方图中寻找一个阈值,使大多数的像素,特别是背景像素都在阈值之下。在图像中定出模板的位置,寻找一个区域使其边界的像素灰度从阈值之上变为阈值之下,作为目标的边界,这样,目标的位置是目标区域中的一个点,目标被一个矩形窗口框住,可以认为矩形的中心是目标的中心。这样,系统补偿了逐帧匹配引起的偏离误差,减小了误差的积累。自适应的窗口减小了引入过多背景元素而在相关过程中造成的影响。
3.3 减少运算量
在CCD误差测量系统中,即使是事后处理,javascript:window.open(this.src);" style="cursor:pointer;"/>如果对每一帧图像进行全图搜索,其运算量仍然是巨大的。从前面的分析可知,运算量同搜索图和模板的大小均有关系。在本系统中,模板的大小基本是固定的,在这种情况下,减小搜索力瓣大小就成为了如何减少运算量的关键。经过对系统实际的图像分析,发现连续的每一帧中同一目标的位置改变缓慢。对算法进行改进,对于连续视频图像的第一帧做全图搜索,找出匹配点;对于后续各帖,在前一帧图像目标位置的基础上进行模板匹配,将当前帧搜索图定义为前一帧目标位置周围一个边长为N的正方形区域(目标位置不一定正方形的中心),在此较小的搜索图中进行相关匹配。同时设定一个阈值R,如果相关系数量大值R(i,j)MAX<R,那么认为在该搜索图中没有找到目标,则进行整帧图像的搜索,否则接受匹配点为目标位置。
CCD误差测量系统跟踪动态目标,在对连续视频图像处理时,搜索图的大小应和运动速度有关。如果图太小,有可能使目标不在搜索图内,而必须进行全图的匹配,如果图较大,又会增加运算的开销。可以增加运动趋势的估计,使搜索图向运动趋势的方向平移。对于当前帧搜索图区域的确定可以根据前两帧位置间的关系来确定,求前两帧位置水平和垂直坐标的差Δx和Δy来决定偏移的方向。在有效的测量阶段,目标的运动基本是匀速的运行,在水平方向和垂直方向的速度变化不大。因此,搜索图的平移量可以根据Δx、Δy来确定。在当前帧中以前一帧的目标位置为新搜索图的中心,在各方向分别平移Δx、Δy个像素,得到当前的搜索图。
4 软件实现和处理结果
由于软件和系统硬件的关系紧密,javascript:window.open(this.src);" style="cursor:pointer;"/>数据处理量大,对系统的可靠性要求高,因此采用Visual C++编程实现。实验中图像为768×576的256级灰度图,模板的大小为40×40,搜索图的大小为80×80。图3是实际测试时得到的图像匹配后的搜索图。图中黑白相间的方框是匹配得到的目标,图中依次为模板、第4、46、74帧匹配的结果。黑白相间的方框十字中心是目标中心。
对匹配的结果同图像中目标的实际位置进行比较得出:在连续的140帧图像中,85%的结果和实际目标位置误差在10个像素以内,只有两次的误差大于20个像素。这是由于图像质量误差,几乎无法检测到目标所致。没有发生模板完全偏离目标的情况。
经过实验证明,系统软件运行可靠、效率高,跟踪算法的准确高,能在复杂背景下实现对目标的准确匹配。但是模板匹配算法运算量惊人,在应用中选择的模板通常为40×40像素,搜索图为80×80像素,连续处理1000帧图像,要进行8.07×10 9次乘除法运算。因此对于模板匹配算法有进一步改进的必要,可以引入SSDA(序贯相似性检测算法)来提高算法的效率;对于背景比较简单,信噪比高的图像可以先二值化,再通过异或运算来进行匹配。这样没有了复杂的乘除运算,代之以异或和加法运算,可以进一步提高效率。