基于立体匹配的改进ViBe算法
2018-03-20吉爱萍
杨 硕,吉爱萍
(沈阳化工大学 计算机科学与技术学院,辽宁 沈阳 110142)
0 引 言
运动目标检测算法是计算机视觉的基础,应用广泛,因此受到了很多学者的关注并提出了大量的算法,其中具有代表性的有高斯混合模型[1]和ViBe算法[2]等。特别是ViBe算法,作为一种通用场景的运动目标检测算法,采用了随机更新策略,计算过程简洁、高效,同时还具有占用资源少,能够在大分辨率下实时运行的优点。但原ViBe算法不能很好地处理运动目标检测算法中常见的问题,如鬼影、阴影、光照变化和周期性运动目标等。因此,很多学者将经典ViBe算法作为一个框架,并在此基础上修改或添加自己的模块以实现不同的功能。例如,文献[3-4]通过扩大样本的取值范围或增加样本的比较次数改善ViBe的鬼影和阴影问题;文献[5-6]通过帧间差分或三帧差分改善Vibe的鬼影问题;文献[7]通过MeanShift迭代改善ViBe鬼影问题,等等。
同时,近年来,随着硬件设备性能的提高,以及新的、高效的算法的出现,越来越多的学者尝试将深度信息融合到传统的基于单摄像机的运动目标检测算法中。深度信息的引入能够在一定程度上改善运动目标检测算法固有的难题[8-11],如鬼影、光照变化和目标-背景颜色相近等。但多数学者使用深度相机获取深度信息,由于深度相机技术的不成熟,使得融合后的运动目标检测算法的效果受到了一定限制。具体地,市场上已经商品化的深度相机一般采用激光散斑和TOF(time of flight,飞行时间)技术,存在的主要问题有:价格昂贵,除微软的Kinect外,动辄数万元;相机参数固定,对可测的场景深度有要求,基于激光散斑的难以在室外强光下使用;受到传感器和计算量的限制,获取的深度图像分辨率较低,如TOF深度相机获取的深度图像的水平和垂直分辨率仅在200~300之间。以上这些问题使得基于深度相机的运动目标检测算法很难适应通用的视频场景,如大场景、室外监控等,限制了算法的应用。
综上分析,考虑到使用非硬件的方式,即立体匹配算法[12-14],也可以获得深度信息,且效果取决于算法本身而不受限于硬件平台,两个摄像机也可以随意搭配,具有很大的灵活性。因此,文中提出一种基于立体匹配的运动目标检测算法,并用深度信息改进ViBe算法实现运动目标的检测。首先,考虑到实时性,提出一种基于随机选择策略的局部立体匹配算法,局部算法的计算范围仅在有限的窗口内进行[15-16],因此速度快,能够满足视频的实时处理。具体地:算法在背景建模期间随机选择匹配点,将原本计算量大的立体匹配算法分成若干部分进行,这样,随着时间的推移,背景图像和深度图像将由粗到精地求出。而对于前景,也采用类似的随机选择策略估计出运动目标与背景的深度差异(大于、小于或等于)。然后,根据前景和背景的深度差异调整ViBe前景样本点被更新的概率并采用ViBe更新算法更新样本点。最后,达到运动目标检测和抑制鬼影、光照变化的目的。
1 文中方法
文中提出算法的流程如图1所示。
图1 算法流程
1.1 ViBe像素分类
ViBe算法使用随机更新背景像素的策略,它的背景模型中的每一个像素由N个背景样本点组成。令图像(x,y)位置的像素为v(x,y),则背景模型M可以表示为:M(x,y)={v1,v2,…,vN}。ViBe算法的分类过程为:令DS(x,y)为像素距离度量函数,则满足式(1)的像素被分类为背景。
#{M(x,y)|DS(v(x,y),vi) M(x,y) (1) 其中,R为距离阈值。 当M(x,y)中与v(x,y)的距离小于R的样本个数不少于#min时,v(x,y)被分为背景,反之为前景。 令vL和vR为左、右视频帧。首先,定义匹配点样本集合W(x,y)={φ1,φ2,…,φdm},其中dm(depth max)为给定的视差最大值;φi(1≤i≤dm)为样本,i表示深度。φi由以下项目组成: (1)ds和φmatch:ds为vL(x,y)和vR(x+i,y)的匹配代价,φmatch为由ds转换得到的分数值; (2)φbelief和φb-adj:分别为置信度分数和由邻域置信传播得到的分数值; (3)φskip:用于抑制不稳定的或低置信度的匹配点所用的分数值。 对于分类为背景的像素,使用类似于ViBe的随机选择匹配策略获取该点深度,具体的算法思路和流程如下: (1)扫描左视频帧。对于像素vL(x,y),有δsel的概率被继续处理(转到步骤2),否则跳过处理下一个像素。δsel的取值决定了算法速度,典型值为1/10~1。 (2)计算匹配代价。对于满足δsel概率的像素vL(x,y),随机产生一个深度值d,并生成一个d深度样本φd(x,y),按照式(2)计算和右帧像素vR(x+d,y)的匹配代价: (2) 其中,第一项是灰度代价,第二项是梯度代价,κ是权重,文中取0.2,令梯度权重更多一些。 1≤i≤dm (3) (3)继续计算该d深度样本的置信度分数: (4) (5) 其中,δadj为传播分数,取5~10。 (6) (7) 其中,γ为衰减系数,取0.8~0.95效果较好。 衰减过程类似于运动目标检测算法中的背景建模过程,从邻域传递过来的分数会随着距离和时间不断衰减,以防止分数堆积导致所占比例过大。然后,转步骤1继续扫描下一像素,直到整帧处理完毕。 对于运动目标检测算法,前景深度不需要精确求出,只要判断出前景和背景的深度差异(大于、小于或等于)即可,三种情况分为: (1)前景和背景深度相同:如果背景深度置信度高,则可能是阴影或光照变化等原因;反之,可能是由前景和背景距离摄像机较远或目标边界干扰等原因造成。 (2)前景深度大于背景:如果背景深度置信度高,则可能是鬼影,或者是匹配错误造成。 (3)前景深度小于背景:正常的运动目标。 具体的估计算法流程为: (3)同步骤2,生成若干个大于背景深度的随机深度,将匹配代价最小的记作dsHigh。, 经典的ViBe算法对分类为背景的像素会以一定的概率将其更新为分类样本(加入到M(x,y)中),并以一定概率向邻域传播;对于分类为前景的像素,则以很低的概率更新或者根据存在时间的长短进行更新。 算法在Windows 10+Visual Studio 2012+OpenCV 2.4.6环境下实现。计算机主要配置为Intel Core I7处理器,8 GB内存。由于常用的运动目标检测算法视频库中缺少能够产生深度图的左右图像视频,因此使用两个海康网络摄像机获取实验视频,视频帧率为15帧/秒,将视频分辨率调整为400×300。文中算法的主要参数设置为: (1)立体匹配部分:最大深度(视差)dm为30,更新概率δsel为1/6,匹配代价权重为0.2,置信度传播分数δadj为8,跳变抑制分数δskip为10,衰减系数γ为0.85。 (2)ViBe部分:样本个数为15,距离阈值R为20,像素分类阈值#min为4,更新概率为1/16。 实验中使用的对比算法是经典ViBe算法,其参数设置同文中算法的ViBe部分。 鬼影是由静止的物体突然运动而产生的伪运动目标,鬼影抑制能力是衡量运动目标检测算法好坏的一个重要标准。图2为经典ViBe算法和文中改进算法对鬼影的抑制效果,其中产生鬼影的物体是一个遥控玩具机器人:视频第212帧时玩具开始向右运动,226帧时运动到一个新的位置,从而在原位置产生了鬼影。图2(c)、(d)分别是经典ViBe算法和文中算法在237帧得到的前景(运动目标)图像,图2(d)中纯白色像素表示运动目标,背景是深度图。由于文中算法引入了深度信息,在目标突然移动时,鬼影处的深度信息由真实背景的深度代替,深度值会突然增加,算法对这样的像素加大更新概率,从而达到快速消除鬼影的目的。 图2 鬼影抑制效果对比 图3展示了两种算法的鬼影随时间变化的情况。 从图中可见,文中算法在第300帧时鬼影已经基本消失,鬼影存在的时间约为88帧(300-212);而经典ViBe算法在第516帧时才基本消失,比改进算法慢了3倍多。 图4是两算法抑制光照变化的结果,图4(a)为初始帧,此时场景左侧灯光未点亮,第99帧时,左侧灯光突然点亮产生图4(b)。图4(c)、(d)为产生光照突变50帧后经典ViBe算法和文中算法的效果。可以看出,虽然过了一段时间,但经典ViBe算法依然残余大量的伪目标。与处理鬼影相似,文中算法根据伪目标的深度与背景一致的性质快速消除了光照带来的影响。 图3 鬼影伪前景像素数量对比 图4 光照变化抑制效果对比 图5为光照变化的伪前景像素数量随时间逐渐减少的情况。由图可见,文中算法的下降速度远快于经典ViBe算法,并在181帧时伪前景几乎消失干净,伪前景像素的持续时间为80帧;而经典ViBe算法直到350帧时才消失干净,持续时间为文中算法的3倍多。 图5 光照变化伪前景像素数量对比 图6为算法对阴影的抑制效果。文中算法对阴影的处理与光照突变相同,都是利用前景和背景深度相同的特点增大前景点更新概率实现的,但是不同的是,阴影是随运动目标不断运动的,因此,仅通过深度信息完全去除阴影是不可能的,只能产生一定的抑制效果。由图6可见,经典ViBe算法产生的阴影面积较大,而文中算法产生的阴影面积较小。 图6视频帧长度为326帧,目标一直处于运动状态,通过每隔30帧手工计算经典ViBe和文中算法阴影面积的大小并求平均值,得出文中算法阴影面积平均比经典ViBe算法小29%,在抑制阴影方面比原算法有所提升。 图6 阴影抑制效果对比 由于文中算法使用了随机更新策略,因此在计算量上相比经典ViBe算法并未增加太多。文中算法的平均处理时间为109 ms/帧,帧速维持在8~10 帧/s,平均为9 帧/s,达到了准实时的效果。 文中提出的立体匹配算法和改进的ViBe运动目标检测算法是一个整体,而不是独立的两个部分,在硬件上只要求一台计算机和两台型号相同的普通摄像机即可,因此成本很低,易实现。同时,也克服了专用的激光散斑和TOP深度相机对环境要求高的问题,并可以通过调整两台摄像机的间距改变检测的深度范围,具有很大的灵活性和应用范围。不足之处在于,为了降低计算量,该算法仅用灰度信息作为特征,在像素分类效果上远差于颜色信息,同时深度图的精度还有待提高,这些问题将会在未来的研究中得以解决。 [1] STAUFFER C,GRIMSON W.Adaptive background mixture modelsfor real-time tracking[C]//Proceeding of IEEE conference on computer vision and pattern recognition.Piscataway,NJ:IEEE,1999. [2] BARNICH O, DROOGENBRECK M V. ViBe:a powerfu1 random technique to estimate the background in video sequences[C]//Proceeding of ICASSP 2009.Taipei:IEEE Computer Society Press,2009:945-948. [3] 余 烨,曹明伟,岳 峰.EVibe:一种改进的Vibe运动目标检测算法[J].仪器仪表学报,2014,35(4):924-931. [4] 陈 亮,陈晓竹,范振涛.基于Vibe的鬼影抑制算法[J].中国计量学院学报,2013,24(4):425-429. [5] 赵光明,韩 光,李晓飞,等.基于融合帧间差的改进Vibe方法[J].计算机技术与发展,2015,25(3):76-80. [6] 徐久强,江萍萍,朱宏博,等.面向运动目标检测的ViBe算法改进[J].东北大学学报:自然科学版,2015,36(9):1227-1231. [7] 张夏清,茅耀斌.一种改进的ViBe背景提取算法[J].计算机技术与发展,2016,26(7):36-39. [8] 杨 磊,任衍允,蔡纪源.一种基于深度数据的高斯模型运动目标检测方法[J].计算机技术与发展,2015,25(9):27-30. [9] LEENS J,PIERARD S,BARNICH O,et al.Combining color,depth,and motion for video segmentation[C]//International conference on computer vision systems.[s.l.]:[s.n.],2009:104-113. [10] OTTONELI S,SPAGNOLO P,MAZZEO P L,et al.Improved video segmentation with color and depth using a stereo camera[C]//IEEE international conference on industrial technology.Western Cape,South Africa:IEEE,2013:1134-1139. [11] 胡良梅,段琳琳,张旭东,等.融合颜色信息与深度信息的运动目标检测方法[J].电子与信息学报,2014,36(9):2047-2052. [12] SUN J,ZHENG N N,SHUM H Y.Stereo matching using belief propagation[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2003,25(7):787-800. [13] WANG L,YANG R G.Global stereo matching leveraged by sparse ground control points[C]//IEEE conference on computer vision and pattern recognition.Washington,DC,USA:IEEE Computer Society,2011:3033-3040. [14] HIRSCHMULLER H.Stereo processing by semiglobal matching and mutual information[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2008,30(2):328-341. [15] MIRCEA P M,SERGIU N,RADU D.Patch warping and local constraints for improved block matching stereo correspondence[C]//12th international conference on intelligent computer communication and processing.[s.l.]:IEEE,2016:321-327. [16] ZHANG K,LI J Y,LI Y J,et al.Binary stereo matching[C]//21st international conference on pattern recognition.Tsukuba,Japan:[s.n.],2012:356-359.1.2 背景像素深度计算
1.3 估计前景-背景深度差异
1.4 ViBe样本更新
2 实验和结果分析
2.1 鬼影抑制
2.2 光照变化抑制
2.3 阴影抑制
2.4 算法效率对比
3 结束语