结合Kalman滤波的时空上下文目标跟踪算法
2018-11-21张新堃
张新堃, 黄 山
(四川大学,成都 610065)
0 引言
目标跟踪是目前计算机视觉领域研究的一个热点,包括了诸如目标定位、智能交通、人工智能、人体跟踪等许多领域,也取得了不少的研究成果[1-2]。时空上下文(Spatio-Temporal Context,STC)[3]目标跟踪算法是一个建立在贝叶斯框架下快速简单且鲁棒性好的目标跟踪算法。
STC目标跟踪算法受到了生物视觉系统的关注焦点机制的启发,在目标跟踪中加入了对时空上下文信息的利用。由于STC目标跟踪算法是一个基于线性贝叶斯框架下的算法,不可避免地会有跟踪目标漂移问题。当目标受到强干扰,比如严重遮挡或者严重形变时局部上下文区域的像素强度和相对位置很大的改变,会导致计算得到的先验概率模型不准确,最后通过计算得到的目标坐标也会与目标实际位置有较大的偏差。文献[4-6]对STC目标跟踪算法进行了改进,有效提升了STC目标跟踪算法的精度,克服了容易漂移等缺点,有了更好的抗干扰性,但是也存在实时性不佳等问题。
针对跟踪过程中出现的严重遮挡和高速高机动等问题,结合Kalman滤波改进了STC目标跟踪算法,在目标快速移动和被遮挡的情况下,仍能有效、稳定地跟踪目标。
1 Kalman滤波算法简介
Kalman滤波算法[7-8]是一种对动态系统的状态序列进行线性最小方差估计的算法,可以通过状态方程和观测方程描述离散的动态系统,即
x(n)=Ax(n-1)+Bu(n)+w(n)
(1)
z(n)=Hx(n)+v(n)
(2)
式中:A是系统状态转移矩阵;H是系统观测矩阵;x(n)为系统状态向量;u(n)是输入向量;w(n)是估计噪声;v(n)是观测噪声。Kalman滤波算法中估计噪声w(n)和观测噪声v(n)必须是满足高斯分布的白噪声。
Kalman滤波的5个主要公式如下。
(3)
P(n|n-1)=AP(n-1|n-1)AT+Q
(4)
(5)
(6)
P(n|n)=[I-K(n)H(n)]P(n|n-1)
(7)
Kalman滤波原理简单模型如图1 所示。
图1 Kalman滤波原理简单模型Fig.1 Simple model of Kalman filter principle
2 结合Kalman滤波的STC目标跟踪算法
2.1 STC目标跟踪算法
STC目标跟踪算法[9]可以描述为计算一个估计目标位置x似然的置信图,置信图中最大值的坐标即为目标坐标。
m(x)=P(x|o) = ∑c(z)∈XcP(x,c(z)|o)=
∑c(z)∈XcP(x|c(z),o)P(c(z)|o)
(8)
式中:c(z)表示z点处的上下文特征即c(z)=(I(z),z),它包括了图像点的像素强度I(z)和坐标信息z;Xc是当前帧上下文特征集合即Xc={c(z)=(I(z),z)|z∈Ωc(x*)},其中,Ωc(x*)表示以x*为中心的局部上下文区域。
式(8)中条件概率函数P(x|c(z),o)被定义为
P(x|c(z),o)=hsc(x-z)
(9)
式中,hsc(x-z)对x和上下文区域坐标z之间的相对距离和相对方向进行编码,反映了目标中心坐标x与周围区域的空间关系。
式(8)中上下文先验概率模型P(c(z)|o)可以建模为
P(c(z)|o)=I(z)ωσ(z-x*)
(10)
式(8)中置信图m(x)定义为
(11)
式中:b是规范化常数;α是尺度参数;β是形状参数。
将式(9)、式(10)、式(11)代入式(8)中得到
m(x)=hsc(x)⊗(I(x)ωσ(x-x*))
(12)
式中,⊗表示卷积。为了加快计算速度,通过快速傅里叶变换(FFT)进行加速,变换后式(12)变为
(13)
然后使用此模型更新时空上下文模型,即
(14)
式中,ρ表示学习率。
式(14)等同于对目标模型进行了低通滤波处理。得到目标的时空上下文模型后,在新的一帧使用式(15)计算当前帧目标的置信图为
(15)
2.2 改进的STC目标跟踪算法
当目标受到强烈干扰,如严重遮挡、快速运动等情况时,上下文区域中像素的强度发生了剧烈变化或者目标超出上下文区域,此时通过STC目标跟踪算法计算得到的先验概率模型P(c(z)|o)不够准确,导致最终计算得到的目标坐标位置和实际目标坐标位置出现较大的偏差。因此引入Kalman滤波算法,对目标的运动趋势做出预测,以此校正STC目标跟踪算法的跟踪结果。
改进算法过程如下。
1) 初始化。
在初始帧中,使用鼠标手工选定目标区域,利用式(10)、式(11)计算目标的时空上下文区域置信图m(x)和先验概率模型P(c(z)|o);同时得到目标跟踪框的几何中心位置x(0),y(0),将其作为Kalman滤波算法的初始状态,将误差噪声协方差矩阵P设为0。
2) 跟踪目标。
算法流程如图2所示。
图2 结合Kalman滤波的STC目标跟踪算法Fig.2 STC algorithm combined with Kalman filter
同时,为加快算法运行速度,将STC目标跟踪算法目标上下文区域由原来的目标区域2倍缩小为1.8倍。
3 实验与结果分析
3.1 实验条件
跟踪结果如图3、图4所示。
图4 视频2跟踪结果Fig.4 Tracking results of Video 2
3.2 实验结果分析
使用矩形跟踪框的几何中心横纵坐标与目标实际位置中心横纵坐标的差值衡量跟踪的准确性。对视频1从第35帧到第110帧的跟踪结果以及视频2的第20帧到第90帧的跟踪结果进行分析。具体情况如图5、图6所示。
图5 视频1跟踪位置曲线图Fig.5 Tracking position curve of Video 1
图6 视频2跟踪位置曲线图Fig.6 Tracking position curve of Video 2
从图5和图6中可以看出,虽然缩小了时空上下文区域的大小,但是由于Kalman滤波的校正,改进算法在视频1和视频2的目标跟踪中跟踪精度高于STC目标跟踪算法。在视频1中,本文算法结果和目标之间平均偏差像素为(3.26,3.52),STC目标跟踪算法结果和目标之间平均偏差像素为(20.01,5.59)。在视频2中,本文算法结果和目标之间平均偏差像素为(1.73,3.92),STC目标跟踪算法结果和目标之间平均偏差像素为(17.92,20.55)。
算法对视频1和视频2进行目标跟踪耗时情况分别如图7、图8所示。
图7 视频1跟踪速度曲线图Fig.7 Tracking speed curve of Video 1
图8 视频2跟踪速度曲线图Fig.8 Tracking speed curve of Video 2
从图7和图8中可以看出,改进的STC目标跟踪算法由于缩小了上下文区域面积,运算速度较原始STC目标跟踪算法有了一定的提高,可以满足实时性要求。
4 结束语
本文在原本的STC目标跟踪算法中加入了Kalman滤波算法,使目标在被遮挡时可以使用Kalman滤波器对STC目标跟踪算法的输出进行校正,有效增加了算法的鲁棒性。本文算法的不足是目标跟踪框尺度不能变化,丢失目标后不能寻回目标,没有考虑多目标等。后续工作将针对这些不足做进一步改进。