运动目标跟踪是视频监控系统中不可缺少的环节。在特定的场景中,有一些经典的算法可以实现比较好的目标跟踪效果。本文介绍了一般的目标跟踪算法,对几个常用的算法进行对比,并详细介绍了粒子滤波算法和基于轮廓的目标跟踪算法。最后简单介绍了目标遮挡的处理、多摄像头目标跟踪和摄像头运动下的目标跟踪。
一般将目标跟踪分为两个部分:特征提取、目标跟踪算法。其中提取的目标特征大致可以分为以下几种:
1) 以目标区域的颜色直方图作为特征,颜色特征具有旋转不变性,且不受目标物大小和形状的变化影响,在颜色空间中分布大致相同。
2) 目标的轮廓特征,算法速度较快,并且在目标有小部分遮挡的情况下同样有较好的效果。
3) 目标的纹理特征,纹理特征较轮廓特征跟踪效果会有所改善。
目标跟踪的算法大致可以分为以下四种:
1) 均值漂移算法,即meanshift算法,此方法可以通过较少的迭代次数快速找到与目标最相似的位置,效果也挺好的。但是其不能解决目标的遮挡问题并且不能适应运动目标的的形状和大小变化等。对其改进的算法有camshift算法,此方法可以适应运动目标的大小形状的改变,具有较好的跟踪效果,但当背景色和目标颜色接近时,容易使目标的区域变大,最终有可能导致目标跟踪丢失。
2) 基于Kalman滤波的目标跟踪,该方法是认为物体的运动模型服从高斯模型,来对目标的运动状态进行预测,然后通过与观察模型进行对比,根据误差来更新运动目标的状态,该算法的精度不是特高。
3) 基于粒子滤波的目标跟踪,每次通过当前的跟踪结果重采样粒子的分布,然后根据粒子的分布对粒子进行扩散,再通过扩散的结果来重新观察目标的状态,最后归一化更新目标的状态。此算法的特点是跟踪速度特别快,而且能解决目标的部分遮挡问题,在实际工程应用过程中越来越多的被使用。
4) 基于对运动目标建模的方法。该方法需要提前通过先验知识知道所跟踪的目标对象是什么,比如车辆、行人、人脸等。通过对要跟踪的目标进行建模,然后再利用该模型来进行实际的跟踪。该方法必须提前知道要跟踪的目标对象是什么,然后再去跟踪指定的目标,这是它的局限性,因而其推广性相对比较差。
粒子滤波实现运动目标跟踪分为四个步骤:1)初始化提取运动目标特征;2)特征搜索阶段;3)决策阶段;4)粒子重采样。这后面三个过程的依次循环实现的对运动目标的跟踪。
1)提取运动目标特征
这个阶段需要通过人机交互选定待跟踪的目标,通过计算跟踪目标的特征,如目标的颜色特征,计算该区域颜色空间的直方图,以此作为描述目标的特征。
2)特征搜索阶段
初始化提取了目标的特征后,就可以去在目标的周围撒粒子搜索目标对象。撒粒子的方法有很多,例如:a)均匀分布的放:即在整个视频画面中均匀的撒粒子。b)在目标的附近以高斯分布来撒粒子,即靠近目标的地方多撒些,离目标较远的地方少放些。每个粒子按照初始化时候得到的目标特征计算出它所处的位置的颜色特征,并计算该直方图向量与目标的直方图向量的相似性程度。然后对每个粒子与目标计算出的相似度做归一化,使得所有粒子的相似度加起来和等于1。
3)决策阶段
根据每个粒子与目标的相似程度做加权平均。设第i个粒子的坐标是,它和目标的相似度是,则目标的最可能的位置为:,,n为粒子的个数。
4)粒子重采样
粒子重采样就是根据相似度的大小重新分配粒子的个数,即在相似度最高的粒子出放更多的粒子,在相似度低的粒子那少放粒子。粒子滤波算法的核心思想就是粒子的随机采样和粒子的重要性重采样。因为不知道目标在那个位置,就随机的进行撒粒子。撒完粒子后,根据描述目标的特征相似度来计算每个粒子的相似度,然后在相似度高的地方多撒些粒子,相似度低的地方少撒粒子,这就是粒子滤波的思想。
形状复杂的目标是很难用简单的几何形状来描述的。基于轮廓的目标跟踪方法提供了更准确的形状描述。这种方法的主要思想是利用前一帧建立的目标模型找到当前帧的目标区域。模型可以是目标区域的颜色直方图、边缘或轮廓。基于轮廓的目标跟踪方法大体上可以分为形状匹配、轮廓跟踪。前者搜索目标在当前帧特征,后者通过状态空间模型或直接最小化能量函数推导初始轮廓在当前帧的位置。
这种方法和基于模板的目标跟踪方法相似,基本思想都是在当前帧中搜索目标的轮廓和目标的相关模型。另一种方法是在连续帧中寻找关联轮廓,使用目标的外观特征,建立轮廓关联,或者称为轮廓匹配,和点匹配方法类似。
首先,由背景减除发来进行轮廓检测;再次,提取轮廓后,计算目标的模型和每个轮廓之间距离来实现匹配;目标的模型可以是密度函数(颜色特征或边缘直方图)、目标边缘、轮廓边界或这些信息的组合。
从上一帧的轮廓位置预测出当前帧的轮廓。当前帧和上一帧的目标轮廓有重叠部分,大体上可分为两中实现方式,用状态空间模型对目标的轮廓的形状和运动状态建模,或用梯度搜索进行推演轮廓。梯度搜索是一种轮廓能量最小化方法。
1)状态空间模型的目标跟踪
由轮廓的形状和目标的运动参数(如,速度、加速度、运动方向等)定义目标的状态,在轮廓的后验概率最大时更新目标状态。
2)能量最小化方法的目标跟踪
此方法和目标分割方法类似,其中的分割和跟踪部分都是通过梯度下降法或贪婪算法来最小化能量。
3)讨论
轮廓跟踪通常在跟踪整个目标区域时使用,其最突出的优点在于能更好的适应目标形状的变化。在轮廓跟踪算法中,目标表达可以是外观模型、形状模型、运动模型或这几个模型的组合。目标模型可密度函数进行建模,目标形状用轮廓子空间形式进行建模。在直观的轮廓搜索中基于外观的形状表达得到普遍应用。Hausdroff距离是对基于边缘形状的表达的最广泛测量方法。
通常,遮挡可以分为三种情况:目标间遮挡、背景遮挡、自遮挡。对于目标之间的相互遮挡,可以选择根据目标的位置和目标特征的先验知识来处理这一问题。而对于场景结构的导致的部分遮挡此方法则难以判断,因为难以辨认究竟是目标形状发生变化还是发生遮挡。所以,处理遮挡问题的通用方法是用线性或非线性动态建模方法对运动目标进行,并在目标发生遮挡时,预测目标的可能位置,一直到目标重新出现时再修正它的位置。可以用卡尔曼滤波器来实现估计目标的位置,也可以用粒子滤波对目标做状态估计。或者使用:轮廓投影、光流特征等方法。
多摄像头目标跟踪的需求一般来自于以下两方面:
1)深度跟踪和遮挡处理;
2)扩大跟踪场景区域。
多摄像头跟踪中的一个重要问题是如何处理不同摄像头之间的视角的对应关系。一般情况下可以人工定义,也可以根据观测的场景和运动目标进行自动计算。
摄像头运动时就没法通过背景相减法获取目标的具体位置和大小描述, 这种情况下对目标的特征描述和目标跟踪算法的就要求较高。常用的方法有以下几种:
质心跟踪算法
这种跟踪方式主要用于跟踪有界目标,如飞机,目标和背景的差异较大。目标完全在视频画面内,跟踪时,常常需要用一些图像预处理算法,如对比度增强、图像去噪、双极性增强等。
边缘跟踪算法
当要跟踪的目标有一个或多个边缘并且同时具有不确定的边缘,此时边缘跟踪的效果最好。典型的跟踪对象是发射中的火箭,它有很好的前边缘,但是尾部边缘却由于喷气而不确定。
场景锁定跟踪算法
该算法主要用于在复杂场景的目标跟踪。适合于从空中对监控地面或者地面场景的监控。这个算法会跟踪视频画面中的多个目标,然后跟据每个点的运动状态,估计整个场景全局运动,场景中的运动目标和运动目标的定位是自动选择的。当跟踪的目标移动到视频画面外时,新的目标可以被自动标识。
组合跟踪算法
这种方法顾名思义就是利用两种或两种以上的具有互补特性的算法的组合:如将质心类算法和相关类算法进行组合。组合后的算法就能够适合于目标大小、形状、及表面特征变化较大的场景。