李兴阳,赵天亮,李雅欣,桑飞飞,王晨宇,肖春宝
(河南科技大学 信息工程学院,河南 洛阳 471023)
计算机视觉技术在当前的科技领域中拥有着广泛的应用,其中目标跟踪技术是研究的重点之一。由于目标跟踪技术具有广泛的应用前景,在过去的几十年里,已经涌现出了许多优秀的目标跟踪算法,其中基于核相关滤波(KCF)的算法成为研究热点之一。KCF算法通过对模板和响应图像之间的相关运算来进行目标跟踪,具有实时性和高准确性的优点,已经成为目标跟踪领域的主流算法之一。
然而,在实际应用中,由于种种原因,如目标快速运动、光照变化、目标遮挡等,传统的KCF算法可能会出现跟踪失败或跟踪误差大等情况,这给目标跟踪技术的应用带来了困难。针对以上问题,本文在KCF算法的基础上,提出了一种针对目标被遮挡后导致目标丢失的解决方法,通过该帧的响应峰值判断目标是否异常,若目标连续异常数达到阈值则判定目标丢失,此时通过使用运动估计和模板匹配算法来重定位目标,重定位成功后则继续采用KCF算法进行跟踪。
KCF算法是一种经典的目标跟踪算法,采用离散傅里叶变换(DFT)和相关滤波的思想,通过计算目标和背景的相似度,实现目标的定位和跟踪。KCF算法首先通过使用高斯核函数将目标的特征表示为一个高维向量,然后通过计算训练样本和测试样本的核相关矩阵,得到训练样本的响应图。使用循环移位技术将测试样本响应图的峰值与目标位置对齐,即可得到目标的位置信息。最后,利用在线学习方法不断更新目标的特征向量,实现目标的连续跟踪。KCF算法具有计算速度快、实时性强和鲁棒性好等优点,在目标跟踪领域得到了广泛应用。由于该算法依赖于局部相似度和单目标模型,在复杂场景下仍然存在着一定的局限性,需要进行进一步改进。
当目标丢失后,传统KCF算法将继续使用上一帧的跟踪结果来预测下一帧中的目标位置,从而导致跟踪框位置发生漂移。由于KCF算法总是将待检测样本中响应值最大的位置作为目标,无论目标是否在采样窗口内,在待检测的样本中总有响应值最大的位置,此位置可能并非目标的真实位置。
采用文献[1]的思想,并加以改进,可以根据响应峰值的大小来判断目标是否丢失或将要丢失。令Pt表示当前帧的响应峰值,集合{Vi|i=1,2,…,n}表示从开始到当前帧为止所有响应峰值正常的帧的响应峰值的大小。
(1)
其中:v表示正常帧的响应峰值的平均值;σ表示标准差。
如果当前帧的响应峰值距离均值v超过了λσ(λ为异常检测因子)则判定当前帧中的目标跟踪异常。当待测样本中响应峰值出现异常,这并不能代表目标已经失去跟踪,可能只是目标部分被遮挡所导致,当目标再次出现时,仍然能够继续定位,所以此时继续采用KCF算法进行跟踪。当连续T(本文取值25)帧出现响应峰值异常时,说明此时目标已经跟踪失败,判定目标丢失,需要重新对目标进行定位。
当目标发生遮挡时,主要是因为目标发生横向移动所导致,纵向移动主要影响目标的尺度变化,故此时可以忽略目标的尺度变化[2]。当检测到峰值异常时,记录最近一次正常帧的目标模板,当超过帧峰值仍未恢复正常,则应该停止对目标模板的更新,同时将目标模板恢复至最近一次正常帧的目标模板,减少异常帧对目标模板的影响,同时开始重定位目标位置。
2.2.1 线性预测目标位置
当目标丢失后,由于摄像机的运动和目标的运动同时发生,目标的位置很难预测,也并没有很好的运动模型适合预测。由于目标的运动趋势在最近几帧中并不会有较大改变,再加上系统对实时性的要求,故采用线性预测[3]的方法来估计目标的新位置。
设在第t帧中目标响应峰值开始异常,目标框的中心位置(xt,yt),则在连续T帧后,即t+T帧开始对目标位置进行重定位。集合L={(xi,yi)|i=1,2,…,n}表示t帧前n帧中目标框的中心位置,则有:
(2)
然后,对预测位置进行模板匹配,根据响应峰值判断是否预测成功,如果预测成功则继续进行KCF算法,反之开始进行模板匹配算法,再次进行重定位。
2.2.2 模板匹配算法
采用归一化相关系数匹配算法,在响应峰值正常的图像中根据目标的位置,将目标截取出来并保存,作为模板匹配的模板图像使用。当目标丢失后再次出现时,通过归一化相关系数匹配算法,能够很容易在一帧中将目标定位出来。
(3)
其中,⊙表示两个矩阵进行点乘;T表示模板图像;I表示待匹配图像;T′,I′表示去均值后的矩阵;x,y代表当前搜索框在I矩阵中左上角元素的坐标;x′,y′ 代表T和搜索框框出来的I的矩阵的元素坐标。
计算出的相关系数被限制在了[-1, 1] 之间,1表示完全相同,-1表示两幅图像的亮度正好相反,0 表示两幅图像之间没有线性关系。通过寻找输出矩阵的最大值,得到一个像素点,以该像素点为矩形区域的左上角,绘制与模板图像同尺寸的矩形框,此矩形框就是通过模板匹配算法定位到的目标可能存在的位置。然后通过KCF算法对其进行判定,若得到的响应峰值不再异常,则判定目标重定位成功,反之失败。
首先,读入视频序列并选择跟踪目标,然后采用KCF算法进行跟踪,判定目标跟踪是否异常,当连续异常帧数大于帧时判定目标丢失,跟踪失败,此时开始目标重定位算法,优先通过模板匹配算法对目标可能出现的位置进行预测,然后根据响应峰值判断目标是否重定位成功,若成功则进入下一帧,若失败则通过线性预测,进行目标定位,再次通过目标框的响应峰值判断目标是否重定位成功,若失败则使用正常帧去检测下一帧中的目标。
图1 算法流程图
为了验证算法的跟踪性能,采用距离精度(DP),即中心位置误差低于某一阈值(本文取30)的帧数占视频总帧数的百分比。(xa,ya)表示预测目标中心位置,(xb,yb)表示真实的目标中心位置。
(4)
符合条件的帧数:中心位置误差<阈值
精度 = 符合条件的帧数/总帧数
由表1中的数据可知,本文算法在目标发生遮挡时跟踪效果比较好,KCF算法数据DP精度较小是因为算法在目标被遮挡时,没有进行有效的判定,导致后续目标一直处于丢失状态。本文通过线性预测和模板匹配两种算法对丢失目标进行重定位,能够有效提高KCF算法对丢失目标的再次跟踪的能力。
表1 DP精度对比
表2 运行速度对比
KCF算法的平均速度约为62帧/s,本文算法平均速度约为48帧/s,相比之下,本文算法在速度上有所下降,这是因为在判定目标响应峰值是否异常、目标的线性预测以及目标的模板匹配时耗费了一些时间,不过考虑到对目标跟踪准确度的提升,还是在可接受范围的。
图2 展示了KCF算法和改进算法对Pktest01序列数据的跟踪效果对比。传统KCF算法在目标被遮挡后再次回到视野之内时,KCF算法并不能够识别并跟踪目标,相比之下本文通过引入线性预测和模板匹配算法,增强了原算法对目标丢失后的处理能力。
图2 Pktest01数据跟踪效果对比
本文提出了一种改进的基于核相关滤波(KCF)的目标跟踪算法,通过引入线性预测和模板匹配技术对于丢失目标进行重新定位。实验结果表明,本文所提出的改进算法在跟踪准确性和鲁棒性方面都有显著提高,但由于融入了重定位算法,导致算法在追踪速度方面有所下降。下一步的研究方向主要是,在不影响跟踪效果的同时,提高算法的运行速度。