光电工程  2018, Vol. 48 Issue (8): 170665      DOI: 10.12086/oee.2018.170665     
四帧间差分与光流法结合的目标检测及追踪
刘鑫 , 金晅宏     
上海理工大学光电信息与计算机工程学院,上海 200093
摘要:为了能在复杂环境下快速、准确地对多个目标进行检测及追踪,本文结合四帧间差分算法与光流算法,提出了一种更高效的运动目标检测算法。本算法为了提升光流法的处理速度并降低光照等环境所带来的影响,首先对视频序列进行四帧间差分处理,然后将得到的差分视频序列进行光流处理,以实现对视频中目标的准确检测。最后将该算法与粒子滤波、ViBe等算法进行比较,并在不同场景下对不同运动目标、不同个数目标进行捕获处理,结果表明,本方法不仅具有较好的鲁棒性,而且能够更快速、准确的对目标进行检测与追踪。
关键词物体检测及追踪    四帧间差分法    光流法    粒子滤波    ViBe算法    
Algorithm for object detection and tracking combined on four inter-frame difference and optical flow methods
Liu Xin, Jin Xuanhong     
School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China
Abstract: To solve the problem of multiple targets' detection and tracking under the complex environment, in this paper, an improved moving objects detection method is proposed based on four inter-frame differential method and optical flow algorithm. Firstly, four inter-frame difference method is used to process the of video sequences. Then objects in the video is detected accurately by the optical flow algorithm used on light streaming video sequences. This improved method enhances the processing speed of optical flow method and reduces the effects of environment's illumination. Finally, the paper compares the proposed algorithm with particle filter, ViBe algorithm under different scenarios with different moving targets and individual number. This improved method is proved not only with good robustness, but also can work more quickly and accurately on the target detection and tracking.
Keywords: object detection and tracking    four inter-frame difference method    optical flow method    particle filter    ViBe    

1 引言

伴随着“平安城市”建设的全面展开,无论是政府还是企业,都在加大相关产业的投入。利用监控设备所提供的影像进行实时分析,可有效地应对一些突发事件。目前,视频监控信息的智能处理在计算机视觉、模式识别、机器学习等领域中[1]受到了极大关注,对视频中的前景目标进行有效的提取和捕获显得更为重要。

目前,国内相关领域大多使用传统算法进行目标检测与追踪,例如粒子滤波算法、ViBe算法等。这些算法易于实现,技术成熟且效果较好。但是这些算法在复杂环境下追踪效果较差[2-7]。基于核函数的目标跟踪算法、基于聚类的CodeBook算法等都有十分良好的鲁棒性,在复杂环境下的追踪效果较好,但是由于算法的复杂性、应用实现困难等因素,并不能够很好地应用推广[2, 5-6]

对于运动目标的检测,按照运动场景分类可分为动态背景与静态背景,两者的检测方式差异很大。由于存在背景运动和目标运动两个互相独立的运动,使得问题变得较为复杂。针对此类问题,目前主流的处理方法是通过光流法或运动补偿的方法对干扰进行消除。光流法中,金字塔LK光流法是通过计算稀疏点光流,获取较高的准确度和速度,但用于运动目标检测时不能提取完整的目标信息,而帧间差分法可以很好地提取目标区域,因此在进行动态背景下的运动目标捕获时,通常使用帧间差分-金字塔光流法相结合的方法进行处理。

本文以帧间差分-金字塔光流法为基础,在保证高可靠性的前提下,为了获得更快的处理速度和更高的精度,提出了四帧间差分与金字塔光流法相结合的算法。

2 算法理论推导 2.1 四帧间差分算法

帧差法[8]是对多帧差分[9]的图像进行图像信息的融合,从而获得较好的结果。

四帧差分算法[10]是通过动态阈值的修改来精确地获得检测对象的信息。算法的基本思想如下:

