一种能快速抑制鬼影及静止目标的ViBe改进算法

2016-04-05 10:02吴尔杰杨艳芳田中贺蒋建国合肥工业大学计算机与信息学院安徽合肥30009合肥工业大学电子科学与应用物理学院安徽合肥30009
关键词:鬼影目标检测

吴尔杰,杨艳芳,田中贺,蒋建国(.合肥工业大学计算机与信息学院,安徽合肥 30009;.合肥工业大学电子科学与应用物理学院,安徽合肥 30009)



一种能快速抑制鬼影及静止目标的ViBe改进算法

吴尔杰1,杨艳芳2,田中贺1,蒋建国1
(1.合肥工业大学计算机与信息学院,安徽合肥230009;2.合肥工业大学电子科学与应用物理学院,安徽合肥230009)

摘要:ViBe算法存在鬼影和静止目标问题,这些问题给目标检测带来误差,需要快速有效地抑制。文章在原始ViBe算法基础上,先通过比较局部区域的背景模型像素值方差和新来帧该区域的像素值方差的大小来判断该区域存在鬼影还是静止目标,存在则进行抑制,然后采用不同的策略更新鬼影区域和静止目标区域的背景。实验结果中,改进算法仅用15帧就可以完全抑制鬼影,仅用20帧就能完全抑制静止目标,而原始ViBe算法完全抑制鬼影需要108帧且抑制静止目标能力有限。实验结果表明,对于普通的以及背景较为复杂的监控场景,文中改进算法可行、有效。

关键词:目标检测;背景模型;ViBe算法;鬼影;静止目标

蒋建国(1955-),男,安徽宁国人,合肥工业大学教授,博士生导师.

在智能视频监控系统中,目标检测效果的优劣直接影响目标分类、跟踪等后期处理的效果,准确、实时的运动检测算法是智能视频监控技术的迫切需要。对于最为普遍的、固定背景的视频监控场景,常用方法是先通过背景建模获得不含目标的背景模型,再将背景模型与当前帧图像进行差分得到运动目标。工程上常用的背景建模运动目标检测算法有均值滤波法、单高斯模型法、混合高斯模型法等。均值滤波法[1]使用连续N帧图像序列的平均作为背景,若当前帧与背景帧对应位置的像素值差别大于一定阈值,则判定该像素点为前景点。该算法简单、实时性好,但对环境光照变化和一些动态背景变化比较敏感,文献[2]采用单高斯模型对背景像素点建模,在简单环境下的检测效果良好,但是在波动的湖面、摇曳的树枝等复杂场景下,很难有效地检测目标;混合高斯模型[3-6]对一个像素点的像素值出现概率使用多个高斯分布进行描述,能反映背景自身的变化,检测效果较好,但算法计算量大,实时性差。文献[7-8]提出了一种名为ViBe的非参数背景建模算法,这种算法具有良好的适应性和实时性,但是,ViBe算法的背景更新速度较慢,不能迅速处理静止目标变为运动目标,以及运动目标变为静止目标这2种情况。比如,ViBe一般直接将第1帧作为初始背景,如果第1帧中含有运动目标,算法不但会检测到运动目标,还会在目标的原位置检测到一个虚假的运动区域,该区域就是所谓的鬼影。与之类似,在检测过程中,某个原本长时间静止的目标一旦开始运动,同样会产生鬼影。由于ViBe的更新速度慢,鬼影的存在时间较长。另外一种情况是当目标长时间静止时,ViBe算法会在较长时间内将该目标判为运动目标,增加了后续处理的运算量。如何快速消除鬼影和目标静止这2种情况,是智能视觉监控系统中要解决的实际问题。

