APP下载

改进视觉背景提取算法在室内监控场景的应用

2020-09-29刘武启谭钦红李英杰刘志豪郑小楠

计算机工程与设计 2020年9期
关键词:鬼影像素点光照

刘武启,谭钦红,李英杰,刘志豪,郑小楠

(重庆邮电大学 通信与信息工程学院,重庆 400065)

0 引 言

常用的前景目标提取算法有光流法、帧差法和背景减除法[1-3]。其中背景减除法中视觉背景建模(ViBe)因其较小的计算量、优良的实时性,成为了目前广泛应用的一种前景提取方法[4,5]。ViBe算法利用第一帧就可快速地建立背景模型,极大提高了运算量和实时性[6,7]。但同时ViBe算法仍然存在一定的不足,易产生“鬼影”干扰以及光照变化误检等问题。针对ViBe算法存在的问题,文献[8]提出了一种基于时空梯度特征的解决方案,根据背景的复杂性和变化情况,对判别机制的参数进行自适应调整,有效解决了复杂场景下阴影和“鬼影”的干扰。文献[9]利用帧间信息,引入二次判断策略,提出一种ViBe结合帧间差分法的“鬼影”抑制策略。文献[10]通过统计前景点在整幅图像像素点中所占的比重来判断光照变化情况,从而实现ViBe对光照变化的鲁棒性。

结合以上学者的研究,针对ViBe算法在室内监控场景中的不足,提出一种改进的ViBe算法。首先,针对“鬼影”干扰,本文采用一种外接矩像素直方图对比法,通过对外接矩中目标区域与其相邻区域进行直方图对比消除“鬼影”;其次,针对室内光照变化影响,本文通过邻间帧图像局部区域积分值快速匹配判断光照变化情况,再根据不同光照变化类型采取不同改进策略,提升室内监控场景光照变化鲁棒性。

1 ViBe算法介绍

ViBe算法是比利时列日大学提出的一种高效的前景提取算法,其因实时性好、计算效率高而受到了研究者的广泛关注[11]。ViBe算法可分为3个步骤:背景模型初始化、前景目标提取和背景模型更新。

1.1 背景模型初始化

ViBe算法利用第一帧就可以快速地建立好背景模型。算法通过给图像中的每一个像素点都建立一个像素级模型完成初始化背景建模。设图像中任意一点x, 它的像素记为f(x), 然后在与像素点x相邻的八领域随机选取N个像素点,以此来作为像素点x的背景样本集,我们记x位置的像素模型为M(x), 如下所示

M(x)={f1,f2,…,fN}

(1)

式中: {f1,f2,…,fN} 代表从八领域中随机选取的N个像素点样本值,N一般取20。

1.2 前景目标提取

通过背景模型的初始化,ViBe算法为图像中的每一个像素点都建立了一个像素模型M(x),当新的一帧图像到来时,通过将新帧图像中每一个像素点与对应像素模型中的样本值进行距离比较,从而判断出该像素点是前景点还是背景点。判定如图1所示。

图1 ViBe算法前景判定

图1中f(x) 表示待检测图像中x点的像素值, {f1,f2,…,fN} 构成x处的背景模型M(x),SR(f(x)) 是以x点为圆心、R为半径的范围空间,将x像素点与背景模型M(x) 中每个样本值进行距离比较,记录下距离小于预设阈值的样本点个数即SR(f(x))∩{f1,f2,…,fN}, 如果记录的样本点个数小于阈值#min, 则判定x点为前景点,否则即为背景点。具体表示如下

(2)

式中:FG代表前景点,BG代表背景点,SR(f(x))∩{f1,f2,…,fN} 表示当前像素点x与背景模型M(x) 在欧式距离上小于固定阈值R的个数, #min表示规定的最小判定阈值, #min一般取2。

1.3 背景模型更新

在背景模型更新中,ViBe算法采用了一种时间取样更新策略,当检测出某点为背景像素点时,会有1/ψ的概率更新该点的背景模型。其中ψ为时间采样因子,一般取ψ为16。当确定需要更新背景模型时,以新的像素值随机取代像素样本集中样本值。同时通过空间邻域更新策略,将需要更新的像素点随机更新到该点邻域的背景模型中。

2 改进的ViBe算法

本文主要以ViBe算法在室内监控场景进行前景提取为研究点,考虑到ViBe算法“鬼影”效应影响及室内监控场景中光照变化干扰,因此针对以上两个关键问题对ViBe算法进行改进,改进后的算法流程如图2所示。

图2 ViBe改进算法流程

2.1 针对“鬼影”影响的改进

