简介
- 论文地址:Improving Multiple Object Tracking with Optical Flow and Edge Preprocessing
- 代码地址:https://github.com/beaupreda/IMOT_OpticalFlow_Edges
- 论文结合了背景减除法、光流法和边缘处理的方法,实现了多目标跟踪。输出为跟踪目标的bounding box。首先基于背景减除法,提取出所有关于前景图像的blob;然后对位置相近、光流相似的blob进行合并;接着提取不同物体的边缘,区分出那些空间很近的物体,同时调整初始blob的大小。
- 提出的方法相对
vanilla背景减除法,精度和召回率都有所提升。
Introduction
背景减除法
- 在城市环境中,使用背景减除法生成的图像有许多问题。
- 前景blob之间会互相融合,这是由于物体之间遮挡而产生的问题。
- 背景减除法可能会使一个物体被拆分为多个blob。
- 行人等阴影也会影响背景减除法的效果。
- 背景减除法得到的blob往往要比物体的实际尺寸要大。
本文的思路
- 背景减除法用于定位ROI,即当前帧的前景blob的位置;对于每个blob,计算其光流,根据计算得到的运动向量对不同区域的blob进行融合(位置相近,同时运动向量方向类似);使用canny边缘检测方法检测前景blob和背景图像的边缘,进而获得前景物体中的边,这可以消除在背景中存在的边缘,从而改善结果;最后对结果进行处理,分离那些离得比较近的物体,防止将多个物体识别为一个物体。
Method
Background image
- 使用移动平均的方法获取背景图像
Merging foreground blobs
- 对于图像中检测出的blob,如果2个blob同时满足以下3个条件,就可以对他们进行融合
- $d(B_i , B_j) \le T_M$,其中$d(B_i , B_j)$是两个blob中任意像素的最小距离,$T_M$为距离阈值。满足这一条件的说明2个blob的距离很近。
- 如果2个blob光流幅值的间隔的交集不是空集(具体公式看论文)。
- $|ang(B_i) -ang(B_j)| \le A_T$,即2个blob的角度的差值小于一定的阈值,在这里$A_T$取的比较大($\pi/2$),从而可能会导致有些不该在一起的blob被融合到一起,作者提出的方法在之后的步骤中能较好地解决这个问题。
- 2个blob进行融合,得到1个新的blob,它是同时包含之前2个blob的面积最小的blob。
Flow separation
- 对于一个blob中的所有光流向量进行kmeans聚类,设置$k=3$,因为有背景光流向量、前景光流向量以及与前景光流向量方向相反的向量。
Edge processing
- 在这里使用到了第一步中计算得到的背景图像
- 对背景图像和blob做边缘检测,使用xor方法,去除当前图像中的背景边缘干扰。这种方法也可以将本应该是2个物体却融合成一个物体的blob进行分离。
New final foreground image
- 每个blob中的对应点都是前景像素(1),背景为0,对所有点进行xor操作,这会导致对于相交的2个blob,它们的相交部分会被视为背景图像。最后再使用膨胀操作,得到最终的跟踪结果。