APP下载

采用局部更新策略快速消除鬼影的ViBe改进算法

2020-01-16吉爱萍陈未如

沈阳化工大学学报 2019年4期
关键词:鬼影像素点前景

吉爱萍, 陈未如, 杨 硕

(沈阳化工大学 计算机科学与技术学院, 辽宁 沈阳 110142)

运动目标检测广泛应用于公共安全、智能交通、智能视频处理等领域,是视频和图像处理领域的重要研究方向.运动目标检测是整个视频监控系统中非常关键的一步,准确实时地提取出目标是后续目标跟踪以及行为理解等处理的基础.目前,已有的运动目标检测方法大致可以分为3类:帧间差分法[1-2]、背景差分法[3-5]和光流法[6].帧间差分法主要利用视频图像序列中连续的2帧或3帧的差异来检测运动区域,算法简单易于实现,能在动态背景条件下完成运动目标检测.但是帧差法检测出的目标不完整,只能检测出目标的边界,同时,对于运动过快和过慢的物体需要掌握好合适的时间间隔.背景差分法分割出运动目标是通过对输入图像与背景图像进行比较,相对于帧差法背景差分法可以较完整地提取出运动目标,但是消耗内存大,适用范围受限,而且对光照和外部条件造成的动态场景变化过于敏感.其研究重点主要是建立背景模型与更新背景模型,混合高斯模型(GMM)[7]和ViBe算法是最具代表性的.高斯混合模型基本思想是利用统计值来表示背景,从而建立背景模型.高斯模型能够实时地更新背景信息,有效地克服背景扰动、摄像机抖动等产生的噪声.但是高斯混合模型计算量大,并且在光照较强的环境下检测效果不是很好,不能处理阴影问题,无法精确处理运动缓慢的物体.光流场是包含两个分量的速度矢量场,光流法通过建立光流方程来确定运动像素的矢量状态,对其进行提取和跟踪.光流法的优点是可以适用于背景变化较快以及摄像机发生运动等复杂的场景中.但是该算法复杂度高,实时检测时对硬件要求也较高,并且难以适应光照等情况.

ViBe算法[8-9]是一种像素级视频背景建模或前景检测的算法,由Oliver Barnich等学者在2009年提出,实时性好、适应性高、鲁棒性强,相比较于所熟知的几种算法ViBe算法在不同环境下的检测效果比较好,硬件内存占用少,思想简单易于实现,适用于多种复杂场景.但算法也存在一些问题,例如鬼影、运动目标变为静止、检测目标不完整和阴影问题等.当运动目标从静止到运动或者当背景模型的初始帧存在着运动目标时就会出现鬼影.鬼影是ViBe算法中存在的一个难点问题,如何快速有效消除鬼影是智能视觉监控系统中需要解决的实际问题.

一些研究者对鬼影问题也提出了改进,文献[10]增加了鬼影抑制模块,通过Otsu算法计算出最适合当前帧的分割阈值,除了传统ViBe算法外再对前景像素点进行二次判别,该方法能够很好地适应前景目标运动变化较大的情况,更好地抑制了鬼影同时保持较高较稳定的检测率.文献[11]通过扩大样本的取值范围来避免样本的重复选取,用隔行更新的方式更新邻域,避免了错误分类扩散;为了去除噪声的影响,用小目标丢弃和空洞填充策略;通过添加阴影去除模块,加强了对鬼影的抑制.文献[12]通过将颜色信息与ViBe相结合,在RGB空间将像素点转换到HSV颜色空间对颜色进行失真度比较,建立双模型以减少计算量.文献[13]采用比较局部区域背景模型和新来帧两者像素值方差大小来判断该区域存在的是鬼影还是静止目标,然后采用不同的策略对鬼影和静止目标的背景区域进行更新.对于普通场景和背景较为复杂的场景,文章改进算法均有效.文献[14]通过用ViBe改进算法和模板匹配法对多行人场景进行了目标检测,结合了原ViBe算法与帧间差分法使二值图像中的鬼影消除速度加快.文献[15]通过探测法和重新初始化鬼影区域来加速鬼影的消除,但是对于对阴影问题以及原本静止的物体突然运动而产生的鬼影不能够完全消除.综上,本文提出了基于局部更改背景模型更新概率的改进ViBe算法,更加快速地消除了鬼影,同时也加快了运动目标静止后融入到背景当中的速率.

1 ViBe算法及鬼影性质简介

1.1 模型工作原理