将连续视频序列进行取帧操作,每连续四帧${I_k}(x,y)$${I_{k + 1}}(x,y)$${I_{k + 2}}(x,y)$${I_{k + 3}}(x,y)$依次进行两两差分处理,根据动态阈值,将它们分割变成二值化图像,然后把两次差分后的图像${d_{1k}}$, ${d_{2k}}$进行逐位与运算,得到运动目标的轮廓,从而确定图像中的前景色区域,其计算流程为

${d_{1k}} = \left\{ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} 1&{,\;\;\left| {{I_k}(x,y) - {I_{k + 1}}(x,y)} \right| > Z + {\Delta _{Z1}}} \end{array}} \\ {\begin{array}{*{20}{c}} 0&{,\;\;\left| {{I_k}(x,y) - {I_{k + 1}}(x,y)} \right| \leqslant Z + {\Delta _{Z1}}} \end{array}} \end{array}} \right.,$ (1)
${d_{2k}} = \left\{ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} 1&{,\;\;\left| {{I_{k + 2}}(x,y) - {I_{k + 3}}(x,y)} \right| > Z + {\Delta _{Z2}}} \end{array}} \\ {\begin{array}{*{20}{c}} 0&{,\;\;\left| {{I_{k + 2}}(x,y) - {I_{k + 3}}(x,y)} \right| \leqslant Z + {\Delta _{Z2}}} \end{array}} \end{array}} \right.,$ (2)
${\Delta _{Z1}} = \frac{\lambda }{{M \times N}}\sum\limits_{x = 0}^{M - 1} {\sum\limits_{y = 0}^{N - 1} {\left| {{I_k}(x,y) - {I_{k + 1}}(x,y)} \right|} } ,$ (3)
${\Delta _{Z2}} = \frac{\lambda }{{M \times N}}\sum\limits_{x = 0}^{M - 1} {\sum\limits_{y = 0}^{N - 1} {\left| {{I_{k + 2}}(x,y) - {I_{k + 3}}(x,y)} \right|} } ,$ (4)
${d_k} = {d_{1k}} \cap {d_{2k}},$ (5)
${D_k} = \left\{ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {1\;\;,}&{{d_k} = 1} \end{array}} \\ {\begin{array}{*{20}{c}} {0\;\;,}&{{d_k} = 0} \end{array}} \end{array}} \right.。$ (6)

${D_k} = 1$,目标为前景点;若${D_k} = 0$,目标为背景点。其中$Z$为固定的二值化阈值,${\Delta _{Z1}}$${\Delta _{Z2}}$(下面两者均记为${\Delta _Z}$)均为动态阈值,${\Delta _Z}$反应了视频序列中光照情况,当光照明显变化时,动态阈值${\Delta _Z}$将显著增大,这就有效抑制了光线转变所带来的影响。而当图像光照变化较小时,动态阈值${\Delta _Z}$又将是一个很小的值。λ为抑制系数,参考值为2;M×N表示每幅图像的大小,其数值等于检测区域的像素个数。

2.2 金字塔LK光流算法

光流法[11]是通过观察图像灰度,并根据时间轴上对应的变化,结合影像中物体的结构和它的运动关系来检测其是否为检测的目标。这种算法对场景的任何信息都不需要提前判断,不必考虑帧间时间间隔及背景模型更新的问题。

LK(Lucas-Kanade)光流法[12]是一种基于帧差分的光流估计算法[13]。该算法对图像信息有良好的处理能力,现已成为一种用来计算图像稀疏光流的常见算法。该算法在使用时必须满足如下三个假设[14]

1) 亮度不变。假设场景中的检测对象无论如何运动,其外观颜色是恒定的,即在图像中每连续两帧中的像素,它们的亮度保持恒定。

2) 时间恒定或小范围运动。即随着时间变化,图像中的目标运动变化缓慢,在每连续两帧之间目标仅有较小的位移量。

3) 空间恒定。图像中同一检测目标邻近的像素点的运动是相同的,且它们一定是汇聚在某个区域内的。

