Print

发布时间: 2018-12-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.180304
2018 | Volume 23 | Number 12




    图像分析和识别    




  <<上一篇 




  下一篇>> 





运动目标检测的ViBe算法改进
expand article info 杨丹, 戴芳
西安理工大学理学院数学系, 西安 710048

摘要

目的 目标检测在智能交通、自动驾驶以及安防监控中均有重要的地位,ViBe算法是常用的运动目标检测算法,它主要由背景模型初始化、前景检测、背景模型更新3部分组成,其思想简单,易于实现,运算效率高,但当初始帧有运动目标时,检测结果会出现“鬼影”现象,且易受噪声和光照变化影响,不能适应动态场景。同时,其逐帧逐像素进行前景检测,在计算复杂度方面有较大提升空间。为解决这些问题,提出一种改进的ViBe算法,称为ViBeImp算法。方法 在背景模型初始化时,用多帧平均法给出初始背景,采用该初始背景构建初始背景样本模型。在前景检测过程中,采用背景差分法、帧差法与OTSU算法相结合给出半径阈值的自适应计算方法。同时,根据背景差分法找出运动区域,只对运动区域进行前景判断和模型更新,降低算法的计算复杂度。结果 对25个不同场景视频分别给出ViBeImp算法在初始化背景,自适应半径阈值和计算复杂度方面改进的结果及有效性指标,实验结果表明,与ViBe、ViBeDiff2、ViBeIniR,以及Surendra等算法和高斯混合模型相比,ViBeImp算法对噪声、光照和背景动态变化有较好的鲁棒性,检测结果更完整,且实时性较好。同时,ViBeImp算法将ViBe算法的查准率、查全率以及${\rm{F}}1 $值分别提高了17.98%、11.40%和15.96%。结论 ViBeImp算法采用多帧平均法构建初始背景可有效地消除“鬼影”,并给出半径阈值的自适应计算方法,使ViBe算法更快适应视频环境变化,准确且完整地检测出运动目标,具有较低的误检率和漏检率。该方法克服了ViBe算法对初始背景以及视频环境的依赖,很大程度上提高了运算速度,具有很好的鲁棒性和适用性。

关键词

智能交通; 运动目标检测; ViBe算法; 自适应半径阈值; 背景差分法; 帧差法

Improved ViBe algorithm for detection of moving objects
expand article info Yang Dan, Dai Fang
Mathematics Department, School of Science, Xi'an University of Technology, Xi'an 710048, China

Abstract

Objective Effective detection of moving objects is a prerequisite in real-time tracking, behavior analysis, and behavioral judgment. Detection of moving objects has been widely applied in the fields of security, intelligent transportation, military, medical, and aerospace. Detection of moving objects is a key issue in the field of computer vision. The common methods used in the detection of moving objects include the optical flow, frame difference, and background subtraction methods. The optical flow method detects the moving region in the image sequence by using the vector feature of moving objects. This method performs well in the case of background motion. However, the computation of this method is complex and time consuming. The frame difference method uses the absolute value of difference between two adjacent frames to detect moving objects. The algorithm is simple and has good robustness. However, the detection results of this algorithm are easily affected by noises and is easy to produce "void". The background subtraction method is the most commonly used method in the detection of moving objects, in which the moving region is detected based on the difference between the current frame and background. The background subtraction method is simple, easy to implement, and can completely extract the object. The ViBe algorithm is a commonly used background subtraction method. This algorithm is mainly composed of background model initialization, foreground detection, and background model update, in which its concept is simple and easy to implement with high efficiency. However, a "ghost" phenomenon occurs in the ViBe algorithm when the initial frame contains moving objects and has the poor adaptability to noise, illumination, and dynamic environment. At the same time, the ViBe algorithm conducts foreground detection on each frame pixel-by-pixel, which has a large room for improvement regarding computational complexity. Thus, in this study, we improve the ViBe algorithm and propose the ViBeImp algorithm. Method In the ViBe algorithm, the construction of the background sample in the first frame of the video that contains the moving objects leads to the appearance of "ghost". Three solutions are used to solve this problem, where the first solution is by changing the manner of background model initialization, the second solution is by accelerating the elimination of the "ghost", and the third solution is by combining with other methods to detect the "ghost" areas and deal with them. The acceleration of elimination of the "ghost" does not fundamentally eliminate the "ghost" and still leads to false detection in the initial part of the "ghost". The combination with other methods in detecting the "ghost" increases the complexity and the amount of calculation of the algorithm. Therefore, we modify the initialization of the background model to eliminate the "ghost". In the ViBeImp algorithm, the initial background used for the initial background sampling model is given by a multi-frame average method, which can eliminate the "ghost" to some extent. Different calculation methods of radius threshold directly affect the performance of foreground detection. A suitable radius threshold can be used to adapt to the changes in light and dynamic scenes in the video, which can effectively reduce the occurrence of missed detection and false detection. Thus, in the process of foreground detection, a self-adaptive calculation method of radius threshold is given by combining the background subtraction method, frame difference method, and OTSU algorithm. At the same time, foreground detection and model update are conducted only in the motion area, which are obtained based on the background difference method to reduce the computational complexity of the algorithm. Result First, the detection results of the ViBeImp algorithm, ViBe algorithm, ViBeDiff2 algorithm, and ViBeIniR algorithm in 25 different scenes that are selected from several public datasets, such as MOTChallenge, CDNET, and ViSOR, are provided with their corresponding precision, recall, and F1 values. Second, the improved detection results and effectiveness of the ViBeImp algorithm in the initialization background, adaptive radius threshold, and computational complexity are given. The ViBeImp algorithm improves the precision, recall, and F1 value of the ViBe algorithm by 13.73%, 3.15%, and 9.44%, respectively, when the background initialization method differs from the ViBe algorithm. The ViBeImp algorithm improves the precision, recall, and F1 value of the ViBe algorithm by 11.14%, 10.09%, and 12.35%, respectively, when the radius threshold calculation method differs from the ViBe algorithm. In terms of computational complexity, the average processing times per frame of the four methods are given, and 19 videos' average processing time per frame of the ViBeImp algorithm is lower than the ViBe algorithm in the 25 videos, which shows the effectiveness of our improvement in computational complexity. Finally, the comparison among the ViBeImp algorithm, Surendra algorithm, and Gaussian mixture model, which are commonly used in the detection of moving objects, is given. The experimental results show that the ViBeImp algorithm is robust to noise, illumination, and dynamic environment with complete detection results and better performance in real-time compared with the ViBe algorithm, ViBeDiff2 algorithm, ViBeIniR algorithm, Surendra algorithm, and Gaussian Mixture Model. Simultaneously, the ViBeImp algorithm improves the precision, recall and F1 of the ViBe algorithm by 17.98%, 11.40%, and 15.96%, respectively. Conclusion The ViBeImp algorithm uses the multi-frame average method to construct the initial background that can effectively eliminate the "ghost". A self-adaptive calculation method of radius threshold is given, which enables the ViBe algorithm to rapidly adapt to the change of video environment and to accurately and completely detect the moving objects. The ViBe algorithm is a kind of algorithm with low false alarm and missed detection rates. The method overcomes the dependence of the ViBe algorithm on the initial background and video environment and reduces the computational complexity to a great extent with good robustness and applicability.