对于鬼影问题,一些研究者提出了改进,文献[9]利用相邻像素点的空间一致性对ViBe算法进行改进,当一像素点被判为前景时,将该点与其邻域像素点背景模型中的像素值进行匹配,如果匹配点数超过阈值则判定此像素点为鬼影点,然后消除鬼影点并重新初始化该点的背景模型,从而抑制鬼影。该方法虽然能抑制鬼影,但算法运算量大。文献[10]提出了一种帧间差分法与ViBe算法相结合的改进算法,这种方法将开始若干帧的差分结果与ViBe算法同一帧检测得到的结果进行“与”运算,抑制鬼影并更新鬼影区域的背景模型。该方法可以抑制部分鬼影,而剩余鬼影点的抑制还是依赖ViBe原始更新策略,多帧后才能消除。

综上所述,这些ViBe改进方法鬼影抑制的效果并不理想,也没有考虑抑制目标静止的问题。鬼影和静止目标这2种虚假“静止前景”,都需要改进ViBe算法来抑制,但是由于两者的产生原因不同,需要采用不同的方法来抑制。本文根据局部区域像素值的方差大小来判断一块区域是鬼影区域还是静止目标区域。对鬼影区域,该区域的背景模型用新来一帧的相应像素点去更新;而对静止目标区域,待其静止超过一定帧数则存储原背景模型,并用当前像素值作为临时背景模型,当该目标再次运动时则使用存储的原背景模型替换当前的临时背景模型。本文算法能够快速有效抑制鬼影和静止目标。

1 ViBe简介

1.1ViBe原理

ViBe算法是一种比较高效的、鲁棒性相对较强的算法。ViBe算法主要包含背景模型初始化、前景检测以及背景模型更新3个模块。

(1)背景模型初始化。ViBe为每个像素都建立背景模型,背景模型的容量为N。背景模型记为M={ p1,p2,…,pN},初始化时,选择视频的第1帧,随机选择当前像素点的8邻域任意一点像素值存到当前像素点的背景模型中,得到pi。重复此操作N次,就得到初始背景模型M。

(2)前景检测。从第2帧开始计算每个像素点像素值与背景模型同一位置像素点N帧像素值的差的绝对值,将结果和预设的阈值R相比,如果小于R则说明找到一个匹配;统计上述小于R的匹配数目,如果匹配数目大于设定的匹配数目阈值,就判断此像素点是背景点,否则就判为前景点。

(3)背景模型更新。如果一个像素点被判为背景点,那么就要对此点及其邻域进行背景模型的更新。从N帧背景模型中任意选择一帧p(x),用新来一帧中被判为背景点的像素值更新p(x)中对应点,然后再用此像素值随机更新p(x)8邻域任一像素点像素值。

1.2ViBe对鬼影的抑制

鬼影是ViBe算法存在的一个难点问题。ViBe算法中,鬼影邻近背景像素点可以更新鬼影的背景模型,当鬼影背景模型中被更新的像素值个数超过阈值时,鬼影被抑制。ViBe算法需要经过很多帧以后才能抑制鬼影。原始ViBe抑制鬼影如图1所示,可见直到108帧鬼影才被完全抑制,消耗了大量的帧。

此外,ViBe对于静止目标的抑制能力也比较有限。当目标与背景接近时,ViBe算法可以逐渐腐蚀静止目标,但需要经过很多帧以后才能抑制静止目标;当目标与背景差别较大时,ViBe则不能抑制该目标。

图1 ViBe抑制鬼影示意图

2 ViBe改进算法

如前所述,原始ViBe算法在多帧以后才能抑制鬼影和静止目标,本文改进算法的目的就是减少抑制鬼影和静止目标所需的帧数。

2.1算法改进思路

鬼影和静止目标都是要抑制的,但是两者产生的原因以及消除的方法不同,本文的思路是先判断后抑制。首先利用原始ViBe方法检测到持续一定帧数的“静止前景”区域(鬼影或者静止目标),然后比较该区域的当前帧全部像素值方差与背景模型全部像素值方差的大小,从而判定该区域是鬼影区域还是静止目标区域,再利用不同策略来更新背景模型并进行相应抑制。