在ViBe背景模型中,每个背景点都存储了一个样本集,然后通过比较新的像素值和样本集来判断是否属于背景点.若新的观察值属于背景点,那么这个新的观察值与样本集中采样值比较接近.记P(x)为x点处的像素值,N(x)={p1,p2,p3,…,pN}为x处的背景样本集(样本大小为N),SR(P(x))表示以x为中心R为半径的区域,如果N(x)[{SR(P(x))∩{P1,P2,…,PN}}]大于一个给定的阈值#min,那么即可认为x点属于背景.

该模型主要包括初始化背景模型、检测前景目标和更新背景模型3个步骤.

第1步:初始化背景模型

一般的运动目标检测算法在初始化背景模型时由一定长度的视频序列完成,而ViBe算法主要利用单帧视频序列就能完成背景模型的初始化.ViBe为每一个像素都建立一个容量为N的背景模型,记为N={p1,p2,p3,…,pN},如图1所示.初始化时随机选择视频的第1帧中当前像素的8邻域的任意一点像素值存储到当前像素点的背景模型当中,得到pi.此操作重复n次后就得到了初始的背景模型N.

图1 ViBe背景模型Fig.1 ViBe background model

第2步:前景目标检测

从第2帧开始,标记当前像素点x的像素值为P(x),R为阈值,计算{P(x)-R,P(x)+R}区间与x的背景模型相交的样本集个数:

#{{P(x)-R,P(x)+R}∩N(x)}

(1)

若相交样本集个数大于等于#min,则判断当前像素点为背景,否则为前景值.

第3步:更新背景模型

ViBe采用无记忆更新策略,并且前景像素值永不会被充当背景模型.当一个像素点被判断为背景点时就要对此点和它的邻域进行背景模型更新.从N帧背景模型中随机选择一帧t(x),用新一帧中被判断为背景点的像素值更新t(x)中对应的点,然后再用此像素值随机更新t(x)8邻域任一点像素值,完成背景模型的更新.

1.2 ViBe算法中鬼影以及静止目标问题

ViBe算法思想简单易于实现,运算效率高,是一种非参数背景建模算法,具有良好的实时性和适应性.但其算法本身也存在局限性,鬼影和静止目标就是两个比较典型的问题.

1.2.1 鬼影

ViBe的初始化非常迅速,一般从第一帧开始初始化背景模型,如果第一帧当中含有运动目标,那么ViBe算法将会错误的将运动目标当做背景像素进行建模,不但会检测到运动目标还会在目标的原始位置检测到一个虚假的运动区域,即鬼影.或者当长时间静止的物体开始运动时背景模型的更新速率比较慢,也会出现鬼影.

1.2.2 静止目标问题

如果运动目标长时间没有运动就会被背景逐渐吸收,这就是静止目标区域.目前,有两种情况可以产生静止目标:(1)物体从运动状态变为静止状态,此时ViBe背景模型在更新过程中会将静止目标逐渐吸收融入背景中去;(2)当物体运动十分缓慢时,ViBe算法也会错误的将其当成静止目标逐渐融入进背景中去.

在原始ViBe算法中,鬼影是随着背景模型的更新才慢慢消除掉的,这需要很长一段时间.另外当运动目标突然静止时,ViBe算法会在长时间内将该目标判断为运动目标,需要经过很多帧后才能融合进背景中, 这样不但降低了运动目标检测的实时性也增加了后续的运算量.本文在原始ViBe检测算法的基础上稍作改进,快速地抑制了鬼影并且加快了运动目标静止后融入到背景中的速度.

2 改进的ViBe检测算法

考虑到鬼影的存在以及原始ViBe算法在消除鬼影方面速率较慢等原因,依据鬼影的性质对原始算法进行改进,加快了鬼影的消除速度,解决了运动目标静止过程中融入背景缓慢的问题.

2.1 基本思想

在原始的ViBe检测算法中,鬼影是被误判为前景的背景像素点.首先对当前像素进行采样,每个像素点保存10~15个采样值,然后对当前像素点与采样集进行匹配,如果这个匹配值大于所给定的阈值(一般为3),则判断此像素点为背景点,否则为前景点.当这个匹配值满足一定的概率之后,则更新背景像素.若当前像素点已经被判断是背景像素,根据相邻像素点空间一致性原则,其周围邻域像素与当前像素值相差不多,也可能为背景,那么当前像素则会传播到其邻域中去.根据这个原理,本文在原始算法上做出了一些改进.原始算法在处理当前帧中的像素时,通常是按照一定的规则由左至右、由上到下进行扫描,这样增加了计算量,减慢了检测速度.本文只需要检测静止运动目标的边缘像素,如果其边缘像素值前后两帧未发生明显变化,那么此像素点为鬼影的可能性很大,则将其背景模型更新概率加大几倍,使其自适应地更新背景模型.