Key words

intelligent transportation; moving object detection; ViBe algorithm; self-adaptive radius threshold; background subtraction method; frame difference method

0 引言

运动目标的有效检测是目标实时跟踪、行为分析和行为判断的前提。运动目标检测已广泛应用于安防、智能交通、军事、医学以及航空航天等领域, 是计算机视觉领域的关键问题。

常用的运动目标检测方法有光流法、帧差法、背景差分法等。光流法[1]能够精确地计算出运动目标的速度且能处理目标旋转等情况, 但大多数情况下其计算复杂且对噪声敏感, 难以满足实时性要求。帧差法[2]对包含运动目标的场景有较强的鲁棒性, 运算速度快, 但其在目标检测时会出现“空洞”现象, 适用于简单的运动场景。背景差分法是应用最为广泛的目标检测方法, 算法比较简单, 计算量较小, 可以满足视频检测的实时性要求, 可检测出短时间静止的目标, 但其对外界环境变化非常敏感, 不适应背景噪声大或背景区域存在光照和位置变化等情况。实时建立和更新背景是背景差分法的关键。

背景差分法主要包括背景建模、背景更新和前景检测3个过程。背景建模是背景差分法的核心环节, 常用的背景建模方法有多帧平均法[3]、高斯混合模型[4]、码本法[5]和ViBe (visual background extractor)算法[6]等。多帧平均法[3]思想简单, 易于实现, 对场景中背景变化的适应性较好, 能在一定程度上消除“鬼影”, 但背景准确度低, 且不能实时更新。高斯混合模型[4]通常能够很好地适应复杂场景, 并通过模型参数的自动计算来调整背景模型, 但是其计算量随着高斯分布个数的增加而增加, 速度偏慢, 对光照敏感。码本法[5]可以适应一定的复杂场景, 但随着场景变化复杂度的增加, 所需码本中的码字也随之增加, 内存消耗相应地增加, 很难满足实时性要求。ViBe算法[6]不需要假定任何的概率模型, 检测精度高, 实时性较好, 内存占用少。ViBe算法通过一帧完成背景样本的构建, 但当第一帧中含有前景目标的情况下会导致“鬼影”现象, 且该算法中4个阈值(样本集大小$N$、半径阈值$R$、个数匹配阈值$T$以及时间下采样参数$\phi $)均采用经验值, 不能及时反映场景变化, 影响检测结果, 对动态场景适应性差, 对光照突变适应缓慢, 易产生目标丢失。同时, 虽然ViBe算法运算速度较快, 但其在前景判断时逐帧逐像素进行运算, 在计算复杂度方面有提升空间。

针对ViBe算法通过一帧完成背景样本构建在初始帧含有前景目标的情况下会导致“鬼影”的出现, 目前有3种解决方法。一种是改变背景模型的初始化方式, 一种是加快“鬼影”的消除, 另一种是与其他方法相结合检测出“鬼影”, 再对其进行处理。关于改变背景模型的初始化方式, 文献[7]采用帧间差分获得初始背景, 再用该背景构建ViBe算法的初始背景样本模型, 但帧间差分对动态环境敏感且易产生“空洞”, 使得建立的初始背景中含有较多的噪声以及部分运动目标, 并不能完全消除“鬼影”。文献[8]先采用视频第一帧初始化背景样本集, 再将前$m$ ($m$取值为10)帧中出现频率相对高的像素点放入背景模型中, 避免噪声和运动物体对背景模型的影响, 但该算法对前$m$帧逐像素与对应位置样本集对比判断其是否相似, 使得样本模型构建时间大量增加, 且在此过程中引入两个均取经验值的阈值, 这使得该方法并不能完全适应不同的视频动态场景, 虽可以在一定程度上消除“鬼影”, 但初始背景模型中仍存在运动目标。文献[9]为背景模型的每个像素建立5个大小为2的背景样本集, 用前20帧的像素信息对多个背景样本进行不断的学习与更新, 选取权重较大的前几个背景样本作为构建最终样本集合的可信背景样本。该方法采用学习的方法构建初始背景模型。虽构建的背景模型相对可靠, 但其学习过程相对耗时, 且其中的参数均取经验值, 并不能适应不同的场景。

针对“鬼影”的检测与处理, 另一种方法是找出“鬼影”, 再对其处理。文献[10]用第1帧初始化背景模型, 用第2帧与背景模型进行对比检测出运动区域, 根据运动区域面积大小, 判断并找出“鬼影”区域, 并对“鬼影”区域逐像素重新初始化, 直至“鬼影”区域完全被初始化。文献[11]利用改进的Canny算子检测边缘和ViBe算法相融合, 文献[12]将改进的Sobel算法与ViBe算法相结合, 文献[13]根据局部区域像素值的方差判断一块区域是“鬼影”区域还是静止目标区域, 来检测“鬼影”并进行有效的处理。但与其他方法相结合增加了算法的复杂度, 使得算法计算量增大。

