摘 要:提出了一种基于特征光流分割和卡尔曼滤波估计的鲁棒性的运动目标跟踪方法。该方法具有很多特点:首先在特征光流的计算中采用由粗到细的层级匹配算法,因而能够计算大的运动速度和具有更好的匹配精度;其次采用了有效的遮挡判决算法,该算法综合利用了先验的信息,对噪声的干扰不敏感;最后建立了线性卡尔曼滤波模型,当特征点被遮挡或丢失时,能够预测它们的位置,这使得跟踪更具有主动性。实验表明,该方法具有高精度、快速跟踪和很好的鲁棒性。
关键词:光流;卡尔曼滤波;运动目标;跟踪;遮挡;鲁棒性
引 言
基于图像序列的运动目标自动跟踪是图像处理、模式识别和精确制导领域的重要课题,在国防、工业和交通等领域有着广泛的应用前景。跟踪系统有两个基本运算,目标图像的分割和目标的追踪。但是当运动目标作大的机动、经历遮挡时,这些运算的稳定性、可靠性和计算效率将受到影响,而这些影响会改变系统的性能。因此,获得鲁棒性的跟踪算法是迫切需要解决的问题。
基于运动估计进行运动目标的分割与跟踪是一种新的技术途径[1~3]。基于特征点和全局光流场的算法是经常采用的运动估计技术[4~6]。特征光流是通过特征匹配来求得特征点处的流速,同全局光流场算法相比较,这种算法具有计算量小和快速灵活的特点。但是,由于得到的是稀疏的光流场,因而很难提取运动目标的精确形状。另一方面,建立好的特征匹配算法也是需要很好解决的问题。为此,本文提出了基于特征光流分割和卡尔曼滤波估计的运动目标跟踪方法。
1 基于特征光流的分割
1.1 特征点的提取
角点是能够表征有关目标信息的特征点。设灰值图像用f(x)表示,x=(x,y)为像素坐标,经过适当的坐标变换,可以把f(x)的二阶导数矩阵转化为对角阵
det(▽▽f)称为高斯曲率。角点是由高斯曲率描述的零交叉点,即在局域内求取高斯曲率的正、负极值,沿着正、负极值点对p和b的连线求使高斯曲率过零的点[7]。但是,这种求角点的方法效率低,而且在计算中容易出现伪角点,为此,本文作了两点改进。
首先是孤立角点区域以提高运算速度。角点几乎都分布在边缘上,且在边缘的“拐弯”处,除了“拐弯”处及其邻域,其它区域不可能出现角点候选点。
其次是消除虚假角点。从微几何学知,曲面上一点的主曲率是曲面在这点所有法曲率中的最大值和最小值,真正的角点具有这样的性质
这样,可以利用θp和θb之差的绝对值作为角检测器的一个约束条件,以消除边界上可能出现的虚假角点,由此得到特征点集s1={p(i),i=1,2,…,k}。
利用改进的d-n角检测器提取图像序列中第一帧图像的特征点,提取的结果将直接影响跟踪的效果,如果某些重要位置的角点没有被检测出来,那么描述的目标区域就有很大的变化。为减少这种影响,在第一帧中提取过量的角点,以确保重要的角点都被提取出来。
1.2 特征光流的计算
设图像序列中某特征点x从t=1时刻的图像f1(x)运动到t=2时刻的图像f2(x+δx),δx=(dx,dy)为特征点分别沿x轴和y轴的偏移量。最佳偏移量的计算可以通过最小化灰度的差值平方和得到
式中,f1,f2分别为f1(x),f2(x)的简写,-1为矩阵的逆。为获得δx的估计,可以通过对δx的初始化,由牛顿-拉富生迭代算法得到[8]
式中:上标(n)表示n次迭代;f(n)2表示f2(x+δx(n))。当目标的运动在相对较小的范围时,利用这种方法具有很高的匹配精度。但是当目标作大的运动时,在单一分辨率层上运用这种匹配算法获得匹配特征点对的鲁棒性将降低,这是因为选择小的匹配窗口,容易漏匹配,而选择大的匹配窗口,易产生误匹配,且匹配过程的搜索时间长。为此,本文设计了由粗到细的分层迭代匹配算法:
对大小为n×m的图像f1(x)和f2(x)建立高斯金字塔,最小金字塔层次由int(log2min(m,n))决定,int(·)为向下取整。按分辨率递减f1(x)和f2(x)被分解成多个图像层(i=1,2;0≤l≤l),然后,按如下步骤逐点完成特征光流的计算:
(1)令l=l,初始化δxt(0)l=0.0;
(2)在l1l,l2l上由式(9)计算δxt(n)l;
(3)判断,如果l=0,则结束,否则继续;
(4)根据映射算子p:δxt(n)l→δxt(0)l-1,计算高一分辨率层的偏移量的初值δxt(0)l-1;
(5)l=l-1,返回(2)。
映射算子p实现将低分辨率层的偏移量映射到上一较高分辨率的图像层,作为该层迭代运算的初值。映射算子的设计与高斯金字塔的建立有关,如果低