2.2 具体过程

鬼影是被误判的前景像素点,在同一时刻,相邻像素点的像素值相差不大.在原始ViBe检测算法中,被误判的前景像素点需要达到一定帧数之后才能被发现为鬼影,然后再经过一定帧数后才能被消除,这样大大减慢了检测效率.本文从被分割出来的前景像素边缘入手,将前后两帧的边缘像素值做与运算,如果结果一致,那么加大背景的更新速率,达到快速消除鬼影的目的,具体过程如图2所示.

首先根据原始ViBe检测算法对运动目标进行检测,分割出前景运动目标.此时,计算分割图像的边缘gseg,用gNow表示当前帧,gPre表示上一帧,为使gNow和gPre始终相差一帧,将gNow 复制给gPre,然后对分割图像的边缘求像素及与运算.如果gNow与gPre不一致,那么则判断当前帧边缘像素为前景目标,如果gNow与gPre一致,那么很可能这个边缘像素为伪前景目标,此时加大背景模型的更新概率为pheiFast,这样加大更新概率就能快速地消除鬼影.具体过程为:

(1) 输入视频序列S={S1,S2,S3,…,Sn};

(2) 初始化背景建模,N={v1,v2,v3,…,vN},N=20;

(3) 用原始ViBe检测算法对当前帧Si进行运动目标检提取:

#{{v(x)-R,v(x)+R}∩M(x)}

(2)

v(x)为当前点像素值,R为阈值,其值为15,#为{v(x)-R,v(x)+R}区间与x的背景模型相交的样本集个数,若#>min则判断v(x)为背景,否则为前景,此时min=4.

(4) 标记静止目标边缘Gi,对边缘图像当前帧与前一帧做像素级与运算:

(3)

(5) 如果判断为背景图像,则与运动目标以及静止目标非边缘区域一样采用原始更新策略pheiSlow更新,此时phei=16,pheiSlow=Phei*6;判断为伪运动目标的区域则加大更新概率pheiFast进行更新,pheiFast=Phei/4.

(6) 重复步骤 (2)~(5),直至所有的伪运动目标区域被消除,终止循环并返回计算结果.

图2 改进算法流程Fig.2 The flow diagram of improved algorithm

3 实验结果

实验环境为配置opencv2.3.1的visual studio2010,运行在联想YangTianA6000k-00上,内存4.0 GB,处理器为Intel core i3 3.40 GHz.视频由Dell vostro1405 USB摄像头拍摄,帧速率为24帧/s,分辨率为640×480.

本文一共进行4组实验,分别是户外条件下鬼影消除和运动目标突然静止,以及室内环境下本文改进ViBe算法对上述两种情况的处理.经过实验发现,改进ViBe算法效果十分明显,鬼影处理速度明显大于原始ViBe算法,对于突然静止的运动目标也能很快地融入到背景中去.

3.1 户外环境下实验对比结果

图3所示为户外车辆自然运动的真实场景,由于ViBe算法用第一帧作为初始帧初始化背景模型,此时一辆行驶的车辆出现在背景模型中,故第18帧时可以清楚地看见检测结果中出现了鬼影.改进ViBe算法在83帧时鬼影基本已经被消除,而原始ViBe算法则在第479帧才将鬼影消除完毕,由实验对比结果可知改进ViBe算法确实比原始ViBe算法更加快速有效地消除了鬼影.

图4为户外条件下伪前景像素数量随时间逐渐减少的情况.改进ViBe算法的下降速度远快于原始ViBe算法,并在83帧时伪前景几乎消失干净,伪前景像素的持续时间为83帧;而原始ViBe算法直到479帧时才消失干净,持续时间大概为本文算法的6倍.

图5展示的是在户外条件下原始ViBe算法与改进ViBe算法当中静止目标像素数量随时间变化的情况:改进ViBe算法在第962帧时鬼影(白点)已经基本消失干净,其存在时间为285帧,而原始ViBe算法直到第1933帧才将静止目标融入到背景中去.改进ViBe算法在户外消除静止目标方面比原始ViBe算法快了近4.4倍.