针对ViBe算法中4个阈值(样本集大小$N$、半径阈值$R$、匹配阈值$T$以及时间下采样参数$\phi $)均采用经验值, 不能及时反映场景变化, 文献[8]提出自适应的聚类阈值计算方法。该算法定义了一个场景动态变化因子, 将半径阈值$R$与动态变化因子相结合, 通过判断半径阈值$R$与动态变化因子的大小关系, 给半径阈值加或者减去动态变化因子。同时, 根据动态变化因子的大小, 对时间采样因子加或者减去动态变化因子, 进而控制样本的更新程度。文献[9]定义一个新的变量(像素的差异个数)表征区域复杂度, 用该复杂度重新构造分类阈值$R$、个数匹配阈值$T$和时间下采样参数$\phi $的自适应计算方法。文献[14]将背景差分算法与ViBe算法相融合进行目标检测。利用当前帧与背景样本集对比获取掩码构建一个背景帧, 再用当前帧与背景帧做差, 差分图像采用OTSU算法求出前景提取的动态阈值, 用该阈值获取前景图像。该算法对光照突变和抑制室内运动目标阴影有较好的效果, 但并未对初始帧含有运动目标时的“鬼影”现象进行处理, 且并未实现参数的自适应取值。文献[15]针对ViBe算法采用全局固定半径阈值$R$, 不能很好地适应动态环境, 提出用当前像素和其邻域像素的标准差表示背景动态变化获得自适应半径阈值。以上几个算法虽在一定程度上实现了半径阈值的自适应计算, 但在其计算过程中引入了其他固定阈值, 并未完全实现半径阈值的自适应计算。文献[16]用视频当前帧与背景帧差分, 采用OTSU算法计算图像的分割阈值来检测运动目标, 但因背景差分对光照和环境变化敏感, 并不能完全适应动态环境。

本文提出一种改进的ViBe算法(记为ViBeImp算法), 用多帧平均法获取初始背景, 通过该初始背景构建ViBe算法初始化模型, 可在一定程度上消除“鬼影”; 结合背景差分法、帧差法与OTSU算法给出半径阈值$R$的自适应计算方法, 以提高算法对外界动态环境以及光照变化的适应性; 同时, 提出只对运动目标区域进行前景判断和模型更新, 将背景差分法与ViBe算法相结合, 降低了算法的计算复杂度。

1 ViBe算法

ViBe算法, 也称视觉背景提取算法, 是Barnich等人在2009年提出的一种全新的背景差分算法[6]。随后, Barnich等人在文献[17-18]中给出ViBe算法的详细过程以及与其他算法的对比结果。ViBe算法是一种快速的像素级前景检测算法。该算法为每个像素创建一个背景样本, 采用随机选择策略初始化背景样本, 通过对比当前像素及其背景样本来确定该像素属于前景还是背景, 并用随机更新和邻域扩散机制更新背景样本。其具体过程如下:

1) 背景初始化。选取视频第一帧为初始背景${\mathit{\boldsymbol{B}}_{\rm{0}}}$, 对${\mathit{\boldsymbol{B}}_{\rm{0}}}$的每一个像素$\left( {x, y} \right)$建立一个大小为$N$的样本集$\mathit{\boldsymbol{M}}\left( {x, y} \right) = \left\{ {{v_1}, {v_2}, \cdots, {v_n}} \right\}$, 其中, ${v_i}$$\left( {x, y} \right)$的8邻域随机采样值, $i = 1, 2, \cdots, N$。ViBe算法中$N$取经验值20。

2) 对第$i$帧图像${f_i}, i = 2, 3, \cdots, nF, nF$表示视频帧数, 对每一个像素进行以下处理:

(1) 判断当前像素$\left( {x, y} \right)$是否为背景。ViBe算法通过计算当前位置像素$\left( {x, y} \right)$与其对应样本集的相似程度来判断当前像素是否为背景, 具体计算为

$ cn{t_j} = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} 1\\ 0 \end{array}&\begin{array}{l} dis\left( {{f_i}\left( {x,y} \right),{v_j}} \right) < R\\ 其他 \end{array} \end{array}} \right. $ (1)

式中, $j = 2, 3, \cdots, N$, $dis\left( {{f_i}\left( {x, y} \right), {v_j}} \right)$表示第$i$帧图像${f_i}$$\left( {x, y} \right)$处的像素值与其对应的背景样本集元素${{v_j}}$的欧氏距离, $R $为半径阈值取经验值20。第$ i$帧图像${{f_i}}$${\left( {x, y} \right)}$处的二值化结果为

$ D{B_i}\left( {x,y} \right) = \left\{ \begin{array}{l} 0\;\;\;\;\sum\limits_{j = 1}^N {cn{t_j}} \ge T\\ 1\;\;\;\;\;其他 \end{array} \right. $ (2)

式中, $T$表示个数匹配阈值, 取经验值2。

(2) 当前像素${\left( {x, y} \right)}$为背景像素(即$D{B_i}\left( {x, y} \right) = 0$)时, 进行背景更新。ViBe算法以$1/\phi \;$($\phi $取经验值16)的概率进行背景更新, 背景更新分为当前样本集更新和邻域更新两部分。

样本集更新, 用当前像素$\left( {x, y} \right)$的像素值${{f_i}\left( {x, y} \right)}$替换其对应的背景样本集$\mathit{\boldsymbol{M}}\left( {x, y} \right)$中随机选取的一个样本${v_{id}}$, 即

$ {v_{id}} = {f_i}\left( {x,y} \right) $ (3)

式中, $id \in \left\{ {1, 2, \cdots, \mathit{N}} \right\}$为从1到$ N$随机选取的值。

邻域更新, 在${\left( {x, y} \right)}$的8邻域随机选取一个位置$\left( {{x_{{\rm{1c}}}}, {y_{{\rm{1c}}}}} \right)$, 再在该位置对应的背景样本集$M\left( {{x_{{\rm{1c}}}}, {y_{{\rm{1c}}}}} \right)$中随机选取一个样本${v_{idl}}$, 用当前像素进行替换, 即

$ {v_{idl}} = {f_i}\left( {x,y} \right) $ (4)

2 改进的ViBe算法

针对ViBe算法采用视频的第1帧图像完成背景样本模型的初始化, 容易产生“鬼影”现象, 同时, 采用全局固定半径阈值$R$(取经验值20)进行前景提取, 不能及时反映场景变化的问题, 本文采用多帧平均法构建初始背景, 再进行背景样本模型建模来消除“鬼影”现象, 给出自适应半径阈值$R$的计算方法, 同时, 提出只对运动区域进行前景判断和模型更新, 将背景差分法与ViBe算法相结合, 降低算法的计算复杂度。本文改进的ViBe算法(称为ViBeImp算法)具体过程如下:

1) 背景初始化。用多帧平均法选取视频前25帧构建初始背景${B_{\rm{0}}}$, 对${B_{\rm{0}}}$的每一个像素${\left( {x, y} \right)}$建立一个大小为$N $的样本集$ \mathit{\boldsymbol{M}}\left( {x, y} \right) = \left\{ {{v_1}, {v_2}, \cdots, {v_n}} \right\}$, 其中, ${v_i} $$\left( {x, y} \right)$的8邻域随机采样值, $\;i = 1, 2, \cdots, N, N$取经验值20。