金字塔光流法[15]是对LK光流法的改进,其核心思想是通过缩小图像的尺寸来实现对算法的改进[16]

假设$I(\mathit{\boldsymbol{x}}) = I(x,y)$$J(\mathit{\boldsymbol{x}}) = J(x,y)$分别表示相邻灰度图像$I$$J$的灰度值。已知速度$\mathit{\boldsymbol{u}} = {({\mathit{\boldsymbol{u}}_x},{\mathit{\boldsymbol{u}}_y})^{\rm{T}}}$为图像$I$的特征点的速度,速度$\mathit{\boldsymbol{v}} = \mathit{\boldsymbol{u}} + \mathit{\boldsymbol{d}}$为图像$J$的特征点的速度。改进的光流值用$\mathit{\boldsymbol{d}}$表示。邻域窗口半径用$W$表示,$E(\mathit{\boldsymbol{d}})$表示存在光流值$\mathit{\boldsymbol{d}}$的光流残差。此时应使$E(\mathit{\boldsymbol{d}})$最小:

$E(\mathit{\boldsymbol{d}}) = E({\mathit{\boldsymbol{d}}_x},{\mathit{\boldsymbol{d}}_y})\\ \quad = \sum\limits_{x = {\mathit{\boldsymbol{u}}_x} - w}^{{\mathit{\boldsymbol{u}}_x} + w} {\sum\limits_{y = {\mathit{\boldsymbol{u}}_y} - w}^{{\mathit{\boldsymbol{u}}_y} + w} {{{(I(x,y) - J(x + {\mathit{\boldsymbol{d}}_x},x + {\mathit{\boldsymbol{d}}_y}))}^2}} } 。$ (7)

每次将图像的高与宽对半减少,共缩放${L_m}$层,第0层为原始图像。设已知原图的速度为$\mathit{\boldsymbol{u}}$,则每一层的速度${\mathit{\boldsymbol{u}}^L}$

${\mathit{\boldsymbol{u}}^L} = \frac{\mathit{\boldsymbol{u}}}{{{2^L}}}。$ (8)

假设在L层求解光流值,将此层处理的结果代入到上一层中,并将此结果作为该层初始时的光流估计值$\mathit{\boldsymbol{g}}$。依此类推,当处理到第0层时,得到原始图像。

对于每一层L,式(7)变为式(9):

$ {E^L}({\mathit{\boldsymbol{d}}^L}) = E(\mathit{\boldsymbol{d}}_x^L,\mathit{\boldsymbol{d}}_y^L) = \sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {[I(x,y)} } \\ \quad - J(x + \mathit{\boldsymbol{g}}_x^L + \mathit{\boldsymbol{d}}_x^L,y + \mathit{\boldsymbol{g}}_y^L + \mathit{\boldsymbol{d}}_y^L){]^2}。$ (9)

每一层的计算结果${\mathit{\boldsymbol{d}}^L}$利用式(10)传递给上一层作为光流估计的初始化:

${\mathit{\boldsymbol{g}}^{L - 1}} = 2({\mathit{\boldsymbol{g}}^L} + {\mathit{\boldsymbol{d}}^L})。$ (10)

金字塔的光流值减小,当处在最底层的光流估计值${L_m}$被减小到0时,得到:

${\mathit{\boldsymbol{g}}^L} = {[\begin{array}{*{20}{c}} 0&0 \end{array}]^{\rm T}}。$ (11)

通过这种方式进行迭代,推算出第0层,即顶层的光流值为

$\mathit{\boldsymbol{d}} = {\mathit{\boldsymbol{g}}^0} + {\mathit{\boldsymbol{d}}^0}。$ (12)

假设:

$A(x,y) = {I^L}(x,y)$$B(x,y) = {J^L}(x + \mathit{\boldsymbol{g}}_x^L,y + \mathit{\boldsymbol{g}}_y^L)$

式(7)变为式(13):

