罗晖 王玮 张宁
摘要:ViBe(Visual Background Extractor)算法具有初始化模型时间短、无记忆更新和计算复杂度低等优点,在众多运动目标检测算法中综合性能优异。然而,在视频序列第一帧包含运动目标的情况下,ViBe算法会产生较长时间才能消除的“鬼影”现象,且不同时间、不同区域用固定更新速率背景模型进行更新,鲁棒性差。为了提高ViBe算法对运动目标检测的准确性,提出Ad-ViBe(Adaptive Visual Background Extractor)算法,该算法根据像素点变化状态自适应改变背景样本集的更新速率。实验结果表明,该算法能够有效地消除“鬼影”现象和环境干扰带来的背景噪声,各项客观评价指标优于ViBe等传统算法。
关键词:运动目标检测;“鬼影现象”;更新速率;自适应;评价指标
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2018)09-0187-05
Abstract: Visual Background Extractor (ViBe) algorithm has the advantages of initializing background model quickly, memoryless based update and low computational complexity. Therefore, it has excellent performance compared with other moving objects detection algorithms. However, in the case of moving object included in the first frame of a video sequence, "ghost" phenomenon occurs and it takes a long time to eliminate, and at different times, different regions are updated with the background model of fixed update rate, it is robustness. In order to improve the detection accuracy, Adaptive Visual Background Extractor (Ad-ViBe) algorithm was presented, the algorithm adaptively changed the update rate of the background sample set according to the changing state of pixels. Experimental results showed that Ad-ViBe algorithm can effectively eliminate the "ghosting" phenomenon and scene noise, and the evaluation indicators are better than ViBe etc.
Key Words: moving objects detection; "ghost" phenomenon; update rateadaptive; evaluation indicators
1 引言
隨着摄像头的普及和物联网的快速发展,视频监控广泛运用于生产生活中。在带来便利的同时也产生了海量的待处理视频数据,相对于传统的人工操作,利用计算机视觉进行分析显得尤为重要[1]。此外,计算机视觉中的运动目标检测是目标识别、跟踪等其他应用的基础。因此,运动目标检测算法的研究具有重要意义。
目前,运动目标检测算法分为三类:光流法[2]、帧间差分法[3-4]和背景差分法[5]。其中,由Barnich等[6-7]提出的基于ViBe背景差分法具有计算复杂度低、速度快、鲁棒性和抗噪性高等优点。虽然ViBe算法综合性能较好,但由于其独特的背景模型初始化及更新机制,会产生“鬼影”现象[8],给后续运动目标检测带来干扰。
针对“鬼影”干扰问题,许多学者对ViBe算法进行了改进:Jin等[9]提出融合Canny算子与ViBe算法,利用改进的Canny算子提取边缘信息,然后和ViBe算法检测的前景区域融合得到更为准确的运动目标;Liu等[10]提出利用时间梯度和空间梯度自适应调整检测阈值;胡小冉等[11]提出结合帧间差分法得到更为准确的初始背景模型,从而消除“鬼影”;闵卫东等[12]提出结合像素生命长度检测“鬼影”,利用二次更新的方法进行快速消除等。以上算法都有效地消除了“鬼影”,但不同程度上增加了背景模型建立和更新的复杂度,从而降低了算法的实时性和鲁棒性,不利于实际运用。
综上,本文提出Ad-ViBe算法,在保留ViBe算法优点的基础上,通过像素前、背景变换速度自适应改变更新速率,从而消除“鬼影”现象,并利用形态学的方法进行处理消除环境干扰带来的背景噪声,达到运动目标准确检测的目的。
2 ViBe算法原理简述
ViBe算法的中心思想是为背景模型每个像素点建立背景点样本集,采用随机更新、邻域更新策略实时更新背景模型样本集。通过比较图像与背景模型对应位置像素点,判断该像素点是否是前景点,进而达到检测运动目标的目的。
2.1 背景模型的初始化
不同于其他算法,ViBe算法仅利用视频序列的第一帧就能完成背景模型的初始化,因而具有实时性好的特点。此外,充分考虑相邻像素点间的空间相关性,将像素点及其八邻域像素点的值填充背景点样本集。对于任一像素点[x,y],它的背景点样本集表示如下:
2.3 像素点分类
ViBe算法的前、背景像素点分类方法如图所示:
在欧氏空间中,以目标像素点为中心,半径为[R]做圆,统计与背景点样本集交集点个数[#·],若[#·]不小于阈值[#min],则判别该像素点被为背景点,否则为前景点:
2.3 背景模型更新策略
不同于其他算法的“先入先出”策略,ViBe算法采用隨机更新、邻域更新的策略更新背景模型。若像素点[Vx,y]被判别为背景点,以概率[1φ]替换该像素点背景样本集中的随机一个样本值,同时等概率更新其邻域点的背景点样本集。对于背景样本集中的任意一个样本值,经过时间[Δt]后仍然存在的概率为:
因为采用无记忆更新机制,保证了背景点样本集中每个像素值的平滑衰减生命周期,提高了算法的动态适应性。
2.4 ViBe算法优缺点
ViBe算法因其独特的背景模型初始化、更新方法,使其能够适用于动态背景、光照缓慢变换等场景,且具有很好的实时性。然而,当视频序列第一帧中包含前景目标时,或检测过程中长时间静止的物体突然运动,会产生“鬼影”现象。由于更新机制的影响,使得“鬼影”需要较长时间才能自行消除,不利于运动目标检测。另外,由于光照突变、树叶抖动等环境干扰带来的背景噪声,ViBe算法不能及时有效地消除,这对正确检测运动的影响也是巨大的。
3 Ad-ViBe算法
针对ViBe算法存在的问题,本文提出基于更新周期的自适应地改变更新速率,以提高运动目标检测准确性。
3.1 改进思想
ViBe算法背景模型更新过程是对一帧中判别为背景点的像素点进行速率为[1φ]的更新。显然,更新因子[φ]的大小直接影响背景模型的更新快慢,[φ]越小则更新速度越快,反之,[φ]越大则更新速度越慢。ViBe算法对于不同时刻、整帧图像采用统一的更新速率[1φ]。然而,实际场景中,不同时刻、不同像素点的前背景变化快慢是不同的。若某时刻像素点的前背景变化速度快,则可以推端此时刻该像素点的前景目标出入频繁,检测出的背景点受前景目标干扰大,甚至可能将前景误判为背景。因此,降低该像素点的更新速率可以防止错误背景点对背景点样本集的影响。反之,前背景变化速度慢的像素点基本处于稳定状态,前景目标经过该点的次数少,加大对该类像素点的背景点样本集的更新速率可以更快地适应背景的变化。
受到文献[13]的启发,Ad-ViBe算法自适应改变像素点的更新速率。算法为每个像素建立一个更新周期[Tx,y],在一个更新周期内统计像素点状态转变次数(包括前景转变为背景和背景转变为前景)[hx,y],进而判断像素点的运动变化快慢,并据此在周期结束时改变更新因子[φ]。
3.2 算法流程
Ad-ViBe算法流程如下:
①背景模型的初始化。取视频序列的第一帧初始化背景模型,建立背景点样本集[Mx,y],设定更新周期[Tx,y];
②前、背景判断。计算当前输入帧图像的像素点与样本集[Mx,y]各元素的欧氏距离,统计距离小于[R]的个数[n]。若[n]不小于阈值[#min],则判断为背景。
③运动状态判断。统计一个更新周期[Tx,y]内像素点状态转变次数[hx,y]。若[hx,y]较小则可以推理出该像素点较稳定,对应于基本无运动目标经过或目标进入后停留。同理,若[hx,y]较大则可以推理该像素点运动目标进出频繁。在上述推理的基础上,设定状态函数:
④背景模型自适应更新。根据状态函数在每个更新周期的开始改变更新因子:
其中,[φiφ1<φ2<φ3]为不同大小的更新因子。此外,更新因子初始值为[φ1]。然后,以概率[1φi]分别对像素点及其领域的样本集进行一次更新。因此,不同状态的像素点以不同的更新速率更新背景模型。
⑤后期处理。对检测到的前景目标进行形态学腐蚀、膨胀操作,一定程度上去除背景噪声,填充空洞。
4 实验结果与分析
本文选取PETS2006和highway视频序列与ViBe算法分别在彩色(RGB)域和灰度域上进行对比实验,以验证Ad-ViBe算法的实际效果。此外,设定各参数分别为:[R=2],[n=20],[#min=2],[T=20],[τ1=0.03],[τ2=0.05]三个更新因子分别为[φ1=8]、[φ2=16]、[φ3=32]。实验平台的环境及参数如下:Win8.1系统,8G内存,Intel Core I5-5200U,四核2.2GHz主频,Visual Studio 2013结合OpenCV 2.4.9编程。
4.1 Ad-ViBe算法实验验证
首先,本文对highway视频序列进行实验,对比ViBe算法和Ad-ViBe算法检测效果。
实验结果如图4所示,其中(a)为视频序列highway第496帧图像;(b)为视频序列提供的groundtruth图像;(c-d)分别为灰度ViBe算法和彩色ViBe算法检测效果图像;(e-f)分别为灰度Ad-ViBe算法和彩色AD-ViBe算法检测效果图像。
视频序列在该帧发生了光照突变,导致ViBe算法在彩色域和灰度域检测结果中,均出现较大范围错误检测。然而,Ad-ViBe算法能够有效地避免该类问题。同时,Ad-ViBe算法能够去除视频序列图像左侧一直存在的树叶抖动现象带来的干扰。因此得出结论:Ad-ViBe算法无论是在彩色图像还是灰度图像的抗环境干扰上都比ViBe算法要好。
此外,为了验证Ad-ViBe算法能够消除“鬼影现象”,本文选取PETS2009视频序列进行实验。
实验结果如图5所示,第一行四幅图像分别为视频序列PETS2009第1帧、7帧、70帧和490帧;第二行为ViBe算法检测效果;第三行为Ad-ViBe算法检测效果。
两种算法在第7帧都有明显的“鬼影”现象(用方框标出)。然而,Ad-ViBe算法在第70帧左右已经完全消除“鬼影”,ViBe算法到第490帧仍未完全消除。因此,Ad-ViBe算法能较好地消除“鬼影”,提高了检测的准确性。
为了验证本文算法的可靠性和准确性,选取经典的运动目标检测的视频数据集“highway”、“pedestrians”和“office”三个视频序列,对三帧差法、滑动平均法、混合高斯模型(GMM)法、ViBe算法和Ad-ViBe算法進行对比仿真验证。
图6的第1至6行分别为原视频图像、三帧差法、滑动平均法、混合高斯模型法、ViBe算法和Ad-ViBe算法的运动目标检测效果图。显而易见,Ad-ViBe算法的检测效果优于其他算法。
4.2 算法性能评估
为了更加客观、全面地评价Ad-ViBe算法在检测性能上的改进,本文参照文献[14]的分析方法,通过计算highway视频序列的精确率([P])、召回比([R])、特异性([SP])、误检率([FPR])、漏检率([FNR])和综合评价值([FMeasure])六个评价指标,对Ad-ViBe算法和其它4种算法进行比较。
[P=TPTP+FP],[R=TPTP+FN],
[SP=TNTN+FP],[FPR=FPFP+TN],
[FNR=FNTP+FN],[FMeasure=2*R*PR+P] (5)
其中,[TP]、[TN]分别为正确检测的前景和背景点数,[FP]、[FN]分别为错误检测的前景和背景点数。
如表1所示(各项评价指标的最优值已加粗显示),Ad-ViBe算法精确率、召回比、特异性和综合评价值均比ViBe算法高,而漏检率和误检率比ViBe算法低。与其他几种经典运动目标检测算法相比,Ad-ViBe算法综合评价值指标远远领先,且精确率、特异性和误检率与最优值相差较小。
如表2所示,Ad-ViBe算法比ViBe算法耗时。因为ViBe算法相比于ViBe算法来说增加了运动状态判断和自适应改变更新因子的步骤,且都是在像素级别进行计算,所以相对于ViBe算法来说每帧处理时间增加了百分之二十左右。由于实验平台的差异性及结合文献[15]的实验结果对比,本算法仍能满足实时性要求。
5 结论
基于ViBe算法的优点基础上,本文针对其存在的问题进行改进,提出Ad-ViBe算法。通过统计一个更新周期内像素点的前、背景转换次数判断所处状态,进而自适应改变更新速率,提高了对运动目标检测的准确性。在视频序列上实验表明,Ad-ViBe算法可以有效地消除环境干扰带来的背景噪声和“鬼影”现象,并且在包括准确率和误检率等多项评价指标优于ViBe算法。此外,Ad-ViBe算法能够满足实际应用中的实时性要求。
参考文献:
[1] 黄凯奇,陈晓棠,康运锋,等.智能视频监控技术综述[J].计算机学报,2015,38(6):1093-1118.
[2] 肖军,朱世鹏,黄杭,等.基于光流法的运动目标检测与跟踪算法[J].东北大学学报:自然科学版,2016,37(6):770-774.
[3] 薛丽霞,罗艳丽,王佐成. 基于帧间差分的自适应运动目标检测方法[J]. 计算机应用研究,2011,28(4):1551-1552+1559.
[4] Li W, Yao J, Dong T, et al. Moving vehicle detection based on an improved interframe difference and a Gaussian model[C]// International Congress on Image and Signal Processing. IEEE, 2016:969-973.
[5] Ramya P, Rajeswari R. A Modified Frame Difference Method Using Correlation Coefficient for Background Subtraction ☆[J]. Procedia Computer Science, 2016, 93:478-485.
[6] Barnich O, Droogenbroeck M V. ViBE: A powerful random technique to estimate the background in video sequences[C]// IEEE International Conference on Acoustics, Speech and Signal Processing. IEEE, 2009:945-948.
[7] Barnich O, Van D M. ViBe: a universal background subtraction algorithm for video sequences.[J]. IEEE Transactions on Image Processing A Publication of the IEEE Signal Processing Society, 2011, 20(6):1709.
[8] 李亚伟, 曹凯, 王杰,等. 一种改进的ViBe鬼影抑制算法[J]. 广西大学学报:自然科学版, 2017, 42(2):712-719.
[9] Jin D, Zhu S, Sun X, et al. Fusing Canny operator with vibe algorithm for target detection[C]// Control and Decision Conference. IEEE, 2016:119-123.
[10] Liu S. An improved ViBe moving object detection algorithm based on spatial-temporal gradient of image[C]// International Conference on Progress in Informatics and Computing. IEEE, 2017.
[11] 胡小冉,孙涵. 一种新的基于ViBe的运动目标检测方法[J]. 计算机科学,2014,41(02):149-152.
[12] 闵卫东,郭晓光,韩清. 改进的ViBe算法及其在交通视频处理中的应用[J]. 光学精密工程,2017,25(03):806-811.
[13] Zhang Y, Zhao C, He J, et al. Vehicles detection in complex urban traffic scenes using a nonparametric approach with confidence measurement[C]// International Conference and Workshop on Computing and Communication. IEEE, 2015:1-7.
[14] Goyette N, Jodoin P M, Porikli F, et al. Changedetection.net: A new change detection benchmark dataset[C]// Computer Vision and Pattern Recognition Workshops. IEEE, 2012:1-8.
[15] 周超康,战荫伟,冯开平.基于双背景模型的改进Vibe运动目标检测算法[J].电视技术,2016,40(4):27-31+100.