在运动目标检测过程中,如果运动物体突然静止,而背景模型更新速率较慢,就会在前景目标中出现静止的目标.如图6所示,第497帧时运动的车辆驶入画面,在第677帧时静止不动,此时原始ViBe算法处理下的前景目标包含了未融入背景中去的静止车辆.在第962帧时改进ViBe算法基本已经将静止目标融入进背景中,而原始ViBe算法则需要在第1939帧时才将静止车辆融入进去.

为了说明改进ViBe算法的性能,将原始ViBe算法与改进ViBe算法抑制鬼影的速度进行比较,结果如表1所示,在户外条件下,原始ViBe算法对鬼影的抑制以及静止目标的消除均较改进ViBe算法速度慢.

图3 户外鬼影抑制对比Fig.3 Comparison of outdoor ghost detection

图4 户外鬼影像素数量对比Fig.4 Comparison of outdoor ghost number

图5 户外静止目标数量对比Fig.5 Comparison of outdoor static object detection

图6 户外消除静止目标对比实验结果Fig.6 Comparison of outdoor static object detection

表1 户外算法消除鬼影(静止目标)速度Table 1 Outdoor algorithm eliminating ghost (stationary target) speed s/帧

3.2 室内环境下实验对比结果

在室内环境下,本文的改进ViBe算法对鬼影的抑制效果也比较明显,如图7所示.

在第一帧是人物静止,在第105帧时起身开始向对面走去,此时鬼影产生.改进ViBe算法在第182帧时基本消除了鬼影,而原始ViBe算法在第422帧时才将鬼影消除完毕.由此可见,在室内人工环境下改进ViBe算法对于鬼影的抑制也是比较快速和有效的.

如图8所示,改进ViBe算法在室内环境下鬼影像素数量下降的速度要远快于原始ViBe算法.

改进ViBe算法在第182时鬼影已经消除干净,而此时原始算法鬼影数量还剩余将近5.8×103个.

图7 室内鬼影抑制对比Fig.7 Comparison of indoor ghost detection

图8 室内鬼影像素数量对比Fig.8 Comparison of indoor ghost number

室内静止目标对比实验结果如图9所示.室内环境下第108帧开始人物开始推着椅子向对面运动,在第324帧时放下椅子独自离开,此时椅子为静止目标.通过实验可以清楚地看见在第499帧时,通过改进ViBe算法,静止目标基本消除完毕,而原始ViBe算法要在第960帧时才将静止目标消除完毕.

改进ViBe算法与原始ViBe算法在室内消除静止目标的速度对比如图10所示.改进ViBe算法在499帧时静止目标已经完全融入到背景中,而原始ViBe算法则要在960帧时才消除完毕.相比之下,改进ViBe算法较原始ViBe算法快了4倍.

图9 室内消除静止目标对比实验结果Fig.9 Comparison of indoor static object detection

图10 室内静止目标数量对比Fig.10 Comparison of indoor static object detection

室内环境下原始ViBe算法和改进ViBe算法对鬼影和静止目标抑制对比速度如表2所示.

表2 室内算法消除鬼影(静止目标)速度Table 2 Indoor algorithm eliminating ghost (stationary target) speed s/帧

4 总 结

相比较于其他运动目标检测算法而言,ViBe算法简单高效并且鲁棒性强,但是如何快速有效地消除鬼影和静止目标一直都是ViBe检测算法中的难点,很多学者就这两种问题进行了研究与改进.本文提出的改进办法是通过检测分割图像的边缘像素来判断其是否为伪运动目标,然后通过加大更新概率来对其进行消除,经过实验验证本文的改进ViBe算法能够快速有效地消除鬼影并且对于运动中的物体突然静止也能很快地融入到背景中去.由于本文只考虑边缘所以对噪点的抑制也比较好.相比较于其他改进的ViBe算法而言,本文的改进ViBe算法简单且高效,但是对于运动缓慢的物体,本文的改进ViBe算法对其检测效果不是很明显,缓慢运动的目标作为ViBe检测算法中的难点,还有待于日后研究.本文改进的ViBe算法提高了运动目标检测的时效性,为后续的目标跟踪、识别、行为理解等打下了坚实的基础.

猜你喜欢

鬼影像素点前景
我国旅游房地产开发前景的探讨
基于局部相似性的特征匹配筛选算法
四种作物 北方种植有前景
离岸央票:需求与前景
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
如何消除胶印“鬼影”?
基于单应性矩阵的图像拼接方法的对比分析
量子纠缠的来历及应用前景