${E^L}{\rm{(}}{\mathit{\boldsymbol{d}}^L}) = E{\rm{(}}\mathit{\boldsymbol{d}}_x^L,\mathit{\boldsymbol{d}}_y^L)\\ \quad = \sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {{{(I(x,y) - J(x + \mathit{\boldsymbol{d}}_x^L,y + \mathit{\boldsymbol{d}}_y^L))}^2}} } 。$ (13)
$\frac{{\partial E({\mathit{\boldsymbol{d}}^L})}}{{\partial {\mathit{\boldsymbol{d}}^L}}} \approx - 2\sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {\left( {A(x,y) - B(x,y)} \right.} }\\ \quad \left. { - \left[ {\begin{array}{*{20}{c}} {\frac{{\partial B}}{{\partial x}}}&{\frac{{\partial B}}{{\partial y}}} \end{array}} \right]{\mathit{\boldsymbol{d}}^L}} \right) \cdot \left[ {\begin{array}{*{20}{c}} {\frac{{\partial B}}{{\partial x}}}&{\frac{{\partial B}}{{\partial y}}} \end{array}} \right]。$ (14)

$\left[ {\begin{array}{*{20}{c}} {{\mathit{\boldsymbol{I}}_x}} \\ {{\mathit{\boldsymbol{I}}_y}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {\frac{{\partial B}}{{\partial x}}}&{\frac{{\partial B}}{{\partial y}}} \end{array}} \right],$
$\mathit{\boldsymbol{\delta I}} = A(x,y) - B(x,y),$

推出:

$\frac{1}{2}\frac{{\partial E({\mathit{\boldsymbol{d}}^L})}}{{\partial {\mathit{\boldsymbol{d}}^L}}} \approx \sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {\left( {\left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{I}}_x^2}&{{\mathit{\boldsymbol{I}}_x}{\mathit{\boldsymbol{I}}_y}} \\ {{\mathit{\boldsymbol{I}}_x}{\mathit{\boldsymbol{I}}_y}}&{\mathit{\boldsymbol{I}}_y^2} \end{array}} \right] \cdot {\mathit{\boldsymbol{d}}^L}} \right.} }\\ \quad \quad \left. { - \left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{\delta I}} \cdot {\mathit{\boldsymbol{I}}_x}} \\ {\mathit{\boldsymbol{\delta I}} \cdot {\mathit{\boldsymbol{I}}_y}} \end{array}} \right]} \right)。$ (15)

记:

$\mathit{\boldsymbol{G}} \approx \sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {\left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{I}}_x^2}&{{\mathit{\boldsymbol{I}}_x}{\mathit{\boldsymbol{I}}_y}} \\ {{\mathit{\boldsymbol{I}}_x}{\mathit{\boldsymbol{I}}_y}}&{\mathit{\boldsymbol{I}}_y^2} \end{array}} \right]} } ,$
$\mathit{\boldsymbol{b}} \approx \sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {\left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{\delta I}} \cdot {\mathit{\boldsymbol{I}}_x}} \\ {\mathit{\boldsymbol{\delta I}} \cdot {\mathit{\boldsymbol{I}}_y}} \end{array}} \right]} } $

最终得到:

$\frac{1}{2}\frac{{\partial E({\mathit{\boldsymbol{d}}^L})}}{{\partial {\mathit{\boldsymbol{d}}^L}}} \approx \mathit{\boldsymbol{G}} \cdot {\mathit{\boldsymbol{d}}^L} - \mathit{\boldsymbol{b}}。$ (16)
3 四帧间差分-金字塔光流算法

综上可知,金字塔光流法可以检测出运动速度较快的物体,但计算量过于庞大,对硬件依赖程度高,且不能消除光照等外界环境所带来的影响。鉴于帧间差算法处理速度快的优点及金字塔光流模型高准确度的特点,将帧间差分法和金字塔光流法两种算法进行结合来对动态背景的检测目标进行提取。

