APP下载

基于改进ViBe算法的运动目标检测

2020-11-16张光跃苑佳靖康心策

关键词:像素点噪声动态

张光跃,苑佳靖,周 涵, 康心策

(石家庄铁道大学 电气与电子工程学院,河北 石家庄 050043)

0 引言

运动目标检测是计算机视觉中重要的组成部分,也是智能视频监控系统中的核心技术。运动目标检测是将视频图像序列中的前景运动目标从背景中提取出来,其提取效果对于后期的目标跟踪、分类和行为检测有至关重要的影响[1-3]。目前主要的运动目标检测算法有帧间差分法[4]、混合高斯模型[5](Gaussian mixture model,GMM)、视觉背景提取算法[6](ViBe)。其中ViBe算法凭借运算复杂度小、实时性好、可移植性强等优点,成为现阶段应用广泛的运动目标检测算法。ViBe算法首先将检测帧的像素值与对应背景模型进行匹配,再通过阈值判断其是属于前景还是背景。随机选择需要替换的像素样本,随机选择邻域像素进行更新。在无法确定像素变化的模型时,随机的更新策略在一定程度上可以模拟像素变化的不确定性。但是ViBe算法容易出现“鬼影”[7]现象,在光照变化、动态场景(如树叶抖动,水纹波动等)和镜头抖动等情况下鲁棒性较弱。因此很多学者对ViBe算法提出了改进,文献[7]提出了一种结合检测阈值判断的方法,先确定是否存在身体局部运动,然后结合扫描线填充算法对目标进行补偿填充,得到完整的运动目标,进而有效克服“鬼影”。文献[8]采用了扩大样本的取值范围来避免样本的重复选取,采用隔行更新方式对邻域进行更新,避免了错误分类的扩散,提高算法的检测精确度;文献[9]使用ViBe算法结合像素生命长度来消除检测中的“鬼影”;文献[10]通过搭建一个融合大时空域信息并基于长时间视频序列的背景框架,将长时间记忆模型与短时间记忆模型融合,进而有效解决了光照变化对背景提取的影响。这些改进算法在一定程度上提高了ViBe算法的适用性,但是在镜头抖动下检测的效果均不理想,容易将整个背景都误检为前景,并且在动态场景下动态噪声会对检测结果造成干扰。因此提出一种改进的ViBe算法。首先在背景模型更新阶段判断镜头是否抖动,若发生抖动则加入运动补偿算法,消除镜头抖动对背景模型更新的影响,同时提出一种对动态噪声的过滤方法,使得检测的前景图像更准确,进而提高运动目标检测的准确性。

1 ViBe算法核心回顾

1.1 背景模型初始化

图1 前景检测原理图

ViBe算法对视频首帧图像中每个像素点都建立包含N个背景样本值的背景模型,假设v(x,y)表示像素点(x,y)在欧氏颜色空间的像素值,vi表示索引为i的背景样本值。可定义像素点(x,y)的背景模型如式(1)所示

M(x,y)={v1,v2,…,vn}

(1)

1.2 前景检测

前景检测的本质是二分类问题,通过将当前检测帧中像素点与背景模型进行比较来判断检测像素点是否为前景。比较过程如图1所示,以v(x,y)为中心,R为半径定义球体SR(v(x,y)),Qmin为设定的阈值,当SR(v(x,y))与M(x,y)交集的个数大于Qmin时,则认为v(x,y)为背景,反之则认为是前景。

1.3 背景模型的更新

ViBe算法提出了一种较为保守的背景模型更新策略,这种更新策略只利用已判断为背景的像素点来更新背景模型,设φ为二次抽样时间因子,当一个像素点被确定为背景时,它有1/φ的概率替换匹配背景模型中的样本值。同时也有1/φ的概率替换匹配其邻域点背景模型中的样本值,这样保证了背景模型中样本的平滑指数衰减,从而能够有效适应场景变化。

2 改进的ViBe算法

ViBe算法是一种可应用于多模态背景中的优秀的运动目标检测算法,但在镜头抖动和动态场景下容易出现误检测的问题,因此对ViBe算法中背景模型的更新提出了改进。首先使用ViBe算法进行前景检测,然后判断镜头是否抖动,若镜头出现抖动则加入运动补偿算法消除镜头抖动对背景模型更新的影响,接着通过对动态场景下的动态噪声进行过滤,获取更精准的前景图像,进而提高运动目标检测的准确率。图2为算法流程图。