ViBe算法进行前景目标提取时,如果视频首帧图像中存在运动目标,那么在后续多帧前景提取中都会存在首帧运动目标的影像,而这个通常被称为“鬼影”。“鬼影”的存在对前景提取产生很大的干扰,针对此问题,本文采用了一种基于外接矩像素直方图对比的“鬼影”检测算法。算法的主要思想为:当外接矩中目标区域与其相邻区域在像素直方图上表现为较强的相似性时,则该外接矩标定的目标即为“鬼影”目标,接下来需要对判定出的“鬼影”点改变其像素值属性(像素值置0)并同步更新背景模型。通过此过程,即可找出真实前景和“鬼影”,实现首帧“鬼影”影响的改进。

图3展示了真实前景目标与“鬼影”在实际视频帧中外接矩标定情况。通过对每个外接矩内所有像素进行直方图统计,可得到图4对比。从图中可以看到,真实的前景目标与其相邻区域在像素直方图上具有很大的差异性,而这种差异性在“鬼影”区域表现的极低。

为了更好地描述目标区域与其相邻区域在像素直方图上的差异性,可以通过定义两直方图差异性阈值T来表示,具体表达式如式(3)。本文采用巴氏系数ρ(p,p′) 进行计算,如式(4)所示,其中p和p′分别代表外接矩中目标区域和其相邻区域直方图数据。当巴氏系数小于给定的阈值T(0

图3 真实目标和“鬼影”标定

图4 外接矩区域像素直方图对比

(3)

(4)

2.2 针对光照变化影响的改进

传统的ViBe算法不能适应光照变化的影响,当室内监控场景中突发光照变化时,如突然开灯、门窗开闭行为等,都会使前景提取引入大片干扰区域,因此对光照突变鲁棒性的改进具有重要研究意义。由图2中算法改进流程可知,如何准确判定监控场景光照变化是改进算法的核心。通过实验发现,当有光照变化时邻间帧在积分图像上表现为很强的差异性,主要体现在图像区域积分值上,而这种差异性在无光照变化时会很小。基于此本文设计了一种邻间帧图像局部区域积分值快速匹配方法来实现光照变化的检测。

2.2.1 图像局部区域积分值算法

对于一张灰度图像,积分图像中某点v(x,y) 的值就是该图像从左上角开始到该点所围成的矩形区域中所有点的灰度值之和[12]。表达式如下

(5)

式中:I(x′,y′) 表示在位置 (x′,y′) 像素点处的灰度值。对给定的一幅图像通过从左到右、从上到下的方式全部遍历一遍可得出积分图像公式如下

U(x,y)=I(x,y)+U(x-1,y)+
U(x,y-1)-U(x-1,y-1)

(6)

通过式(6)可以得到整幅图像的积分值,因此在积分图像上可以得出任何局部区域的积分值大小,令所求局部区域积分值为sum(z), 如图5阴影区域所示。

图5 局部区域积分

所以任意区域图像积分值可表示为

sum(z)=U(x,y)+U(x-w,y-h)-
U(x-w,y)-U(x,y-h)

(7)

2.2.2 光照鲁棒性改善

为实现局部积分值匹配,本文将一幅图像重新划分为N×N局部大小块,通过图像局部区域积分值算法可以得出每个区域的积分值,再将邻间帧对应区域积分值对比可以快速判断光照的变化情况。本文选取N为6,共36个局部区域,通过对36个积分值进行对比来判断监控场景中全局光照突变和局部光照突变情况。邻间帧积分值对比如图6所示。

图6 不同光照下邻间帧图像积分值对比

图6(a)、图6(b)表示无光照变化时相邻两帧图像,它们对应的局部区域积分值对比如图6(c)所示,在图像局部区域积分值上无明显变化;图6(d)、图6(e)表示实验者开灯行为前后两帧图像,灯光的开启使得室内发生了全局性光照突变,通过图6(f)中相邻两帧局部区域积分值对比可以看到,积分值发生了急剧变动。本文通过统计积分值发生剧烈波动的区域块个数占区域块总数的比重来评判光照变化情况,判断表达式如下

(8)

(9)

其中,f(i) 用来判断i区域是否发生光照变化,当满足相邻两帧对应区域积分值大于给定阈值K时,则记该区域为光照变化区域。K为经验阈值,本文选取K为2000。通过记录光照变化区域个数num(f(i)) 占区域块总数num(F) 的比重将光照变化分为无光照变化、局部光照突变和全局光照突变。

对于全局光照突变,视频帧中完全无法定位到真实的前景目标,为了快速消除这种干扰,需要找到合适的新帧图像来重新构建背景模型。ViBe算法具有单帧建立背景模型的特性,因此可利用光照变化后的第一帧图像来重新构建新的背景模型。同时为了避免新“鬼影”的出现,通过结合2.1节中“鬼影”消除算法可同步去除;对于局部光照突变,受干扰区域相对较小,通过重新调整背景模型更新因子ψ, 将其设为ψ/2, 加快背景模块更新使其适应局部光照变化。

3 实验评价指标与参数设置

3.1 实验评价指标

为了验证本文改进算法的有效性,验证实验利用VS2017及OpenCV 3.4.1作为开发工具,在内存8 GB、Window10 64位操作系统上进行。为了更有效验证改进算法的性能,通过参考现有前景检测相关评价指标,本文选择查准率Precision、查全率Recall、F度量F-measure和相似度Similarity这4个常用指标作为衡量。具体计算公式如下

(10)

(11)

(12)

(13)

其中,TP表示判定正确的前景点个数,FN表示判定错误的背景点个数,FP表示判定错误的前景点个数。

3.2 实验结果与分析

本文采用了网上公开的4个不同室内监控场景下数据集对改进算法性能进行验证,分别是Le2i公开数据库中“home”序列和“office”序列、PETS2015公开数据库中“lightSwitch”序列以及“bootstrap”序列。其中“home”序列和“office”序列选取了首帧包含运动目标的视频,主要用来验证改进算法中“鬼影”消除的有效性;“light-Switch”序列以及“bootstrap”序列分别代表了室内突然开灯行为以及外界光线射入影响两种情形,可以用来评估改进算法对全局光照突变和局部光照突变的适应能力。同时本文还将改进算法与Codebook算法、GMM算法、传统ViBe算法进行了比较,通过采用主观评价法与客观评价法相结合来评价改进算法的性能,各算法在4种不同监控场景下效果如图7所示。

在“home”序列和“office”序列中,由于视频序列首帧存在运动目标,传统的ViBe算法在前景提取时都出现了明显的“鬼影”影响,而本文改进的ViBe算法对“鬼影”现象进行了有效的抑制;“lightSwitch”序列中,室内一开始为关灯状态,随后实验者进入房间并开起灯光,灯光开起的瞬间相邻两帧间发生了明显的全局光照突变现象。由图7可知,Codebook算法、GMM算法、传统ViBe算法都出现了大片的误检区域,而本文改进算法通过新帧图像重新初始化背景模型很快适应了光照的变化;“bootstrap”序列中,由于外界阳光的射入使得室内光线发生了局部光照突变,Codebook算法、GMM算法、传统ViBe算法都无法适应局部光照的变化,本文改进的ViBe算法通过调整背景更新因子能够有效地抑制光照的影响。表1显示了改进算法与Codebook算法、GMM算法、传统ViBe算法在处理速度上的对比,改进后的算法由于引入了外接矩像素直方图对比和局部区域积分值匹配,因此相比于传统的ViBe算法需要更多的处理时间,传统ViBe算法平均处理速度高达25.2帧/秒,而改进后的算法平均处理速度只达到了20.9帧/秒,但仍能满足室内监控场景的实时性要求。

图7 4类场景各算法检测效果对比

表1 4类场景各算法处理速度对比

为了更全面评估改进算法的性能,本文还对比了4类监控场景中各算法的查准率、查全率、F度量和相似度。由图8(a)、图8(c)、图8(d)可知本文改进算法在查准率、F度量和相似度上都优于其它3类算法,在具有光线变化的复杂监控场景中,如给出的“lightSwitch”序列和“bootstrap”序列中,本文算法在查准率、F度量和相似度上体现的优越性更大。由图8(b)看出本文改进算法在“lightSwitch”序列和“bootstrap”序列中查全率明显低于其它3类算法,这是因为其它3类算法在光照变化的影响下带入了大片误检区域,从而使得查全率提升。在“home”序列和“office”序列中,其它3类算法由于内部空洞的影响,导致查全率均较改进算法低。通过与其它3类经典算法的对比可知,本文改进算法具有较高的检测效果,同时也保证了实时性要求。

4 结束语

图8 4类场景各算法性能指标对比

ViBe算法是一种高效的前景提取算法,但它在室内监控场景中容易受到“鬼影”及光照变化的影响。针对这两方面问题,本文对ViBe算法进行了改进。首先通过外接矩像素直方图对比检测出“鬼影”区域,再对“鬼影”区域的像素点重新赋值并同步更新背景模型,实现对“鬼影”的快速去除;对于光照变化影响,通过邻间帧图像局部区域积分值快速匹配识别全局光照变化和局部光照变化,再根据不同变化情况采用不同改进策略,实现不同光照的快速适应。结果表明,改进的ViBe算法有效地解决了监控场景中“鬼影”及光照变化影响带来的误检问题,提高了室内监控场景前景目标提取的精度。

猜你喜欢

鬼影像素点光照
节能环保 光照万家(公益宣传)
当幻想的光照进童心世界
基于局部相似性的特征匹配筛选算法
隐蔽的力量
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
如何消除胶印“鬼影”?
基于单应性矩阵的图像拼接方法的对比分析
实时的静止目标与鬼影检测及判别方法