在算法中,首先对图像进行四帧间差分运算,目的是得到检测目标的大致区域,再利用金字塔光流算法的特性进行运算处理。这样既减少了光线的影响,又能更好的对运动速度较快的目标进行检测,同时也降低了计算量。其流程图如图 1所示。

图 1 改进算法流程图 Fig. 1 Improved algorithm flow chart

该算法的具体步骤如下:

1) 将捕捉到的连续视频序列进行图像的预处理与降噪处理;

2) 取视频序列的连续四帧图像${I_k}(x,y)$${I_{k + 1}}(x,y)$${I_{k + 2}}(x,y)$${I_{k + 3}}(x,y)$

3) 对${I_k}(x,y)$${I_{k + 1}}(x,y)$进行差分处理,获取帧差图像${d_{1k}}$;对${I_{k + 2}}(x,y)$${I_{k + 3}}(x,y)$进行同样的差分运算处理,得到帧差图像${d_{2k}}$

4) 进一步对帧差图像${d_{1k}}$${d_{2k}}$进行相应的图像二值化处理,然后逐位进行逻辑与运算,获取运动区域$J(x,y)$

5) 将$J(x,y)$建立金字塔模型${\mathit{\boldsymbol{J}}^L}$$L = 0,1,...,{L_m}$;初始化金字塔光流估计值${\mathit{\boldsymbol{g}}^L} = {[\begin{array}{*{20}{c}} 0&0 \end{array}]^{\rm{T}}}$${L_m}$层图像上特征点u的速度为${\mathit{\boldsymbol{u}}^L} = \mathit{\boldsymbol{u}}/{2^L}$

6) 对图像${\mathit{\boldsymbol{J}}^L}$求关于x的偏导数$\mathit{\boldsymbol{J}}_x^L$和关于y的偏导数$\mathit{\boldsymbol{J}}_y^L$,计算:

$\mathit{\boldsymbol{G}} = \sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {\left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{J}}_x^2}&{{\mathit{\boldsymbol{J}}_x}{\mathit{\boldsymbol{J}}_y}} \\ {{\mathit{\boldsymbol{J}}_x}{\mathit{\boldsymbol{J}}_y}}&{\mathit{\boldsymbol{J}}_y^2} \end{array}} \right]} } ;$

7) 初始化光流值${\mathit{\boldsymbol{d}}_L} = {[\begin{array}{*{20}{c}} 0&0 \end{array}]^{\rm{T}}}$

8) 求$\mathit{\boldsymbol{\delta I}} = {J^L}(x + \mathit{\boldsymbol{g}}_x^L,y + \mathit{\boldsymbol{g}}_y^L)$,计算:

$\mathit{\boldsymbol{b}} = \sum\limits_{x = \mathit{\boldsymbol{u}}_x^L - w}^{\mathit{\boldsymbol{u}}_x^L + w} {\sum\limits_{y = \mathit{\boldsymbol{u}}_y^L - w}^{\mathit{\boldsymbol{u}}_y^L + w} {\left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{\delta I}} \cdot {\mathit{\boldsymbol{I}}_x}} \\ {\mathit{\boldsymbol{\delta I}} \cdot {\mathit{\boldsymbol{I}}_y}} \end{array}} \right]} }; $

9) 计算${L_m}$层的光流值${\mathit{\boldsymbol{d}}^L} = {\mathit{\boldsymbol{G}}^{ - 1}}\mathit{\boldsymbol{b}}$

10)计算L-1层的光流值:${\mathit{\boldsymbol{g}}^{L - 1}} = 2({\mathit{\boldsymbol{g}}^L} + {\mathit{\boldsymbol{d}}^L})$,以此类推得到最后的光流值:$\mathit{\boldsymbol{d}} = {\mathit{\boldsymbol{g}}^0} + {\mathit{\boldsymbol{d}}^0}$

11)图像$P(x,y)$的对应特征点为

$\mathit{\boldsymbol{v}} = \mathit{\boldsymbol{u}} + \mathit{\boldsymbol{d}};$