当某局部区域的背景中含有目标,而新来一帧中此目标离开该区域,就导致该区域产生了鬼影。而当某局部区域的背景中没有目标,而新来帧中该区域一直存在目标时,就检测出该区域存在静止目标。也就是说,通过分析局部区域的背景帧和当前帧是否含有目标来判断该区域是存在鬼影还是静止目标。有目标和无目标灰度图如图2所示,当某局部区域中不含有目标时,各像素值的差异较小,该区域的像素值方差就较小;当局部区域中含有目标时,各像素值的差异较大,该区域的像素值方差就较大。设σB为背景区域的像素值方差,σF为新来帧对应区域的像素值方差,方差计算公式为:

其中,I(i,j)为像素值;M、N为区域的高度和宽度;u为该区域像素值均值。图1a无目标区域灰度值方差为2 703.3,而图1b有目标区域灰度值方差为6 909.3。对于鬼影情况,背景一般如图1b所示,新来帧如图1a所示,显然应该是背景方差大于新来帧的方差;对于静止目标情况,显然是背景方差小于新来帧的方差。

根据以上分析可知,当σB>σF时,判定该区域出现鬼影;当σB<σF时,判定该区域出现静止目标。

图2 有目标和无目标灰度图

鬼影和静止目标的抑制都需要更新当前的背景模型。鬼影区域的背景模型实际上就是目标,要想去掉鬼影,可以用实际背景来替代鬼影区域的背景模型,所以直接采用新来一帧对应像素点来更新鬼影背景模型。

静止目标区域的背景模型是实际背景,为了抑制静止目标,可以用该目标来更新静止目标区域的背景模型。但是,当静止目标离开静止区域时,由于此时背景模型为目标,又会产生鬼影,所以在更新静止区域背景模型之前,将该区域的原始背景模型保存,当静止目标离开静止区域时,再用前面保存的原始背景模型替代静止位置的当前背景模型,从而避免了鬼影的产生。

2.2算法实现步骤

本文算法是在ViBe基础上改进的,算法流程如图3所示。

(1)算法初始化。开辟一块存储器用于保存各像素点的原始背景模型,并为每个像素点设置一个标志C来指示该像素点是否保存有原始背景模型(C为1表示该点保存了原始背景模型,C的初始为0)。另外,为每个像素点设置一个计数器,用来统计该像素点连续被判为前景的帧数。

(2)前景区域检测。用原始ViBe算法进行目标检测,并标记出每个前景目标的大小、位置。

(3)背景点背景模型更新。对新来一帧每个像素点进行分析,如果该像素点为背景则直接使用新来一帧像素点更新背景模型。

(4)静止目标区域背景更新。若该像素点为前景,并且标志C为1,则用保存的原始背景模型替换当前背景模型,且标志C清零、存储器清空。

(5)鬼影或静止目标区域判别。如果该点为前景点且未存有背景模型(即C为0),则计数器加1。若计数器值大于等于ghosth,则判定该点为持续前景点,并标记出持续前景点所在区域,记为SA。

(7)鬼影区域判别及抑制。若小于设定的阈值T,说明此SA区域为鬼影,所以用新来一帧像素值替换该点背景模型,并将计数器清零。

(8)静止目标区域判别及抑制。若大于设定的阈值T,且计数器值大于静止目标阈值backth,说明该SA是静止目标区域,所以用新来一帧像素值替换该点背景模型,并且存储该点原始背景模型、标志C置1。

图3 ViBe改进算法流程图

3 实验结果分析

实验环境为i5处理器、内存4 GB、VS2008以及OpenCV2.3.1。视频序列为View-001 (768×576)。下面通过4个实验来说明本文改进算法的处理能力。

3.1实验1

为了测试本文改进算法对视频起始产生鬼影的抑制能力,将原始ViBe算法、文献[10]的算法以及本文改进算法的实验结果进行比较和分析。实验结果如图4所示。

图4 初始鬼影抑制效果对比

