主要内容

多个对象跟踪

追踪是在视频流中随时间定位一个或多个运动对象的过程。跟踪一个目标不等同于目标检测。目标检测是在单一帧中定位感兴趣的目标的过程。跟踪在多个帧中关联一个对象的检测。

跟踪多个目标需要检测、预测和数据关联。

  • 检测:检测视频帧中感兴趣的对象。

  • 预测:预测下一帧物体的位置。

  • 数据关联:使用预测位置跨帧关联检测以形成跟踪

检测

选择正确的方法来检测感兴趣的物体取决于你想跟踪什么以及相机是否静止。

使用固定摄像机检测物体

要使用静止摄影机检测运动中的对象,可以使用愿景。ForegroundDetector系统对象。背景减法的工作效率高,但需要相机是固定的。

使用移动摄影机检测对象

要使用移动摄像机检测运动中的对象,可以使用滑动窗口检测方法。这种方法通常比背景减法工作得慢。要检测和跟踪特定类别的对象,请使用表中描述的系统对象或功能。

选择检测算法

要跟踪的对象的类型 相机 功能
任何移动的东西 静止的

愿景。ForegroundDetector系统对象™

脸、眼睛、鼻子、嘴、上身 静止不动的,动

视觉传感器系统对象

行人 静止不动的,动

愿景。PeopleDetector系统对象

自定义对象类别 静止不动的,动

trainCascadeObjectDetector作用

自定义滑动窗口探测器使用extractHOGFeaturesselectStrongestBbox

预测

随着时间的推移跟踪一个对象意味着你必须预测它在下一帧中的位置。最简单的预测方法是假设该物体将在其已知的最后位置附近。换句话说,之前的探测就相当于下一次的预测。这种方法对于高帧率特别有效。然而,当物体以不同的速度移动时,或者当帧率相对于运动物体的速度较低时,使用这种预测方法可能会失败。

一种更复杂的预测方法是利用先前观测到的物体的运动。卡尔曼滤波(愿景。KalmanFilter)预测一个物体的下一个位置,假设它根据一个运动模型运动,例如恒定的速度或恒定的加速度。卡尔曼滤波还考虑了过程噪声和测量噪声。过程噪声是对象的实际运动与运动模型的偏差。测量噪声是检测错误。

要使配置卡尔曼滤波器更容易,请使用配置Kalman过滤器. 此函数用于设置过滤器,以跟踪笛卡尔坐标系中以恒定速度或恒定加速度移动的物理对象。统计数据在所有维度上都是相同的。如果需要配置具有不同假设的卡尔曼滤波器,则需要构造愿景。KalmanFilter直接对象。

数据协会

数据关联是跨帧关联与相同物理对象对应的检测的过程。特定对象的时间历史由多个检测组成,称为时间历史轨道.轨迹表示可以包括物体先前位置的整个历史。或者,它可以只包含物体最后已知的位置和当前的速度。

检测以跟踪成本功能

要将检测与轨迹匹配,必须建立评估匹配的标准。通常,通过定义成本函数来建立此标准。将检测与轨迹匹配的成本越高,检测属于轨迹的可能性越小。简单的成本函数可以定义为边界之间的重叠程度预测和检测到的对象的数据框从行驶中的汽车追踪行人示例使用BBOX重叠率作用您可以使用距离的函数愿景。KalmanFilter对象您还可以实现一个自定义成本函数,该函数可以包含有关对象大小和外观的信息。

排除不可能的比赛

选通是一种从考虑中消除极不可能匹配的方法,例如通过对成本函数施加阈值。如果成本超过某个阈值,则观测值无法与轨迹匹配。使用此阈值方法可以有效地生成循环选通区在每个预测周围,可以找到匹配检测。另一种选门技术是使选门区域足够大,以包括k-预测的最近邻。

为跟踪分配检测

数据关联问题归结为一个最小权重的二部匹配问题,这是图论中一个很好的研究领域。二部图将轨迹和检测表示为顶点。它还将检测和轨迹匹配的成本表示为相应顶点之间的加权边。

分配检测到跟踪函数实现了匈牙利二部匹配算法的Munkres变体。它的输入是成本矩阵,其中行对应于跟踪,列对应于检测。每一项包含为特定轨道分配特定检测的成本。你可以通过将不可能匹配的成本设置为无穷大来实现门槛。

跟踪管理

数据关联必须考虑到新对象可能会出现在视场中,或者被跟踪的对象可能会离开视场。换句话说,在任何给定的帧中,可能需要创建一些新的轨道,而可能需要丢弃一些现有的轨道。的分配检测到跟踪函数返回未分配的轨迹和未分配的检测的索引,以及匹配的对。

处理不匹配检测的一种方法是从每个检测中创建新的轨迹。或者,您可以从大于特定大小的不匹配检测或具有特定位置或外观的检测创建新轨迹。例如,如果场景只有一个入口点,例如门口,则可以指定只有位于入口点附近的不匹配检测才能开始新轨迹,并且所有其他检测都被视为噪波。

另一种处理不匹配轨道的方法是删除任何在一定数量的帧中仍然不匹配的轨道。或者,您可以指定在最后一个已知位置靠近出口点时删除不匹配的轨迹。

另请参阅

||||||||||

相关的例子

更多关于

外部网站