12)得到运动目标图像$P(x,y)$

4 实验结果与分析

试验硬件平台使用CPU为Intel Core i5,CPU频率2.5 GHz,内存4 G,操作系统为Windows 10,GPU显存2 GB,型号为NVIDIA GeForce GT 555M,该GPU处理速度是纯CPU处理速度的6倍左右[17],软件环境为VS 2017+OpenCV 3.4.10。数据集使用圣地亚哥加州大学的异常检测数据集,数据集图像内容主要为人行道上的人群,或者穿过停车场的车辆等场景,是通过安装在高地、俯瞰人行道的摄像机来获得的[18]

在静态背景下多个运动目标场景实验中,选取视频中的第20帧作为处理帧。分别采用四帧间差分法、ViBe算法、光流算法、粒子滤波算法和本文算法进行处理,得到的处理效果如图 2所示。

图 2 静态背景下多目标处理效果图。(a)原图;(b)四帧间差分法;(c) ViBe算法;(d)光流法;(e)粒子滤波算法;(f)本文算法 Fig. 2 Multiple targets processing the renderings in static background. (a) The original image; (b) Four-frame difference method; (c) ViBe algorithm; (d) Optical flow algorithm; (e) Particle filter algorithm; (f) The algorithm in this paper

不同算法对静态背景下多个运动目标处理的性能对比如表 1所示。

表 1 对静态背景下多个运动目标性能对比 Table 1 Performance comparison of multiple moving targets in a static background
处理方法 平均速率/(f·s-1) 追踪目标总数量 实际追踪数量
四帧差分法 104.17 16 9
ViBe算法 780.00 16 7
光流算法 23.67 16 10
粒子滤波算法 26.67 16 11
本算法 46.05 16 10

在处理动态背景下单个高速运动目标实验中,选取视频中的第20帧作为处理帧。分别采用四帧间差分法、ViBe算法、光流算法、粒子滤波算法和本文算法进行处理,得到的处理效果如图 3所示。

图 3 动态背景下单个高速目标处理效果图。(a)原图;(b)四帧间差分法;(c) ViBe算法;(d)光流法;(e)粒子滤波算法;(f)本文算法 Fig. 3 Single high speed moving target processing the renderings in dynamic background. (a) The original image; (b) Four-frame difference method; (c) ViBe algorithm; (d) Optical flow algorithm; (e) Particle filter algorithm; (f) The algorithm in this paper

不同算法对动态背景下单个高速运动目标处理的性能对比如表 2所示。

表 2 动态背景下单个高速运动目标性能对比 Table 2 Performance comparison of single high speed moving target in dynamic background
处理方法 平均速率/(f·s-1) 追踪目标总数量 实际追踪数量
四帧差分法 86.91 1 无法识别
ViBe算法 780.00 1 1
光流算法 25.00 1 1
粒子滤波算法 29.70 1 1
本算法 41.67 1 1

在处理晃动摄像头下多个运动目标实验中,选取视频中的第20帧作为处理帧。分别采用四帧间差分法、ViBe算法、光流算法、粒子滤波算法和本文算法进行处理,得到的处理效果如图 4所示。

图 4 晃动摄像头下多目标处理效果图。(a)原图;(b)四帧间差分法;(c) ViBe算法;(d)光流法;(e)粒子滤波算法;(f)本文算法 Fig. 4 Multiple targets processing the renderings under the shaking camera. (a) The original image; (b) Four-frame difference method; (c) ViBe algorithm; (d) Optical flow algorithm; (e) Particle filter algorithm; (f) The algorithm in this paper

不同算法对动摄像头下多目标处理的性能对比如表 3所示。

表 3 晃动摄像头下多个目标性能对比 Table 3 Performance comparison of multiple targets under the shaking camera
处理方法 平均速率/(f·s-1) 追踪目标总数量 实际追踪数量
四帧差分法 84.27 2 无法识别
ViBe算法 757.58 2 无法识别
光流算法 24.00 2 2
粒子滤波算法 29.86 2 2
本算法 41.03 2 2