2) 对第$ i$帧图像${\mathit{\boldsymbol{f}}_i}\left( {i = 2, 3, \cdots, nF} \right)$进行计算

$ T{B_i} = {F_{{\rm{OTSU}}}}\left( {{\rm{abs}}\left( {{\mathit{\boldsymbol{f}}_i} - {\mathit{\boldsymbol{B}}_{rd}}} \right)} \right) $ (5)

$ In{f_i}\left( {x,y} \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} 1\\ 0 \end{array}&\begin{array}{l} {f_i}\left( {x,y} \right) \ge T{B_i}\\ 其他 \end{array} \end{array}} \right. $ (6)

$ T{F_i} = {F_{{\rm{OTSU}}}}\left( {{\rm{abs}}\left( {{\mathit{\boldsymbol{f}}_i} - {\mathit{\boldsymbol{f}}_{i - 1}}} \right)} \right) $ (7)

$ {R_i} = \alpha \cdot T{F_i} + \left( {1 - \alpha } \right) \cdot T{B_i} $ (8)

式中, ${\mathit{\boldsymbol{B}}_{\mathit{rd}}}$表示选取每个样本集中第$rd$个样本构成的背景, $rd$为从$\left\{ {1, 2, \cdots, \mathit{N}} \right\} $中随机选取的值, ${F_{{\rm{OTSU}}}}\left( \cdot \right)$表示采用${{\rm{OTSU}}}$方法计算的前景和背景分割阈值, $ T{B_i}$表示用${{\rm{OTSU}}}$算法计算背景差分结果的分割阈值, $In{f_i}\left( {x, y} \right)$表示第$ i$帧图像在$\left( {x, y} \right)$处的二值化结果, $ T{F_i}$表示用${{\rm{OTSU}}}$算法计算帧差结果的分割阈值, ${R_i} $表示第$ i$帧半径阈值$R $的取值, $ \alpha $为加权系数, 取经验值0.78。如果$In{f_i}\left( {x, y} \right) = 1$, 则进行以下处理:

(1) 判断当前像素$\left( {x, y} \right)$是否为背景。通过计算当前位置像素$\left( {x, y} \right)$与其对应样本集的相似程度来判断当前像素是否为背景, 具体计算为

