一种基于改进视觉背景提取算法的前景检测*
2018-05-08丁保阔
陈 树,丁保阔
(江南大学物联网工程学院,江苏 无锡 214122)
1 引言
目标跟踪是计算机视觉研究的一个热门课题,前景检测是目标跟踪的基础和关键步骤。传统的前景检测方法主要有帧差法、背景模型法和光流法。视觉背景提取ViBe(Visual Background extractor)算法[1]是Barnich提出的一种新的背景模型法,并发展成为目标跟踪领域一种通用的背景减除算法[2]。ViBe算法根据邻域像素值具有空间相似性[3]的特点,利用少量的邻域像素快速建立背景模型,Barnich从理论和实验的角度验证了ViBe算法比高斯混合模型、码本算法、加强型高斯混合模型、贝叶斯直方图等背景减除算法计算速度快且检测率高。所以,该算法很容易应用到消费类的电子产品[4]领域和交通视频监控[5]中。
ViBe算法[1,2]使用第1帧初始化背景模型,容易产生鬼影,文献[6]在ViBe算法的初始化阶段使用前n帧对模型初始化,该算法在一定程度上快速消除了鬼影,但当前n帧中的多帧同时包含运动目标时,会在运动目标区域出现前景像素的漏检;文献[7]针对鬼影在视频中连续出现的次数比真实运动目标出现的次数多的特点,为视频帧建立一个统计前景点出现次数的掩膜,当某个像素被连续分类为前景点次数超过一定阈值时,强制该像素变为背景点,同时更新该像素和其邻域像素的背景模型,这样判断一个前景点是否为鬼影在时间上有了一定滞后性;文献[8]在模型的初始化阶段使用前2~n+1帧与第1帧求帧差图像,然后添加进入模型中,在一定程度上也能很好地消除掉鬼影,但是因为先求像素的帧差值压缩了像素之间的差别,会出现一定程度的检测目标不完整的缺点;文献[9]在检测出前景的基础上,统计前景中内外边缘区域的直方图,然后通过直方图匹配的方式检测出鬼影区域,取得了良好的检测性能,但是整个直方图匹配过程会消耗大量时间;文献[10]在深度图像的基础上另外创建一个参考模型,根据背景图像中出现运动目标时像素深度值变小的特点去除鬼影,但是在普通图像中的处理效果较差;文献[11]在合成真实背景图像过程中使用三帧差分法去除运动目标区域,但是传统的三帧差分算法在某些场景下会产生孔洞,进而造成合成的真实背景图像中还会包含运动目标。
本文针对ViBe算法在前景检测中存在鬼影现象且长时间难以消除的缺点,提出以下三个方面的改进:首先,在模型初始化阶段利用OTSU算法产生自适应阈值并引入到帧差法中,分割出比较理想的前景区域;其次,利用去除前景区域的前n帧视频帧,合成一张包含前景尽量少的真实背景样本图像,然后初始化ViBe算法模型;扩大像素的邻域范围,把8-邻域扩展为24-邻域,并且距离某像素较近的邻域赋予较大权重,距离某像素较远的像素赋予较小权重,并应用在ViBe模型的初始化阶段和背景模型的更新阶段,增强了模型的描述能力。
2 ViBe算法及鬼影分析
2.1 ViBe算法回顾
ViBe算法不需要假设背景像素的概率密度分布,而是根据邻域像素值具有空间相似性[3]的特点,利用少量的邻域像素快速建立背景模型,实时性好、检测精度高。具体步骤如下:
(1)ViBe模型的定义和初始化:假设视频帧中x像素位置处的欧氏颜色距离值为υ(x),υi(i=1,2,…,N)[1]为像素x的背景模型中的N个像素值,背景模型如公式(1)所示:
Μ(x)={υ1,υ2,…,υN}
(1)
x像素的空间邻域记为NG(x),通常来说NG(x)是像素x的8-邻域,利用视频帧的第1帧初始化模型,如公式(2)所示:
M0(x)={υ0(y|y∈NG(x))}
(2)
(2)前景像素判断:ViBe算法从第2帧开始进行前景检测,定义SR(υ(x))是以υ(x)为圆心、以R为半径的圆形区域,SR(υ(x))与模型M(x)中样本的交集定义为#R,并与给定阈值#min比较,当#R大于#min时,判定该像素为背景点;反之,即为前景像素。如公式(3)和公式(4)所示:
#R=SR(υ(x))∩{υ1,υ2,…,υN}
(3)
(4)
其中,background和foreground分别为背景集合和前景集合。
(3)ViBe模型的更新:当某像素按照公式(3)和公式(4)被分类为背景像素时,按照随机更新机制[2]更新该素点的背景模型,并引入空间信息传播机制[2]更新邻域像素的背景模型。定义一个时间重采样因子φ[1],当某像素被判定为背景像素时,该像素以1/φ的概率同时更新进入该像素的背景模型和其邻域像素的背景模型中。
2.2 鬼影分析
在目标跟踪领域,各种算法往往会受到鬼影和阴影[12]的干扰,降低了检测精度。文献[13]认为鬼影是在实际场景中无运动目标、但是算法长时间检测出运动区域的像素的集合,如图1c方框中的白色区域所示。图1a是第1帧包含运动目标的输入,图1b是第8帧输入图像,图1c是ViBe算法对第8帧图像检测到的前景图。像素P1和P2的取样位置如图1所示,图1d和图1e分别是P1和P2在第8帧的二维欧氏空间表示[1,2]。P1在第1帧的取样位置是运动目标区域,当程序运行到第8帧时,P1处的待检测像素虽然是真实背景像素,但是因为模型中样本点大都是运动目标的像素,根据公式(3)和公式(4)可以把P1判定为前景点(如图1d所示),即出现了图1c方框中的鬼影区域;P2在第1帧中取样位置是真实背景区域,当判断第8帧P2处像素类别时,根据公式(3)和公式(4)P2位置被判定为背景点(如图1e所示)。所以,在建立ViBe模型时,使用真实的背景像素且剔除出前景像素至为重要。
Figure 1 Ghost shadow analysis of ViBe algorithm图1 ViBe算法的鬼影分析
3 改进的ViBe算法
3.1 基于OTSU算法的帧差法
传统的帧差法通常根据先验经验设置固定阈值以分割前景和背景,本文利用OTSU算法[14]为帧差法自适应设置阈值,分割出更可靠的前景区域。前景检测感兴趣的目标只有视频中的背景和前景,OTSU算法在该处处理的是两类分类问题,背景和前景之间的类间误差越大分类效果越好。设当前分割阈值为T时,分割出的前景点数量占一帧图像的比例为ω0,所有前景点的均值为μ0;背景点占所有像素数量的比例为1-ω0,均值为μ1,那么该被处理的整帧灰度图像的均值μ以及前景和背景之间的类间方差为σ,分别如公式(5)和公式(6)所示:
μ=ω0*μ0+(1-ω0)μ1
(5)
σ=ω0*(μ0-μ)2+(1-ω0)*(μ1-μ)2
(6)
求出所有可能的阈值T后,会得到一个令前景和背景σ最大化的最优阈值,记为Tmax,能够使得前景和背景分类效果最好。
3.2 合成背景图像和初始化ViBe模型
Rbg(i,j)=
(7)
其中,k=2,3,…,n,0≤i≤H,0≤j≤W,W和H分别为视频帧的宽和高,且当Rbg每更新一个像素Nc自加1。为了加快模型更新速度,为n设置一阈值上限nmax,当未到达阈值nmax时,Nc提前达到Np,意味着视频帧的真实背景样本图像Rbg已经提前合成,提前跳出循环;当构建真实样本图像Rbg时超过该阈值时,即使真实背景图像没有提取完毕也要跳出循环,Rbg中没有被赋值的像素值,使用第1帧相应位置的像素补充替代,如公式(8)所示:
Rbg(i,j)=F1(i,j),ifRbg(i,j)=0
(8)
其中,F1是第1帧图像的灰度图。
Figure 2 Synthesis of background sample pictures图2 背景样本图片的合成
3.3 邻域的扩大
ViBe算法[2]为一个像素建立背景模型是从相应背景图像的8-邻域中反复抽取20次样本点完成的,如图3a所示。因8-邻域的样本像素会被反复抽取,导致分类像素错误的可能性会加大。文献[15]提出把8-邻域扩展为24-邻域,如图3b所示。为了体现出差异且增强背景模型的描述能力,本文提出根据与像素p(x)的距离不同,被抽中的概率也不同,距离p(x)近的像素被抽中的概率较大,距离p(x)较远的像素被抽中的概率较小,各像素被抽中的概率如公式(9)所示:
(9)
扩展后的邻域首先应用在ViBe模型的初始化阶段,图像边缘像素的24-邻域超出了图像的边缘部分,直接使用距离最近的边缘像素替代;然后,在模型更新阶段,当像素被模型分类为背景像素时,图3b中的1~8号像素以公式(9)中1/16的概率更新入模型,9~24号像素以公式(9)中1/32的概率更新入模型;这样,扩展的24-邻域增强了模型的描述能力和鲁棒性。
Figure 3 8-neighborhood and 24-neighborhood图3 8-邻域和24-邻域
4 仿真实验和分析
Cucchiara等人[12]认为,一个鲁棒性好的背景减除算法需要适应外界环境、运动姿态和光照等方面的变化,所以本文采用ChangeDetection视频库[17]、Wallflower视频库[18]和Shadow Detection视频库[19]中不同场景下的视频,并利用Opencv 2.4.9和Vs2012平台进行仿真,运行环境是Pentium 2.70 GHz CPU,内存为2 GB的PC机。为了对本文提出的算法进行比较,另外使用Opencv中SDK的高斯混合模型GMM(Gauss Mixture Model)算法和CodeBook算法的库函数进行对比,且实现了文献[2]的ViBe算法和文献[6,8]改进的ViBe算法进行对比仿真。实验过程中的主要参数与文献[2]中的是一致的,具体来说是,模型中样本的数量为N=20,圆形区域R=20,判断是否为背景点的阈值#min=2,重采样参数φ=16,本文提出改进的ViBe算法中nmax=20。本实验主要分为两部分:(1)在第1帧中无运动目标的视频库中进行;(2)在第1帧中含有运动目标的视频库中实验。为了更好地突出对比实验结果,对所有的仿真实验的最后前景掩膜都没有添加孔洞填充[20]模块和小区域去除模块。
4.1 复杂度分析
为分析ViBe算法与本文改进算法的时间复杂度和空间复杂度,设每帧输入视频图像的像素个数为S,每个像素模型的样本数为N。从第2节可以得出ViBe算法的空间复杂度和时间复杂度同时为Ο(S×N)。OTSU算法的时间复杂度为Ο(S),空间复杂度为Ο(1);合成真实背景图片阶段的时间复杂度为Ο(S),内存方面为真实背景图片开辟一帧原图大小的矩形区域,故空间复杂度为Ο(1);8-邻域扩展为24-邻域前后,从第2节ViBe模型的初始化、像素分类和模型更新阶段使用邻域信息的过程来看,不增加任何时间复杂度,另外,优化前为8-邻域开辟的存储空间为2×8×4个字节,优化后为24-邻域存储2×24×4个字节,优化前后的空间复杂度同为Ο(1)。OTSU算法最多出现在前nmax帧中,其所占程序运行时间和内存空间可以忽略不计,优化后的总时间复杂度近似为Ο(S×N),总空间复杂度为Ο(S×N+1),与ViBe算法的复杂度近似。本文对ViBe算法和本文改进的ViBe算法在不同场景下做对比实验,结果如表1所示。ViBe算法的每帧平均运行时间为32.62~34.72 ms,视频处理速度为每秒28.8~30.7帧;本文改进算法的每帧处理时间为34.13~39.23 ms,视频处理速度为每秒25.5~29.3帧。所以,本文优化算法与原ViBe算法的运行速度近似,可以满足实时性的要求。
Table 1 Comparison of average running time per oneframe between ViBe algorithm and the improved表1 ViBe算法与本文改进算法的每帧平均运行时间比较 (毫秒/帧)
4.2 定性分析
(1)第1帧中不含运动目标的对比实验。
改进算法针对的视频场景是第1帧中包含运动目标的情况下产生的鬼影和漏检现象,同时该算法需要在第1帧没有运动目标的情况下也能够很好地完成前景检测。该组对比实验在backdoor、bungalows、campus_raw和MovedObject等视频库中进行,分别取自视频帧的第55、140、60、80、864帧,实验结果如图4所示。backdoor和bungalows是一般条件下的视频监控图像,各算法均能很好地检测出前景区域;campus_raw是低分辨率下的视频库图像,GMM算法和文献[8]算法不能完整检测出车辆的轮廓;MovedObject是室内场景下的运动目标视频,GMM和文献[2]算法不能完整地检测出运动目标,本文算法与其它算法能够完整地检测出运动目标。总之,该组实验一方面说明了ViBe算法比GMM和Codebook模型适应性强,另一方面说明了本文改进算法不会影响第1帧无运动目标场景下的前景检测,具有良好的鲁棒性。
(2)第1帧中包含运动目标的对比实验。
Figure 4 Contrast test when the first frame without moving target图4 第1帧无运动目标的对比实验
Figure 5 Contrast test when the first frame has moving target图5 第1帧有运动目标的对比实验
为验证本文改进算法消除鬼影的能力,分别使用恶劣天气、光线变化大、运动目标较小、运动速度快等多种复杂条件下视频库进行对比实验。图5中输入图像分别取自视频库blizzard、Bootstrap、streetLight、ramCrossroad_1fps的第230、65、35和40帧,各算法检测到的鬼影区域如图5方框中的白色区域所示。blizzard是暴风雪下的运动车辆检测,GMM模型完全检测不到任何运动目标,Codebook模型和ViBe算法在检测到车辆的同时,还存在明显的鬼影区域,文献[6]算法检测到车辆的同时,鬼影区域几乎消失,文献[8]算法完全不能检测到车辆的同时还存在鬼影,本文提出了改进算法不仅完全消除鬼影,还完整地提取出车辆;Bootstrap是运动目标对环境光线影响大的情景,只有文献[6]算法和本文算法能比较完整地检测出运动的行人,其他算法均不能消除鬼影且对光线很敏感;streetLight是正常监控条件下的车辆和行人图像,GMM模型的鬼影明显,文献[2]算法车辆检测正常,但还存在部分鬼影,文献[6,8]算法虽然可以完全消除鬼影,但是车辆的检测不完整;CodeBook算法和本文算法能够很好地消除鬼影的同时,车辆和行人检测准确;ramCrossroad_1fps是复杂背景下车辆的快速运动的情景,GMM模型和文献[2]算法的鬼影突出,CodeBook的鬼影完全消失,但是噪声较多;文献[6,8]算法能够很好地消除鬼影,但是运动目标不完整,当运动目标经过鬼影区域时,会出现一定数量像素的漏检,本文改进算法能够完整检测出前景目标,鬼影几乎完全消失。总之,在第1帧包含运动目标的各种场景下,本文改进算法与其他算法相比,不仅能准确检测到运动目标,且能很好地消除鬼影现象。
4.3 定量分析
记TP=真前景像素个数,TN=真背景像素个数,FP=假前景像素个数,FN=假背景像素个数,为了定量分析各算法性能,引入分类正确率PCC(Percentage of Correct Classification)[2],假正率FPR(False Positive Rate)和假负率FNR(False Negative Rate)[17]三个参数,如公式(10)~(12)所示。PCC反映的是判断正确的前景像素和背景像素在一帧图像中所占的比例,可以作为衡量检测效果的总体性能指标,数值越大,说明总体检测效果较好;FPR被称为假正率,在本文中反映的是背景像素被判断为前景的比例,也就是鬼影区域的大小,该值越小,检测效果越好;FNR被称为假负率,在本文中反映的是前景像素被误判为背景像素数在背景像素中的比例,该值越小,检测效果越好。
(10)
(11)
(12)
在ChangeDetection视频库[17]的turnpike_0_5fps中,自第800帧起的视频图像包含相应的真实背景图像,且第800帧中包含运动目标,作为视频处理的第1帧,因为鬼影现象主要存在于视频帧开始处理阶段,取前100帧对各算法统计TP、TN、FP和FN,各算法的PCC曲线如图6所示。因为车辆在视频中运行速度非常快,所以各算法的PCC值不是单调上升,而是有一定的波动。
Figure 6 PCC curves of the algorithms图6 各算法的PCC曲线
图6中,本文算法的PCC曲线表现总体性能最好,单帧的PCC值与其他算法相比提高5%~20%。对各算法统计PCC、FPR和FNR的平均值并制作表2。从表2可以看出,GMM、CodeBook、ViBe算法[2]、文献[6]算法、文献[8]算法和本文算法分别从第1、21、2、21、22和11帧开始检测,并分别在59、21、180、21、22和25帧时鬼影完全消失,ViBe算法的鬼影消失时间最长,本文算法鬼影消失时间分别是ViBe算法、GMM和CodeBook的22.4%、43.7%和82.7%,文献[6,8]算法的鬼影消失时间最快;ViBe算法的FPR和FNR最高,说明ViBe算法在检测过程中受到鬼影区域的影响较大,且当新的运动目标经过鬼影区域时,被判定为背景像素的概率较大,本文算法的FPR和FNR最低,并且稍优于文献[6,8]算法,说明本文算法在去除鬼影区域的同时可以提高检测运动目标的完整性;图4中,ViBe算法在第1帧没有运动目标时的检测效果较好,但是在第1帧包含运动目标的场景下,表2中ViBe算法的平均PCC值最低,本文算法的PCC值最高,分别比ViBe算法、文献[6]算法和文献[8]算法高10.7%、4.7%和3.7%。所以本组实验表明,本文改进算法在保证前景检测的准确性和完整性的同时,能够很快消除鬼影。
想起来曾经有个小女孩打电话到电台给妈妈点歌,主持人:“为什么要给妈妈点歌呢?”小女孩:“妈妈上班很辛苦,周末还不能好好休息,要找各种作业给我,还要带我去各种兴趣班。这个时间,妈妈还一边看手机一边看我学跳舞。”主持人很感动,问要点什么歌呢?小女孩:“《女人何苦为难女人》”……
Table 2 Comparison of performance among the six algorithms表2 六种算法的性能对比
5 结束语
本文针对基于ViBe算法的前景检测过程中存在的鬼影现象且长时间难以消除的缺点,进行了深入研究并对其进行改进。首先,在前n帧中的帧差法中,引入了OTSU算法为帧差法求出自适应阈值,以分割出更为准确的前景区域;然后从去除前景区域的前n帧中合成一张真实背景图像,仿真实验结果表明,在视频的第5~15帧即可完成该真实背景图像的合成并直接跳出循环,进入ViBe算法模型的初始化阶段;最后,把扩展后的24-邻域用在ViBe模型的初始化阶段和背景模型的更新阶段,以增强模型的描述能力和鲁棒性。本文通过不同场景下的大量对比实验,验证了本文改进算法消除鬼影的快速性,适应多种场景的鲁棒性和提取运动目标的完整性。
参考文献:
[1] Barnich O, Van Droogenbroeck M.ViBe:A powerful random technique to estimate the background in video sequences[C]∥Proc of 2009 IEEE International Conference on Acoustics,Speech and Signal Processing,2009:945-948.
[2] 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.
[3] Seki M,Wada T,Fujiwara H,et al.Background subtraction based on cooccurrence of image variations[C]∥Proc of 2003 IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2003:65-65.
[4] Wu W,He Q,Wang Y,et al.An improved method of Vibe for motion detection based on Android system[C]∥Proc of 2013 IEEE International Conference on Robotics and Biomimetics (ROBIO),2013:2436-2440.
[5] Jiang Jian-guo,Wang Tao,Qi Mei-bin,et al.The traffic statistics algorithm based on ViBe[J].Journal of Electronic Measurement and Instrument,2012,26(6):558-563.(in Chinese)
[6] Yang Yong,Sun Ming-wei,Jin Yu-cheng.An improved visual background extraction (ViBe) algorithm of vehicle detection method[J].Journal of Chongqing University of Posts and Telecommunications(Natural Science Edition),2014,26(3):397-403.(in Chinese)
[8] Mahoor E,Maghsoumi H,Asemani D.An improved motion detection algorithm using ViBe[C]∥Proc of 2015 6th International Conference on Computing,Communication and Networking Technologies (ICCCNT),2015:1-5.
[9] Wu Liang,Zhou Dong-xiang,Fan Cai-zhi,et al.A ghosts detection algorithm based on histogram matching[J].Computer Engineering & Science,2008,30(7):57-60.(in Chinese)
[10] Meng Ming, Yang Fang-bo, Yu Qing-shan,et al.Human motion detection based on the information of Kinect depth image[J].Journal of Instrument and Meter,2015,36(2):386-393.(in Chinese)
[11] He Zhi-hui,Huang Shan,Ran Geng.Moving object detection algorithm based on an improved visual background extraction model[J].Journal of Chinese Computer Systems,2015,36(11):2559-2562.(in Chinese)
[12] Cucchiara R,Grana C,Piccardi M,et al.Detection moving objects,ghosts,and shadows in video streams[J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2003,25(10):1337-1342.
[13] Maadi A E, Maldague X.Outdoor infrared video surveillance:A novel dynamic technique for the subtraction of a changing background of IR images[J].Infrared Physics & Technology,2007,49(3):261-265.
[14] Han X, Gao Y,Lu Z,et al.Research on moving object detection algorithm based on improved three frame difference method and optical flow[C]∥Proc of 2015 5th International Conference on Instrumentation and Measurement,Computer,Communication and Control (IMCCC),2016:580-584.
[15] Yu Ye,Cao Ming-wei,Yue Feng.EVibe:An improved Vibe moving target detection algorithm [J].Journal of Instrument,2014,35(4):924-931.(in Chinese)
[16] Bharti M,Thind T.Background subtraction techniques—review[J].International Journal of Innovative Technology & Exploring Engineering,2013,4(2):3099-3104.
[17] Goyette N,Jodoin P M,et al.Changedetection.net:A new
change detection benchmark dataset[C]∥Proc of 2012 IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2012:1-8.
[18] Toyama K, Krumm J,Brumitt B,et al.Wallflower:Principles and practice of background maintenance[C]∥Proc of the 7th IEEE International Conference on Computer Vision,1999:255-261.
[19] Sanin A,Sanderson C,Lovell B C.Shadow detection:A survey and comparative evaluation of recent methods[J].Pattern Recognition,2012,45(4):1684-1695.
[20] Nurhadiyatna A,Jatmiko W,Hardjono B,et al.Background subtraction using Gaussian mixture model enhanced by hole filling algorithm (GMMHF)[C]∥Proc of 2013 IEEE International Conference on Systems,Man,and Cybernetics,2013:4006-4011.
附中文参考文献:
[5] 蒋建国,王涛,齐美彬,等.基于ViBe的车流量统计算法[J].电子测量与仪器学报,2012,26(6):558-563.
[6] 杨勇,孙明伟,金裕成.一种改进视觉背景提取(ViBe)算法的车辆检测方法[J].重庆邮电大学学报(自然科学版),2014,26(3):397-403.
[9] 吴亮,周东翔,范才智,等.基于直方图匹配的鬼影检测算法[J].计算机工程与科学,2008,30(7):57-60.
[10] 孟明,杨方波,佘青山,等.基于Kinect深度图像信息的人体运动检测[J].仪器仪表学报,2015,36(2):386-393.
[11] 何志辉,黄山,冉耕.一种改进视觉背景提取模型的运动目标检测算法[J].小型微型计算机系统,2015,36(11):2559-2562.
[15] 余烨,曹明伟,岳峰.EVibe:一种改进的Vibe运动目标检测算法[J].仪器仪表学报,2014,35(4):924-931.