从上述实验结果可以发现,在多目标、固定摄像头的静态背景下,各个算法都表现出很好的捕捉效果。其中ViBe算法具有较高的处理速度,但是由于场景中视野较远,行人的移动速度相对缓慢,ViBe算法将一些移动缓慢的人视为背景去除,影响了追踪的准确性。而粒子滤波算法的精度最高,但是由于其计算复杂,处理速度相对比较慢。

当场景选为动态背景下的高速目标追踪时,各个算法出现较大差异。其中帧间差分法由于受到场景中晃动的树叶影响,丧失追踪目标能力,而其他算法受到的影响较小。由于场景中追踪目标数量相对较少,使得粒子滤波速度得到一定增强,但是算法在逐帧处理时需要进行大量运算,这就使其在处理快速运动物体时发生计算滞后现象,使得捕获后的目标区域不准确。本文算法虽然速度上不及ViBe算法,但是处理的最终效果上是最佳的。

当场景选为非固定摄像头、动态背景下的多目标追踪时,由于摄像头的移动,帧间差分法与ViBe算法同时失去追踪能力。光流算法、粒子滤波算法和本文算法都有较好的处理效果,但是本文算法速度要优于其他两种。

5 结论

根据实验结果和上文所述,本文算法基于光流算法的原理能更好地捕获动态背景下的单个或多个运动目标;由于在进行光流算法之前进行了帧间差分法处理,大大减小了光流法所需要处理的总帧数,提升了速率。由于采用四帧间差分,通过增加前期帧间差分法的处理时间,从而缩短了光流处理时间。从追踪效果与处理速度来看,本文算法性能优于传统算法,抗干扰能力较强,且易于实现。