图2 算法流程图

2.1 加入运动补偿的背景模型更新

镜头的抖动使得整幅图像都会按照镜头的运动而运动,背景的整体运动轨迹相似,因此可以通过判断背景是否整体运动来判断镜头是否抖动。检测方法的基本思想是:当检测图像中背景的运动超过阈值时认为背景出现了整体运动,此时判定镜头发生抖动,然后估计出背景点的全局运动参数,利用这些参数在构造背景时加入运动补偿,进而检测镜头抖动情况下的运动目标。现阶段基于运动补偿的方法大多基于这样一个假设:背景景物的深度差异对图像序列帧间全局运动的影响可以忽略。也就是说所有的背景景物在图像序列中都假设共享同一组全局运动参数,镜头的抖动满足这个假设,可以使用运动补偿。

对于像素点(x,y),在t时刻的亮度为E(x,y,t),用U(x,y)表示像素点水平方向的移动分量,用V(x,y)表示像素点垂直方向的移动分量,因而有

(2)

在经过Δt间隔后,像素点运动到一个新的位置E(x,y)=E(x+Δt,y+Δt),当Δt→0时,有E(x,y,t)=E(x+Δx,y+Δy,t+Δt),对E(x+Δx,y+Δy,t+Δt)进行Taylor展开得

(3)

忽略无穷小量ε,由于Δt→0,得

(4)

Exu+EyV+Et=0

(5)

对8个邻域的像素点求解上述方程,可以消除方程中的多义性,进而求得相机的运动模型参数。在获得比较准确的镜头运动模型参数后,对图像进行运动补偿,补偿公式

(6)

图3 像素分类匹配参数对识别正确率的影响

式中,Cx、Cy为运动补偿参数,可以由求得的相机运动模型取值。经过运动补偿后,对求得的图像每个像素点的光流和镜头的运动求方差,通过设定背景检测阈值,得出前景和背景。加入运动补偿之后的Qmin对算法正确识别率的影响如图3所示。

由图3可得,加入运动补偿后图像的正确识别率有所降低,为了更精确地对像素点进行分类,取Qmin=3(ViBe算法中Qmin=2)。

2.2 动态噪声过滤

传统ViBe算法在动态场景(如树叶抖动,湖面水纹波动等)下检测会出现大量的动态噪声,这些动态噪声使检测结果误检率提高。本文提出一种对动态场景中动态噪声进行过滤的方法,步骤如下:

经过大量反复实验得出,当n=13、Dmin=20时,检测精度较高,可满足应用需求。采用“动态噪声过滤”的实验结果如图4所示。其中,输入图像为ChangeDetection数据集中Overpass序列的第2 378帧图像,由图4(b)可以看出,由于树叶的抖动导致ViBe算法检测的前景运动目标中包含大量的动态噪声,而图4(c)为经过动态噪声过滤后的ViBe算法检测结果,可明显看出,经过动态噪声过滤后的ViBe算法过滤掉了大部分的动态噪声,显著提升了检测的准确率。

图4 加入“动态噪声过滤”的实验结果图

3 实验结果与分析

改进ViBe算法开发环境为VS2017、OpenCV3.2.0,PC配置为Inter_i5CPU 8G RAM。实验数据来自于开源数据集Wallflower数据集和ChangeDetection数据集中4种不同场景下存在运动物体的视频序列,其中WavingTrees为室外场景下镜头无抖动的动态场景测试序列(有行人走动,以及树与树叶的抖动);Bootsrapping为室内场景下镜头无抖动但存在光照与阴影的测试序列;Movecar与people为室外场景下镜头有较大抖动的测试序列(分别有汽车和人的移动)。

为了验证本文提出算法的性能,使用GMM算法、传统ViBe算法、文献[8]算法和文献[9]算法与本文算法对不同视频测试序列进行前景运动目标检测实验,实验过程中参数都选取默认值,取不同测试序列中出现明显运动物体的图像作为对比结果,如图5所示。

图5 数据集测试结果

3.1 定性分析