如图4所示,视频初始时有3个运动目标,由实验结果可见,原始ViBe算法在第15帧时还有大部分鬼影残留(鬼影为圈线标出的前景),在108帧时完全抑制鬼影;而文献[10]算法在第10帧时已对鬼影做了局部的抑制,但是余下的部分仍需ViBe的穿插方法消除,第98帧时完全抑制鬼影,而本文算法在15帧时就完全抑制了鬼影。对于抑制鬼影的阈值ghosth,若设置过大则会影响抑制鬼影的效率,过小则许多目标都需要计算区域的方差,计算量大,本文抑制鬼影的阈值ghosth设置为15。本文提出的方法在抑制鬼影方面明显优于ViBe原始算法与文献[10]的算法。

3.2实验2

为了测试本文改进方法对于视频运行中静止目标移动产生的鬼影的抑制能力,截取视频View-001第239帧以后的序列,并进行检测,实验结果如图5所示。图5中左侧的目标自239帧开始静止,在第277帧目标运动离开原始位置,在原始位置留下了明显的鬼影(图中圈线标示处),在第292帧时本文改进的ViBe完全抑制了鬼影。这说明本文改进方法可以有效地抑制在视频运行中静止目标移动产生的鬼影。

图5 中期鬼影抑制效果

3.3实验3

为了测试本文改进方法静止目标的抑制能力,将原始ViBe算法与改进的ViBe算法对静止目标的抑制结果进行对比,实验结果如图6所示。

由图6可见,目标(圆圈定)自239帧开始静止,277帧时目标重新开始运动。原始ViBe算法自239帧直至277帧该目标始终被判为前景。在本文的改进算法中,当静止目标持续帧数超过设定阈值backth时就消除该前景目标,backth可以根据实际的需要来改动,为了观测本文消除长期静止目标的能力,设置backth值为20。可以观察到,当第259帧时,已经不能检测到该目标。当到了第277帧时,该目标重新运动离开原始位置,可以看出,当目标离开时并未留下鬼影,说明本文改进算法可以有效地抑制静止目标。

对分辨率为768×576的View-001,原始ViBe算法耗时每帧0.139 s,本文改进算法耗时每帧0.169 s,算法速度略有下降。

图6 静止目标抑制效果对比

3.4实验4

如前所述,本文算法通过比较局部区域的背景像素值方差和新来帧该区域的像素值方差的大小来判断该区域是鬼影还是静止目标,对于大多数监控场景均能取得较好的实验结果,对于某些背景特别复杂的监控场景也会失效。

较复杂背景、特别复杂背景的实验结果如图7、图8所示。

图7a~图7f为第1组图,场景为树林;图7g~图7l为第2组图,场景为交叉路口,背景都较为复杂。第1组图目标在第100帧开始静止,第120帧就抑制了该静止目标,第150帧目标开始运动,但没有留下鬼影(圆圈区域中无鬼影)。第2组图目标在第55帧开始静止,第75帧就抑制了该静止目标,第99帧目标开始运动,也没有留下鬼影(圆圈区域中无鬼影)。图7说明本文算法在比较复杂的条件适用。

图8场景特别复杂,目标在第56帧开始静止,第71帧就抑制了该静止目标,第103帧目标开始运动,并留下鬼影(圆圈区域中存在鬼影)。图8说明本文算法在场景特别复杂时可能并不适用,这也是下一步要解决的问题。

图7 较复杂背景的实验效果

图8 特别复杂背景实验效果

4 结束语

本文改进算法在普通的以及背景较为复杂的监控场景下能够有效并快速地抑制鬼影及静止目标,但是对于背景极其复杂的监控场景,由于这类场景含有目标的局部区域方差往往小于不含目标的同区域方差,所以容易在鬼影和静止目标的判断中出现误差。

与原始ViBe算法和文中引述的其他ViBe改进文献相比,本文能有效并快速地抑制鬼影和静止目标。

在实际应用方面,由于极其复杂的场景在实际生活中比较少见,所以本文改进算法具有一定的实用性,但是在极其复杂场景下有效地抑制鬼影和静止目标也很重要,在该方面有待于做出进一步探索和研究。