参考文献
[1]
Yuan G W. Research on moving objects detection and tracking methods in intelligent visual surveillance system[D]. Kunming: Yunnan University, 2012.
袁国武. 智能视频监控中的运动目标检测和跟踪算法研究[D]. 昆明: 云南大学, 2012. http://cdmd.cnki.com.cn/article/cdmd-10673-1012420011.htm
[2]
Tang X. Crowd abnormal behavior detection based on sparse coding[D]. Harbin: Harbin Institute of Technology, 2013.
唐迅. 基于稀疏编码的群体异常行为检测[D]. 哈尔滨: 哈尔滨工业大学, 2013. http://cdmd.cnki.com.cn/Article/CDMD-10213-1014003385.htm
[3]
Bai X F, Yang W, Chen P H. Improved moving object detection and tracking method[J]. Video Engineering, 2014, 38(1): 180-182.
白晓方, 杨卫, 陈佩珩. 一种改进的运动目标检测与跟踪方法[J]. 电视技术, 2014, 38(1): 180-182.
[4]
Xu J B. The research of detection and tracking of moving object[D]. Wuhan: China University of Geosciences, 2007.
许俊波. 目标检测与跟踪方法研究[D]. 武汉: 中国地质大学, 2007. http://cdmd.cnki.com.cn/Article/CDMD-10491-2007142922.htm
[5]
He H K, Tang N J, Li Z, et al. Research of model for dynamic object segmentation based on LBP kernel density estimation[J]. Application Research of Computers, 2012, 29(7): 2719-2721.
何黄凯, 唐宁九, 李征, 等. 基于LBP核密度估计的动态目标分割模型研究[J]. 计算机应用研究, 2012, 29(7): 2719-2721.
[6]
Tian X T, Guo D. Motion-compensated interpolation method based on codebook[J]. Computer Engineering, 2016, 42(9): 214-219.
田绪婷, 郭丹. 基于Codebook的运动补偿内插方法[J]. 计算机工程, 2016, 42(9): 214-219.
[7]
Zhang J M, Wang B. Moving object detection under condition of fast illumination change[J]. Opto-Electronic Engineering, 2016, 43(2): 14-21.
张金敏, 王斌. 光照快速变化条件下的运动目标检测[J]. 光电工程, 2016, 43(2): 14-21. DOI:10.3969/j.issn.1003-501X.2016.02.003
[8]
Yuan G W, Chen Z Q, Gong J, et al. A Moving object detection algorithm based on a combination of optical flow and three-frame difference[J]. Journal of Chinese Computer Systems, 2013, 34(3): 668-671.
袁国武, 陈志强, 龚健, 等. 一种结合光流法与三帧差分法的运动目标检测算法[J]. 小型微型计算机系统, 2013, 34(3): 668-671.
[9]
Wang K, Wu M, Yao H, et al. Target detection method based on multi-frame background subtractionand cauchy model[J]. Opto-Electronic Engineering, 2016, 43(10): 12-17.
王凯, 吴敏, 姚辉, 等. 多帧背景差与Cauchy模型融合的目标检测[J]. 光电工程, 2016, 43(10): 12-17. DOI:10.3969/j.issn.1003-501X.2016.10.003
[10]
Yu P, Wang X, Tong T L, et al. A target extraction algorithm based on GrabCut segmentation algorithm and four frame differencing[J]. Microcomputer & its Applications, 2016, 35(11): 40-42.
庾鹏, 王旭, 仝天乐, 等. 基于GrabCut算法和四帧差分法的目标提取算法[J]. 微型机与应用, 2016, 35(11): 40-42.
[11]
Enkelmann W. Investigations of multigrid algorithms for the estimation of optical flow fields in image sequences[J]. Computer Vision, Graphics, and Image Processing, 1988, 43(2): 150-177. DOI:10.1016/0734-189X(88)90059-X
[12]
Ren K Q, Yu Q M, Luo H L. Improved algorithm of moving objects detection based on gaussian mixture model[J]. Video Engineering, 2012, 36(23): 168-171.
任克强, 余启明, 罗会兰. 一种改进的混合高斯模型运动目标检测算法[J]. 电视技术, 2012, 36(23): 168-171. DOI:10.3969/j.issn.1002-8692.2012.23.047
[13]
Yuan B H. Research on video moving object detection and tracking[D]. Hefei: Anhui University, 2014.
袁宝红. 基于视频的运动目标检测与跟踪研究[D]. 合肥: 安徽大学, 2014. http://cdmd.cnki.com.cn/Article/CDMD-10357-1014229726.htm
[14]
Hu S J, Ge X W, Chen Z H. Based on corner feature KLT track panoramic mosaic algorithm[J]. Journal of System Simulation, 2007, 19(8): 1742-1744.
胡社教, 葛西旺, 陈宗海. 基于角点特征的KLT跟踪全景图像拼接算法[J]. 系统仿真学报, 2007, 19(8): 1742-1744.
[15]
Schmidt R A, Cathey W T. Optical representations for artificial intelligence problems[C]//O-E/lase'86 Symp, Los Angeles: SPIE, 1986: 226-233.
[16]
Wu X G, Luo L M. An improved method of optical flow estimation[J]. Acta Electronica Sinica, 2000, 28(1): 130-131.
吴新根, 罗立民. 一种改进的光流场计算方法[J]. 电子学报, 2000, 28(1): 130-131.
[17]
Liu D. parallel optimization for video moving object detection and tracking algorithm based on GPU[D]. Changsha: National University of Defense Technology, 2013.
刘丹. 视频运动目标检测与跟踪算法的GPU并行优化[D]. 长沙: 国防科学技术大学, 2013.
[18]
Cai R C, Xie W H, Hao Z F, et al. Abnormal crowd detection based on multi-scale recurrent neural network[J]. Journal of Software, 2015, 26(11): 2884-2896.
蔡瑞初, 谢伟浩, 郝志峰, 等. 基于多尺度时间递归神经网络的人群异常检测[J]. 软件学报, 2015, 26(11): 2884-2896.