一、基本流程
目标追踪指在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。
目标跟踪一般由4个基本部分构成:特征提取、运动模型、外观模型、在线更新机制。
1、特征提取(Feature Extraction):适用于目标跟踪的特征一般要求,既能较好地描述跟踪目标又能快速计算。常见的图像特征有灰度特征、颜色特征、纹理特征、Haar-like 矩形特征、兴趣点特征、超像素特征。
2、运动模型( Motion Model):描述帧与帧目标运动状态之间的关系,显式或隐式地在视频帧中预测目标图像区域,并给出一组可能的候选区域.经典的运动模型有均值漂移(Mean shift)、滑动窗口(Slide window)、卡尔曼滤波( Kalman Filtering)、粒子滤波( Particle Filtering) 等。
3、外观模型(Appearance Model):在当前帧中判决候选图像区域是被跟踪目标的可能性.提取图像区域的视觉特征,输入外观模型进行匹配或决策,最终确定被跟踪目标的空间位置。
4、在线更新机制(Online Update Mechanism):为了捕捉目标在跟踪过程中的变化,目标跟踪需要包含一个在线更新机制,在跟踪过程中不断更新外观模型.常见的外观模型更新方式有模板更新、增量子空间学习算法及在线分类器等。
其中特征提取、目标跟踪算法两部分可以细分如下——
目标特征提取大致可以分为以下几种:
- 以目标区域的颜色直方图作为特征,颜色特征具有旋转不变性,且不受目标物大小和形状的变化影响,在颜色空间中分布大致相同。
- 目标的轮廓特征,算法速度较快,并且在目标有小部分遮挡的情况下同样有较好的效果。
- 目标的纹理特征,纹理特征较轮廓特征跟踪效果会有所改善。
目标跟踪算法大致可以分为以下四种:
- 均值漂移(Mean shift),此方法可以通过较少的迭代次数快速找到与目标最相似的位置,但是不能解决目标的遮挡问题并且不能适应运动目标的的形状和大小变化等。对其改进的算法有camshift算法,此方法可以适应运动目标的大小形状的改变,具有较好的跟踪效果,但当背景色和目标颜色接近时,容易使目标的区域变大,最终有可能导致目标跟踪丢失。
- 卡尔曼滤波( Kalman Filtering),该方法是认为物体的运动模型服从高斯模型,来对目标的运动状态进行预测,然后通过与观察模型进行对比,根据误差来更新运动目标的状态,该算法的精度不是特高。
- 粒子滤波( Particle Filtering),每次通过当前的跟踪结果重采样粒子的分布,然后根据粒子的分布对粒子进行扩散,再通过扩散的结果来重新观察目标的状态,最后归一化更新目标的状态。此算法的特点是跟踪速度特别快,而且能解决目标的部分遮挡问题,在实际工程应用过程中越来越多的被使用。
- 对运动目标建模,该方法需要提前通过先验知识知道所跟踪的目标对象是什么,比如车辆、行人、人脸等。通过对要跟踪的目标进行建模,然后再利用该模型来进行实际的跟踪。该方法必须提前知道要跟踪的目标对象是什么,然后再去跟踪指定的目标,这是它的局限性。
二、影响因素
在进行追踪时,会有以下几点因素对追踪产生影响:
- 遮挡(Occlusion):分为部分遮挡(Partial Occlusion)和完全遮挡(Full Occlusion)。
- 形变(Deformation):目标表观的不断变化,通常导致跟踪发生漂移(Drift)。
- 背景杂斑(Background Clutter):跟踪的目标周围有非常相似的目标对跟踪造成了干扰。
- 尺度变换(Scale Variation):目标在运动过程中的由远及近或由近及远而产生的尺度大小变化的现象。
- 光照(illumination)
- 低分辨率(Low Resolution)
- 运动模糊(Motion Blur)
- 快速运动(Fast Motion)
- 超出视野(Out of View)
- 旋转(Rotation)
三、目标追踪算法
目标跟踪算法主要分为两类——
生成式(generative)模型:通过在线学习方式建立目标模型,然后使用模型搜索重建误差最小的图像区域,完成目标定位。在当前帧对目标区域建模,下一帧寻找与模型最相似的区域就是预测位置,例如卡尔曼滤波,粒子滤波,mean-shift等。
判别式(discrimination)模型:将目标跟踪看作是一个二元分类问题,同时提取目标和背景信息用来训练分类器,将目标从图像序列背景中分离出来,从而得到当前帧的目标位置。使用图像特征+机器学习, 当前帧以目标区域为正样本,背景区域为负样本,机器学习方法训练分类器,下一帧用训练好的分类器找最优区域:与生成类方法最大的区别是,分类器采用机器学习,训练中用到了背景信息,这样分类器就能专注区分前景和背景。