从测试的结果可以看出(见图5),GMM算法易受背景动态变化、光照与阴影的影响,如在WavingTrees中出现了较大面积的空洞,在镜头抖动的情况下几乎将整个背景都误判为前景点,因而不适合应用于镜头抖动的场景;ViBe算法也易受到背景动态变化、光照、阴影的影响,虽然随机选择邻域像素、无记忆的随机时间子采样背景、更新策略对镜头的抖动有一定的适应性,但仍出现了大面积的误检测情况;文献[8]算法对于复杂的动态场景有一定的改进,但仍存在大量的动态噪声,并且在镜头抖动的情况下误检率较高,并不能有效检测出运动目标;文献[9]算法对于有动态噪声干扰的背景检测效果一般,对于有光照变化的场景检测效果良好,但是在镜头抖动的情况下,无法有效检测出运动目标;从图5中可以看出本文算法的检测结果明显优于其他对比算法,不但在镜头抖动和动态场景下有效检测出了前景运动目标,而且动态噪声更少,在光照和阴影等因素存在时,仍能保持较高的检测准确率,说明本文算法可以较好地适用于日常情况且具有很好的鲁棒性。

3.2 定量分析

二分类问题常见的评价指标为召回率recall和精确度precision

(7)

(8)

为了定量的分析本文算法的性能,采用调和平均值F和相似性S来评估各算法性能

(9)

(10)

式中,TP为正确分类的前景像素点个数;FP为误判为前景的背景像素点个数;TN为正确分类的背景像素点个数;FN为误判为背景点的前景点的个数。F和S为百分比,因而取值在[0,1],数值越高,性能越好。由图6、图7可以看出,算法的性能指标与结果图是相互匹配的,本文算法在准确率和识别率上都能较好地完成在镜头抖动和动态场景下的运动目标检测。

图6 不同测试场景F值对比

图7 不同测试场景S值对比

为引入更加精确的评价,采用文献[12]的评价标准,使用准确率(Pr)、召回率(Re)、特异性(SP)、误检率(FPR)和漏检率(FNR)进行全面的算法对比与分析。

(11)

采用ChangeDetection提供的算法性能统计代码,对ChangeDetection和Wallflower两组测试数据集中30 836张图像进行统计求取平均值,测试结果如表1所示。

表1 算法对比评价结果

通过实验测试得出如下结论:(1)在没有镜头抖动以及光照变化的静态场景中,上述算法都能满足要求;(2)GMM在动态场景下焦策效果较差,在镜头抖动的情况下误检率极高;(3)ViBe算法能抑制一些较小幅度的镜头抖动,但是在较大幅度抖动的情况下也不能满足检测要求,且平均准确率只有0.69,而误检率则高达0.21;(4)文献[8]算法对于目标的间歇式运动、光照变化表现出较好的健壮性;文献[9]算法对于背景中的鬼影有很好的抑制作用,但是在镜头抖动的情况下仍会出现大面积的误检情况;(5)本文算法在各项评价指标中都具有优势,多个测试序列的平均准确率和平均召回率达到了0.835和0.819,明显优于ViBe算法和其他对比算法,而漏检率和误检率则为几种算法中最低。证明了本文算法能较好完成不同干扰因素下的运动目标检测,弥补了ViBe算法在镜头抖动和动态场景下检测准确率低的不足,扩大了算法的应用范围。

4 结论

针对ViBe算法在镜头抖动和动态场景下误检率高的问题,提出了一种适用于镜头抖动和动态场景下的改进ViBe算法。并将此算法与ViBe算法、GMM算法、文献[8]算法和文献[9]算法进行了对比实验,为了能够适用于镜头抖动情况下的运动目标检测,通过加入运动补偿,使得算法的应用范围得到了很大提升,通过设置连通区域集合,完成动态噪声的过滤,使算法在动态场景下的检测结果更加精确。实验结果表明,改进后的ViBe算法有效弥补了经典ViBe算法的不足,在镜头抖动和动态场景下仍能准确检测出前景运动目标,包括准确率和误检率等多项评价指标均优于ViBe算法和其他对比算法,鲁棒性也大大提升。

猜你喜欢

像素点噪声动态
国内动态
国内动态
国内动态
图像二值化处理硬件加速引擎的设计
基于声类比的仿生圆柱壳流噪声特性研究
基于局部相似性的特征匹配筛选算法
动态
汽车制造企业噪声综合治理实践
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密