[参考文献]

[1]Meier T,Ngun K N.Video segmentation for content-based cod2 ing[J].IEEE Transactions on Circuits and Systems for Video Technology,1999,9(8):1190-1203.

[2]Wren C R,Darrell T,Pentland A P,et al.Pfinder:real-time tracking of the human body[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1997,19(7):780-785.

[3]Zhou D,Zhang H.Modified GMM background modeling and optical flow for detection of moving objects[C]//IEEE International Conference on Systems,Man and Cybernetics,2005:2224-2229.

[4]Zivkovic Z.Improved adaptive gaussian mixture model for background subtraction[C]//Proceedings of the 17th International Conference on Pattern Recognition.IEEE Computer Society,2004:28-31.

[5]Lee D S.Effective gaussian mixture learning for video background subtraction[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2005,27(5):827-832.

[6]Sun Y G,Li H,Zhang H Y.Moving object detection algorithm based on improved gaussian mixture model[J].Computer Engineering,2012,38(18):166-170.

[7]Barnich O,Van Droogenbroeck M.ViBe:a powerful random technique to estimate the background in video sequences[C]//Proceedings of the ICASSP 2009 on Acoustics,Speech and Signal Processing.Taipei:IEEE,2009:945-948.

[8]Barnich O,Van Droogenbroeck M.ViBe:a universal background subtraction algorithm for video sequences[J].IEEE Transactions on Image Proceeding,2011,20(6):1709-1724.

[9]陈亮,陈晓竹,范振涛.基于Vibe的鬼影抑制算法[J].中国计量学院学报,2013,24(4):425-429.

[10]Li Yongqiang,Chen Wanzhong,Jiang Rui.The integration adjacent frame difference of improved ViBe for foreground object detection[C]//International Conference on Wireless Communications,Networking&Mobile Computing(WiCOM),2011:1-4.

(责任编辑张镅)

An improved ViBe algorithm for restraining ghost and stay object

WU Er-jie1,YANG Yan-fang2,TIAN Zhong-he1,JIANG Jian-guo1
(1.School of Computer and Information,Hefei University of Technology,Hefei 230009,China;2.School of Electronic Science and Applied Physics,Hefei University of Technology,Hefei 230009,China)

Abstract:Ghost and stay object may be detected by visual background extractor(ViBe)algorithm,which bring some errors when detecting objects,so these problems need to be restrained effectively.In this paper,based on the original ViBe algorithm,whether a foreground is stay object or ghost is judged by comparing the variance of gray value of a regional background model and the variance of gray value of the same region of next frame,and then different measures are adopted to limit the ghost and stay object and update the background model.The experimental results show that the improved algorithm can restrain ghost completely in only 15 frames,and restrain stay object completely in only 20 frames,but the original ViBe algorithm restrains ghost completely in 108 frames and it can not restrain stay object effectively.The experimental results indicate that when the monitoring scene is ordinary or relatively complex,this improved algorithm is feasible and effective.Key words:object detection;background model;visual background extractor(ViBe)algorithm;ghost;stay object

作者简介:吴尔杰(1990-),男,安徽灵璧人,合肥工业大学硕士生;

基金项目:国家自然科学基金资助项目(61371155);安徽省科技攻关计划资助项目(1301b042023)

收稿日期:2014-12-24;修回日期:2015-03-03

Doi:10.3969/j.issn.1003-5060.2016.01.011

中图分类号:TP301.6

文献标识码:A

文章编号:1003-5060(2016)01-0056-06

猜你喜欢
鬼影目标检测
视频中目标检测算法研究
行为识别中的人体运动目标检测方法
如何消除胶印“鬼影”?
移动机器人图像目标识别
基于单应性矩阵的图像拼接方法的对比分析
基于背景建模法的运动目标检测
基于P3电位的目标检测研究
基于多特征结合的MIMO穿墙雷达“鬼影”抑制
一种改进的峰均功率比判源方法
实时的静止目标与鬼影检测及判别方法