官洪运,汪 晨,苏振涛
(1.东华大学 信息科学与技术学院,上海 201620; 2. 东华大学 数字化纺织服装技术教育部工程研究中心,上海 201620)
运动目标检测一直是计算机视觉领域的一个十分重要且热门的方向,受到国内外学者的普遍关注,大量的研究成果已经在科学研究和生产生活中有了广泛的应用[1],如智能视频监控和智能交通监控领域。常用的运动目标检测算法有:背景光流法[2]、差分法[3]、帧间差分法[4]、混合高斯模型法[5]等。
ViBe(Visual Background extractor)是一种像素级的背景建模和前景检测算法,是最初由BARNICH O和VAN DROOGENBROECK M[6]提出的一种运动目标检测方法,对于背景模型的更新策略是该算法最大的不同之处:其通过随机选择需替换的像素样本,并随机选择邻域像素进行更新的处理方式。当像素变化的模型无法确定时,采用随机的更新策略在一定程度上可以有效地模拟像素变化的不确定性。ViBe算法不仅简化了背景模型建立的过程,还可以处理背景发生骤变的情况。当检测到背景发生较为明显的变化时候,ViBe会舍弃原始的模型,并利用变化后的首帧图像重新建立背景模型。但是ViBe也有较多不足之处:如由于采用了运动目标的像素初始化样本集,容易引入鬼影(Ghost)区域,图像会存在噪点,并且易产生运动目标不完整等问题。针对这些缺点,不少国内外专家学者也做了大量研究。CHENG K Y等人[7]提出用首帧图像初始化背景模型,用第二帧与背景建模,并进行对比检测出目标运动区域,并对Ghost区域的每帧像素都进行初始化处理,直至Ghost区域被完全初始化。齐悦[8]等人提出一种改进视觉背景的ViBe算法,在背景模型初始化时,通过对多帧图像随机选取像素点并累加判断后,形成背景模型;闵卫东[9]等人用被检测视频的当前帧与背景帧作差分运算,采用OTSU算法计算图像的分割阈值来检测运动目标,但是由于背景差分法对光照和环境变化较为敏感,因此该算法并不能完全适应动态环境;杨丹等人[10]提出了一种多帧平均法初始化背景模型的ViBeImp算法,此算法经过大量实验验证得出在智能交通领域有较好的实用性,但是针对复杂情况的鲁棒性不是很好。杨依忠[11]等人提出通过第1帧建立背景模型,在前5帧中每个像素点的邻域随机选4个像素点背景模型,并采用“或”类型三帧差法做“或”运算去改善漏检的问题,但其在运动目标运动速度缓慢时其检测效果不是很理想。
本文提出了一种基于ViBe改进的运动目标检测算法,考虑了物体检测中往往会出现Ghost区域[12]和噪点区域,同时存在运动目标不完整等问题,本文通过研究对比各种算法优缺点和经过大量实验改进,采用连接区域的滤波操作、检测图像、检测闪烁像素等方法,经过大量对比实验表明,改进后的算法很大程度上解决了传统ViBe算法存在的一些缺陷问题。
ViBe算法是一种基于背景更新的前景检测算法,该算法基于提取像素点(x,y)周围的像素值和先前像素值,创建一组样本像素,然后将另一帧(x,y)处的像素值与样本集中的像素值进行对比,如果结果与样本集中的像素值的距离大于某个阈值,则将该像素定为前景像素,否则定为背景像素点。ViBe算法主要包含三个部分:背景模板初始化、目标检测和背景更新。
假设每一像素与其邻域像素的像素值在空域上都存在类似的分布。基于此假设,可以用其邻域中的像素来描述每一个像素模型。同时为了保证背景模型符合统计学规律,邻域的范围要足够大。当输入首帧图像时,即t=0时,像素的背景模型为:
BKM0=f0(xi+yi)|(xi+yi)∈NG(x+y)
(1)
其中,NG(x,y)表示空域上相邻的像素值,f0(x,y)表示当前点的像素值。在N次的初始化的过程中,NG(x,y)中的像素点(xi,yi)被选中的可能次数L=1,2,3,…,N。
(2)
这里上标k是随机选的;T是预先设置好的阈值。当fk(x,y)满足符合背景N次时,认为像素点fk(x,y)为背景,否则为前景。
本文采用的背景模型更新方式为随机更新策略,即每一个背景点有1/φ的概率去更新其模型的样本值,同时也有1/φ的概率去更新其邻居点的模型空间,由于背景模型逐渐向外扩散,这也有利于Ghost区域更快的识别。同时当前景点计数达到临界值时将其变为背景,并有1/φ的概率去更新自己的模型样本值。
在选择要替换的样本值时,本文采用的是随机选取一个样本值进行更新,这样可以保证样本值的平滑生命周期。同时由于是采用随机更新,一个样本值在时刻t不被更新的概率为(N-1)/N。假设时间为连续的,在dt的时间过去后,样本值仍然保留的概率为
(3)
从上述表达式中可以看出,一个样本值在模型中是否被替换与时间t无关,即说明本方法符合随机更新策略。
在本文算法中,就分割蒙版与更新蒙版区域,分别对几种类型区域做了相应处理。对于分割蒙版,本文移除面积小于等于10(像素)的前景斑点区域,填充了面积小于等于20的前景孔洞区域;而对于贴近边缘的斑点,无论尺寸全部保留都使其保持原来的状态;而对于更新蒙版,本文选择的处理方法为填充面积小于等于50(像素)的前景孔洞区域,通过此处理方式来抑制散布在前景物体中的错误背景。
当背景分布出现较多峰值时,极易出现没有明确机制去适应这种分布的情况,从而影响背景处理效果。针对此现象,本文采取的处理机制为:当某个像素经常在背景点与前景点之间跳变时(对此像素称之为闪烁像素)。对于每一像素点,本文算法存储了之前的更新蒙版,并构建了一个闪烁等级图表。本文对于闪烁等级定义如下:若某个像素是属于背景内边缘,并且当前更新的边缘不同于之前更新的边缘,那么闪烁等级增加15,否则等级减1;如果一个像素的闪烁等级大于等于30,则该像素被认为正在闪烁,并将其从更新蒙版中移除。并且只有在背景蒙板的边界,才允许闪烁等级增加,以此增强原有算法对于多峰背景分布的处理。同时本文做了极值限制处理,防止出现较大的偏差,使闪烁等级始终保持在整数范围0~150之间。
本文结果均在Intel Core i5-4200M CPU、2.50 GHz主频、12 GB内存的计算机上运行所得,运行环境为VisualStudio 2013,结合开源OpenCV库。采用GMG(Geometric Multigid)[13]、KDE(Kernel Density Estimation)[14]、传统ViBe算法和改进后的ViBe算法(图表中称为本文算法)作为对比实验。
本文在CDW-2014[15]提供的数据集中选出BadWeather、Shadow、Baselines以及DynamicBackground等情况的视频序列4组,比较包含本文算法在内的4种算法的效果。图1展示了实验中部分具有代表性的结果。
在本文选择的视频序列中,Skating图像序列是在BadWeather下,由3 900帧图像组成的,场景中大雪的背景对目标任务的检测存在较大干扰,但是传统ViBe算法与本文改进后的算法依旧具有较好的检测效果。
Sofa图像序列由2 750帧图像组成,属于Intermittent ObjectMotion类目,场景中存在阴影,此类目的特点是包含背景对象移动、废弃对象和对象短暂停止然后移动,由图可知,GMG和KDE算法误判率较高。
图1 4种算法在不同场景下的检测效果图
BusStation是在Shadow类目下,由1 250帧图像构成,GMG算法对行人轮廓区域的提取效果存在较大误差,KDE在此环境下的噪点较大传统ViBe算法在此条件下的Ghost区域较明显,而本文算法对噪点的抗干扰能力与鬼影消除都表现良好。
PETS2006序列位于Baseline类目下,由1 200 帧图像组成,根据结果可以看出,GMG算法检测区域明显误差过大,KDE算法产生了大量噪点,传统ViBe算法生成的运动员轮廓不完整。对比之下显然本文改进后的算法对此类场景处理效果更好。总体而言本文算法在大部分情况下检测效果明显优于其他算法,在复杂情况下也具有较好的鲁棒性。
对算法进行定量分析,引入图像的单位时间内处理帧数公式,分别评估GMG、KDE、传统ViBe算法和本文算法对比的处理速度,单位为frame/s,得到表1,可以得出本文算法相对GMG、KDE算法、传统ViBe算法单位时间内处理帧数分别提高了10.9%、12.7%、6.1%。
表1 四种算法检测效果对比图
此外,为了综合评价算法的优劣度,本文还采用Precision(准确率,Pr)、Recall(召回率,Re)和F1-score(F1值)参数(准确率和召回率的调和平均值) 作为定量评价指标,其计算公式为[16]:
(4)
(5)
(6)
式中,TP表示正确检测出的运动目标数目,FP表示错误检测出的非运动目标数目,FN表示未检测出的运动目标数目。图2 给出4种算法在4个不同场景视频测试的3种评价指标的平均值。
综合而言,本文改进的ViBe算法在准确率、召回率以及F1值方面均为最优,明显提高了ViBe算法的综合性能。
图2 4种算法不同指标对比
本文基于ViBe算法,提出了一种基于ViBe改进的运动目标检测算法,对视频中的运动目标同时进行前景检测和背景建模处理,并且将前景区域与背景区域直方图匹配,通过连接区域的滤波操作,填充面积小于等于50的前景孔洞区域,以此抑制散布在前景物体中的错误背景。此外,通过检测图像的闪烁像素,对每个像素存储之前的更新模板,并建立闪烁等级表,若某个像素的闪烁等级大于或等于设定的阈值,该像素则被认为正在闪烁,并将其从更新蒙版中移除,从而抑制更新模板中的闪烁区域。在CDW-2014标准数据集上的实验结果表明,本文算法在可接受的时间成本内得到了良好的综合性能,在视频图像处理领域有较广阔的应用前景。但是对于静止目标和阴影前景等问题,本文算法的检测转缺性和鲁棒性还有待提高。