$ \begin{array}{*{20}{c}} {cn{t_j} = }\\ {\left\{ {\begin{array}{*{20}{c}} \begin{array}{l} 1\\ 0 \end{array}&\begin{array}{l} dis\left( {{f_i}\left( {x,y} \right),{v_j}} \right) < {R_i}\\ 其他 \end{array} \end{array},j = 2,3, \cdots ,N} \right.} \end{array} $ (9)

$ D{B_i}\left( {x,y} \right) = \left\{ \begin{array}{l} 0\;\;\;\;\sum\limits_{j = 1}^N {cn{t_j}} \ge T\\ 1\;\;\;\;\;其他 \end{array} \right. $ (10)

(2) 当前像素$\left( {x, y} \right)$为背景像素(即$D{B_i}\left( {x, y} \right) = 0 $)时, 以$1/\phi $($\phi $取经验值16)的概率进行背景更新, 背景更新分为当前样本集更新和邻域更新两部分。

样本集更新, 用当前像素${\left( {x, y} \right)}$的像素值${{f_i}\left( {x, y} \right)}$替换其对应的背景样本集$ \mathit{\boldsymbol{M}}\left( {x, y} \right)$中随机选取的一个样本${v_{id}}$, 即

$ {v_{id}} = {f_i}\left( {x,y} \right) $ (11)

邻域更新, 在$\left( {x, y} \right) $的8邻域随机选取一个位置$ \left( {{x_{{\rm{1c}}}}, {y_{{\rm{1c}}}}} \right)$, 再在该位置对应的背景样本集$ M\left( {{x_{{\rm{1c}}}}, {y_{{\rm{1c}}}}} \right)$中随机选取一个样本${v_{idl}}$, 用当前像素进行替换, 即

$ {v_{idl}} = {f_i}\left( {x,y} \right) $ (12)

3 实验结果与分析

3.1 ViBeImp算法有效性验证

为了测试本文改进算法ViBeImp的有效性, 分别选取不同的视频场景, 包括初始帧有运动目标的视频“Car2”和“AVG-TownCentre”, 有光照变化的“viptraffic”视频, 有背景和光照变化的“house”和“highway”视频, 测试对比ViBe算法、ViBeIniR算法(文献[8]改进背景初始化方法以及半径阈值$R$的计算方法)、ViBeDiff2算法(文献[7]用帧差法计算初始背景)和本文改进的ViBeImp算法, 检测结果见图 1图 5

图 1 “AVG-TownCentre”视频中部分帧的检测结果
Fig. 1 Moving targets detection results of partial frames in "AVG-TownCentre"
((a)frames of the video; (b)ViBe; (c)ViBeIniR; (d)ViBeDiff2;(e)ViBeImp)
图 2 “Car2”视频中部分帧的检测结果
Fig. 2 Moving targets detection results of partial frames in "Car2"
((a)frames of the video; (b)ViBe; (c)ViBeIniR; (d)ViBeDiff2;(e)ViBeImp
图 3 “viptraffic”视频中部分帧的检测结果
Fig. 3 Moving targets detection results of partial frames in "viptraffic"
((a)frames of the video; (b)ViBe; (c)ViBeIniR; (d)ViBeDiff2;(e)ViBeImp)
图 4 “highway”视频中部分帧的检测结果
Fig. 4 Moving targets detection results of partial frames in "highway"
((a)frames of the video; (b)ViBe; (c)ViBeIniR; (d)ViBeDiff2;(e)ViBeImp)
图 5 “house”视频中部分帧的检测结果
Fig. 5 Moving targets detection results of partial frames in "house"
((a)frames of the video; (b)ViBe; (c)ViBeIniR; (d)ViBeDiff2;(e)ViBeImp)

图 1中, “AVG-TownCentre”视频初始帧含有运动目标, 且整个视频目标数较多。对比各算法的检测结果可以看出, ViBe算法、ViBeIniR算法、ViBeDiff2算法的结果均出现明显的多检(例如, 第17帧和33帧绿框标记位置), ViBeIniR算法的检测结果虽较完整, 但含有较多的噪声, ViBeDiff2算法的检测结果中出现明显的漏检(例如, 第3帧和第173帧绿框标记位置), 而本文ViBeImp算法可以较完整地检测出运动目标, 噪声少, 且没有出现多检和漏检现象。

图 2中, “Car2”视频在视频初始帧有运动目标, 4种算法在初始帧均出现目标漏检, 但ViBe算法和ViBeDiff2算法几乎检测不到运动目标, ViBeIniR算法检测出的运动目标不如ViBeImp算法的完整(例如, 第2帧绿框标记位置)。同时, ViBe算法、ViBeIniR算法、ViBeDiff2算法的检测结果在视频后续帧处出现明显的假目标(例如, 第22、31、52帧中绿框标记位置)。在第119帧, 因车辆与背景颜色接近, ViBe算法和ViBeDiff2算法出现漏检, 且在绿框标记位置, ViBe算法、ViBeIniR算法和ViBeDiff2算法虽均可以检测出运动目标, 但ViBe算法和ViBeDiff2算法所检测的车辆不完整, ViBeIniR算法检测的目标虽较完整, 但出现较多噪声, 且与真实车辆形状并不相符。对比而言, 本文ViBeImp算法几乎没有多检, 相对较少的漏检, 噪声少, 且检测结果与真实目标更接近。

分析图 3可知, ViBe算法、ViBeIniR算法、ViBeDiff2算法均对光照比较敏感, 其中ViBeIniR算法未发生光照变化时, 可以完整地检测出运动目标, 且基本不含噪声(例如, 第17帧), 但当发生光照变化时, 因其对光照变化太敏感, 根本无法检测出任何目标。ViBe算法和ViBeDiff2算法对光照变化适应能力强于ViBeIniR算法, 但其在部分帧中受光照影响太严重, 几乎无法检测出目标(例如, 第44帧、78帧)。相对比而言, 本文ViBeImp算法对环境变化鲁棒性较好, 且在第26、39、99帧, ViBeIniR2算法无法检测出运动目标, ViBe算法和ViBeDiff2算法检测噪声较多的情况下, 可以几乎完整地检测出运动目标, 没有出现多检或漏检, 检测结果较为准确, 且更接近真实情况。

图 4“highway”视频因为有风的原因, 背景一直有微小变动。在视频初始部分目标车辆出现, 但车辆刚好处在阴影中, 与背景颜色接近, ViBe算法和ViBeDiff2算法均出现明显的漏检, ViBeIniR算法和ViBeImp算法均检测出目标, 但前者并没有后者检测的目标完整(例如, 图中第4帧绿框标记位置)。ViBeIniR算法因用帧差法初始化构建初始背景, 帧差法对动态环境和噪声敏感, 所以检测结果中含有较多的噪声和部分道路, ViBe算法和ViBeDiff2算法虽能较好地检测出目标, 但在部分帧中检测结果仍包含较多的噪声(例如, 第277帧和第385帧)。且ViBe算法在第277帧, 出现目标丢失(绿框标记位置)。对比而言, ViBeImp算法可以很好地适应背景动态环境变化, 检测结果中几乎不包含噪声, 且检测与真实车辆十分接近(例如, 第154帧中车窗位置)。

图 5“house”视频中有较大的风和光照变化, 因此, 背景中树叶和草一直在晃动, 且在部分时刻有光照变化。在第1 020、1 037、1 051帧有光照变化,从图 5中可以看出, ViBe算法、ViBeIniR算法和ViBeDiff2算法受光照和背景变化影响, 均产生较大的噪声, 而ViBeImp算法对环境变化有较好的鲁棒性, 检测的目标比较完整, 检测结果较为准确。

本文采用查准率($ P$)、查全率($R $)和${\rm{F}}1 $值参数(查准率和查全率的调和平均值)作为定量评价指标, 其计算公式为

$ P = \frac{{TP}}{{TP + FP}} $

$ R = \frac{{TP}}{{TP + FN}} $

$ {\rm{F1}} = \frac{{2PR}}{{P + R}} $

式中, $TP $表示正确检测出的运动目标数目, $FP $表示错误检测出的非运动目标数目, $FN $表示未检测出的运动目标数目。图 6给出4种算法在25个不同场景视频测试的3种评价指标的平均值。

图 6 4种算法不同评价指标对比
Fig. 6 The average precision, recall and F1 of four algorithms

图 6中可以看出, ViBeIniR算法、ViBeDiff2算法和本文ViBeImp算法均很大程度上提高了ViBe算法的查准率, 但本文ViBeImp算法查准率最高。ViBeIniR算法和ViBeDiff2算法在查全率方面相差不大, 均略高于ViBe算法, 而本文ViBeImp算法明显提高了查全率。对比, 4种算法的${\rm{F}}1 $值, ViBeIniR算法、ViBeDiff2算法和ViBeImp算法的${\rm{F}}1 $值均明显优于ViBe算法, 本文ViBeImp算法${\rm{F}}1 $值最高, 结果最优。综合而言, 本文ViBeImp算法在查全率、查准率以及${\rm{F}}1 $值方面均为最优, 明显提高了ViBe算法的综合性能。

下面给出本文ViBeImp算法在初始化背景、自适应半径阈值和计算复杂度方面改进的结果及有效性分析。

3.2 改进初始化背景结果对比

比较针对“鬼影”现象的处理方法, 可以看出改变背景模型的初始化方法最为可靠, 因此本文采用改变背景模型的初始化方法对“鬼影”现象进行处理。用其他方法初始化一个背景, 根据该背景初始化ViBe算法的背景样本模型, 该方法的效果很大程度上依赖于所选取的背景初始化方法。ViBeDiff2算法采用帧间差分方法计算初始背景, ViBeIniR算法先同ViBe算法一样用视频第1帧初始化背景样本模型, 再寻找替换该背景样本模型中可能为前景的像素点。考虑到多帧平均法同样是背景建模的一种方法, 且在一定程度上可以有效地解决“鬼影”问题, 因此本文采用多帧平均法(25帧)获得初始背景。为与ViBeDiff2算法和ViBeIniR算法的初始化背景方法相对比, 分别选取“AVG-TownCentre”和“Car2”视频进行测试, 给出4种初始化方法建立的初始背景和其对应的检测结果(图 7图 11)。

图 7 “Car2”视频4种算法建立的初始背景
Fig. 7 Different initial background of four algorithms in "house"((a)ViBe; (b)ViBeDiff2;(c)ViBeIniR; (d)ViBeImp)
图 8 “Car2”视频中部分帧的检测结果
Fig. 8 Moving targets detection results with different initial background in "Car2"
((a)frames of the video; (b)ViBe; (c)ViBeDiff2;(d)ViBeIniR; (e)ViBeImp)
图 9 “AVG-TownCentre”视频4种算法的初始背景
Fig. 9 Different initial background of four algorithms in "AVG-TownCentre"((a)ViBe; (b)ViBeDiff2;(c)ViBeIniR; (d)ViBeImp)
图 10 “AVG-TownCentre”视频中部分帧的检测结果
Fig. 10 Moving targets detection results with different initial background in "AVG-TownCentre"
((a)frames of the video; (b)ViBe; (c)ViBeDiff2;(d)ViBeIniR; (e)ViBeImp)
图 11 不同背景初始化方式下4种算法不同评价指标对比
Fig. 11 The average precision, recall and F1 of four algorithms with different initial background

图 7图 11分别为4种算法对“Car2”和“AVG-TownCentre”视频构建的初始背景和相对应的检测结果, 图 7图 9为建立的初始背景, 图 8图 10为相对应的检测结果, 图 8图 10中, 4种算法除采用不同的背景初始化方法外, 均与原ViBe算法相同。

图 7图 9可以看出, 当视频第1帧含有运动目标时, ViBeIniR算法优于ViBeDiff2算法构建的初始背景, ViBe算法构建的初始背景包含的运动目标最多, ViBeImp算法构建的初始背景在4种方法中最优。

图 8图 10分别给出4种算法在两个视频中部分帧的检测结果。从图 8可以看出, ViBeDiff2算法虽能在一定程度上减弱“鬼影”, 但并不能完全消除“鬼影”(绿框标记位置)。ViBeIniR算法和ViBeImp算法可明显消除“鬼影”, 但ViBeIniR算法在部分帧出现目标丢失(第6帧绿框标记位置), 且检测出的目标很微弱, 很难辨识是噪声还是目标。从图 10中可以看出, 在视频第2、37和115帧(绿框标记位置), ViBeDiff2算法和ViBeIniR算法出现明显的漏检, 第10帧中ViBe算法和ViBeDiff2算法出现明显的多检, 同时ViBeIniR算法几乎未检测出目标。对比而言, 本文ViBeImp算法可以很好地消除“鬼影”现象, 且未出现目标丢失。因此, 本文采用多帧平均法得到初始背景, 并用该背景构建初始样本模型是十分有效的。

同时, 图 11给出以上采用不同的背景初始化方法的4种算法在25个不同场景视频测试的3种评价指标查准率、查全率和${\rm{F}}1 $值。

4种不同背景初始化方法对“鬼影”的处理效果可以通过查准率看出, 当有“鬼影”出现, 会导致多检, 从而查准率值偏低。由图 11可以看出, ViBe算法的查准率最低, ViBeDiff2算法和ViBeIniR算法在查准率方面均有所提高, 但提高的幅度没有ViBeImp算法大, 对比可以看出, 本文采用多帧平均初始化背景的方法对“鬼影”处理是非常有效的。

3.3 自适应半径阈值的有效性分析

不同半径阈值的计算方法, 直接影响目标前景判断步骤, 合适的半径阈值能适应光线和动态场景的变化, 可以有效地减少漏检和多检现象。为验证本文自适应半径阈值$ R$计算方法的有效性, 在有光照变化、树叶有微小晃动情况的视频“viptraffic”和“highway”测试4种方法, 对比ViBe算法半径阈值$ R=20$, ViBeIniR算法根据动态变化因子对半径阈值进行调整, 文献[16]用背景差分与OTSU结合计算半径阈值$ R$的检测结果(记为ViBeBgR算法), 以及本文自适应计算半径阈值$ R$的检测结果, 见图 12图 13。4种算法除阈值$R $的计算方法不同以外, 其余过程均与ViBe算法相同。

图 12 “viptraffic”视频中部分帧的检测结果
Fig. 12 Moving targets detection results of partial frames in "viptraffic"
((a)frames of the video; (b)ViBe; (c)ViBeIniR; (d)ViBeBgR; (e)ViBeImp)
图 13 “house”视频中部分帧的检测结果
Fig. 13 Moving targets detection results of partial frames in "house"
((a)frames of the video; (b)ViBe; (c)ViBeIniR; (d)ViBeBgR; (e)ViBeImp)

图 12中可以看出, ViBeIniR算法检测结果最差, 几乎不能检测出运动目标, 对比ViBe算法和ViBeBgR算法的检测结果可以看出, 当第41、42、43帧发生光照变化时, ViBe算法检测的目标包含大量的噪声, 且已不能分辨出车辆形状, 其余时刻虽能检测出运动目标, 但检测结果中含有噪声, 且车辆边缘噪声多, ViBeBgR算法在第41、43帧含有较多的噪声, 不能提取运动目标。对比而言, 本文算法不仅能适应光照变化情况, 检测出的目标更“干净”, 且检测结果更接近真实目标(绿框标记位置)。

图 13中可以看出, ViBeIniR算法对动态环境十分敏感, 检测结果中噪声最多。对比ViBe算法、ViBeBgR算法和ViBeImp算法, ViBeBgR算法的噪声明显少于ViBe算法, 但仍包含较多的噪声, ViBeImp算法检测结果几乎不包含噪声, 且与真实目标更接近。对比可以看出ViBeImp算法在半径阈值$ R$计算方面的有效性。

图 14给出以上用不同半径阈值$R $计算方法的4种算法在25个不同场景视频测试的3种评价指标的对比图。

图 14 不同半径阈值计算方式下4种算法不同评价指标对比
Fig. 14 The average precision, recall and F1 of four algorithms with different radius threshold

对比图 14可以看出, 在查全率和查准率方面, 本文ViBeImp算法优于ViBe算法、ViBeIniR算法和ViBeBgR算法。同时, 对比综合考虑查全率和查准率的${\rm{F}}1 $值, 本文ViBeImp算法${\rm{F}}1 $值高于其他3种算法。综合而言, 本文采用的自适应计算半径阈值$R $的方法十分有效。

3.4 计算复杂性分析

ViBe算法逐帧逐像素判断当前像素是背景还是前景, 但在静态摄像所得视频场景中, 相邻两帧除了运动目标、环境变化和噪声以外, 大部分像素未发生变动, 不需要重新计算, 只有部分区域可能存在变动, 需要重新判断其为前景还是背景。因此, 本文考虑在ViBe算法中融入背景差分法, 先通过当前帧与当前背景差分获得运动区域, 再对运动区域所对应的当前帧位置逐像素判断其是否为背景, 降低算法的计算复杂度。

图 15给出了4种算法的运行时间对比结果, 本文实验环境配置为Intel(R) Core(TM) i7-4790 CPU@3.60 Hz 3.60 GHz, 内存为8 GB, 操作系统为Windows 7, 开发环境为MATLAB R2014a。计算4种算法分别在各个视频场景下的平均每帧处理时间, 以ViBe算法为依据按照平均每帧处理时间从小到大对25个视频进行排序, 以视频名为横轴, 平均每帧处理时间为纵轴, 分别绘制4种算法在25个不同视频场景的平均每帧处理时间折线图。

图 15 4种算法平均每帧处理时间对比
Fig. 15 The average processing time per frame of four algorithms

图 15可以看出, ViBeIniR算法平均每帧处理时间最长, 数值远高于其他3种算法。ViBe算法与ViBeDiff2算法平均每帧处理时间数值十分相近, 对比而言本文ViBeImp算法较有优势, 但因ViBeIniR算法数值偏大, 使得ViBe算法和本文ViBeImp算法数值结果对比不明显, 较难在图 15中看出两者的差别, 因此图 16中给出了ViBe算法和本文ViBeImp算法的平均每帧处理时间对比。

图 16 ViBe算法和ViBeImp算法平均每帧处理时间对比
Fig. 16 The average processing time per frame of ViBe and ViBeImp

图 16中可以看出, 相比ViBe算法, ViBeImp算法在时间上较有优势, 在大多数时刻ViBeImp算法的平均每帧处理时间均低于ViBe算法, 虽在个别视频ViBeImp算法时间略高于ViBe算法, 但两者数值相差不大。对比而言本文ViBeImp算法在运行时间方面有一定优势。

3.5 ViBeImp算法的适用性

为了测试本文改进算法ViBeImp算法的有效性, 选取“viptraffic”视频, 测试对比Surendra算法[19]、高斯混合模型(GMM)[4]和本文改进的ViBeImp算法, 检测结果见图 17

图 17 “viptraffic”视频中部分帧的检测结果
Fig. 17 Moving targets detection results of partial frames in "viptraffic"
((a)frames of the video; (b)Surendra; (c)GMM; (d)ViBeImp)

分析图 17可知, Surendre和GMM算法均对光照敏感, 当视频中有光照变化时, 例如在第39、46帧, Surendre算法出现明显漏检, GMM检测结果虽优于Surendre算法, 但检测结果中包含较多的噪声, 几乎无法检测出目标。第32帧Surendre算法出现明显漏检, GMM和ViBeImp算法均可较完整地检测目标, 但后者检测结果更接近真实目标(例如第32帧绿框标记车辆的车窗位置)。第72帧中, 相比于GMM算法, Surendre和ViBeImp算法检测结果更接近真实目标, 例如第72帧绿框标记位置。对比而言, ViBeImp算法对环境变化的鲁棒性明显优于Surendra算法和高斯混合模型, 未出现多检和漏检, 且检测结果更接近真实目标。

4 结论

本文针对ViBe算法在检测运动目标时, 当初始帧有运动目标时易出现“鬼影”现象, ViBe算法在前景提取时, 采用全局固定半径阈值$R $易受噪声光线变化影响不能适应动态场景, 以及ViBe算法计算复杂度可提升的问题, 提出了改进的ViBe算法, 即ViBeImp算法。在初始背景样本模型构建之前, 先采用多帧平均法给出初始背景, 采用该初始背景构建初始背景样本模型, 在前景提取过程中, 采用背景差分法、帧差法与OTSU算法相结合给出半径阈值$R $的自适应计算方法, 并采用背景差分法找出运动区域, 只对运动区域进行前景判断和模型更新, 很大程度上降低了算法的计算复杂度。实验结果表明, 与ViBe算法和其他改进算法ViBeIniR算法和ViBeDiff2算法, 以及运动目标检测算法中的Surendra算法和高斯混合模型相比, 本文提出的ViBeImp算法对光线, 噪声和背景动态变化有较好的鲁棒性, 检测结果更完整, 且实时性较好, 具有很好的适用性。

参考文献

  • [1] Barron J L, Fleet D J, Beauchemin S S. Performance of optical flow techniques[J]. International Journal of Computer Vision, 1994, 12(1): 43–77. [DOI:10.1007/BF01420984]
  • [2] Jain R, Nagel H H. On the analysis of accumulative difference pictures from image sequences of real world scenes[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1979, PAMI-1(2): 206–214. [DOI:10.1109/TPAMI.1979.4766907]
  • [3] Rostamianfar O, Janabi-Sharifi F, Hassanzadeh I. Visual tracking system for dense traffic intersections[C]//Proceedings of 2006 Canadian Conference on Electrical and Computer Engineering. Ottawa, Ont., Canada: IEEE, 2006: 2000-2004.[DOI: 10.1109/CCECE.2006.277838]
  • [4] Stauffer C, Grimson W E L. Adaptive background mixture models for real-time tracking[C]//Proceedings of 1999 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Fort Collins, CO, USA: IEEE, 1999: 2-252.[DOI: 10.1109/CVPR.1999.784637]
  • [5] Kim K, Chalidabhongse T H, Harwood D, et al. Real-time foreground-background segmentation using codebook model[J]. Real-Time Imaging, 2005, 11(3): 172–185. [DOI:10.1016/j.rti.2004.12.004]
  • [6] Barnich O, Van Droogenbroeck M. ViBE: a powerful random technique to estimate the background in video sequences[C]//Proceedings of 2009 IEEE International Conference on Acoustics, Speech and Signal Processing. Taipei, Taiwan: IEEE, 2009: 945-948.[DOI: 10.1109/ICASSP.2009.4959741]
  • [7] Xiao Q L, Liang C, Zhou H Y. Ship detection and tracking based on improved ViBe algorithm[J]. China Water Transport, 2016, 16(12): 85–87. [肖琦隆, 梁川, 周虹宇. 基于改进ViBe算法的船舶检测与追踪[J]. 中国水运月刊, 2016, 16(12): 85–87. ]
  • [8] Qi Y, Cao R. Improved visual background extractor ViBe algorithm for detecting objects[J]. Computer Engineering and Applications, 2016, 52(23): 203–207. [齐悦, 曹锐. 改进视觉背景提取ViBe算法的目标检测[J]. 计算机工程与应用, 2016, 52(23): 203–207. ] [DOI:10.3778/j.issn.1002-8331.1606-0092]
  • [9] Guo C Y, Du H M, Jiang B B, et al. Research on key technology of visual background extractor algorithm[J]. Application Research of Computers, 2017, 34(5): 1548–1552, 1589. [郭冲宇, 杜慧敏, 蒋忭忭, 等. 视觉背景提取算法关键技术研究[J]. 计算机应用研究, 2017, 34(5): 1548–1552, 1589. ] [DOI:10.3969/j.issn.1001-3695.2017.05.061]
  • [10] Cheng K Y, Hui K F, Zhan Y Z, et al. A novel improved ViBe algorithm to accelerate the ghost suppression[C]//Proceedings of the 12th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery. Changsha, China: IEEE, 2016: 1692-1698.[DOI: 10.1109/FSKD.2016.7603432]
  • [11] Jin D L, Zhu S H, Sun X, et al. Fusing canny operator with vibe algorithm for target detection[C]//Proceedings of 2016 Chinese Control and Decision Conference. Yinchuan, China: IEEE, 2016: 119-123.[DOI: 10.1109/CCDC.2016.7530965]
  • [12] Zhang Y J, Zhao X G, Tan M. Motion detection based on improved Sobel and ViBe algorithm[C]//Proceedings of the 35th Chinese Control Conference. Chengdu, China: IEEE, 2016: 4143-4148.[DOI: 10.1109/ChiCC.2016.7553999]
  • [13] Wu E J, Yang Y F, Tian Z H, et al. An improved ViBe algorithm for restraining ghost and stay object[J]. Journal of Hefei University of Technology, 2016, 39(1): 56–61. [吴尔杰, 杨艳芳, 田中贺, 等. 一种能快速抑制鬼影及静止目标的ViBe改进算法[J]. 合肥工业大学学报(自然科学版), 2016, 39(1): 56–61. ] [DOI:10.3969/j.issn.1003-5060.2016.01.011]
  • [14] Wu J H, Xu B. Vibe moving object detection method based on dynamic threshold[J]. Computer Engineering and Applications, 2017, 53(11): 182–186. [吴建胜, 徐博. 动态阈值的Vibe运动目标检测[J]. 计算机工程与应用, 2017, 53(11): 182–186. ] [DOI:10.3778/j.issn.1002-8331.1512-0372]
  • [15] Xiao B B, Hu W. Foreground extraction in surveillance scene[J]. Computer Engineering and Design, 2016, 37(3): 695–699. [肖碧波, 胡伟. 监控视频的前景运动物体提取方法[J]. 计算机工程与设计, 2016, 37(3): 695–699. ] [DOI:10.16208/j.issn1000-7024.2016.03.026]
  • [16] Min W D, Guo X G, Han Q. An improved ViBe algorithm and its application in traffic video processing[J]. Optics and Precision Engineering, 2017, 25(3): 806–811. [闵卫东, 郭晓光, 韩清. 改进的ViBe算法及其在交通视频处理中的应用[J]. 光学精密工程, 2017, 25(3): 806–811. ] [DOI:10.3788/OPE.20172503.0806]
  • [17] Barnich O, Van Droogenbroeck M. ViBe:a universal background subtraction algorithm for video sequences[J]. IEEE Transactions on Image Processing, 2011, 20(6): 1709–1724. [DOI:10.1109/TIP.2010.2101613]
  • [18] Bouwmans T, Porikli F, Höferlin B, et al. Background modeling and foreground detection for video surveillance[M]. Chapman and Hall/CRC, 2014: 7.1-7.23.
  • [19] Gupte S, Masoud O, Martin R F K, et al. Detection and classification of vehicles[J]. IEEE Transactions on Intelligent Transportation Systems, 2002, 3(1): 37–47. [DOI:10.1109/6979.994794]