APP下载

改进视觉背景提取算法在室内的研究

2021-05-24权,黄俊,徐访

小型微型计算机系统 2021年6期
关键词:邻域像素点直方图

陈 权,黄 俊,徐 访

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

E-mail:1527682810@qq.com

1 引 言

在生活中,运动目标检测的应用领域越来越广泛,发挥的作用也越来越重要,其本质是分析视频序列图像进而提取运动目标.目前,常用的运动目标检测算法有:光流法,背景减法,帧间差分法[1].光流法不需要了解场景的信息,利用光流场的变化就可以准确地检测识别出运动目标的位置,但计算量大且抗噪声性能差.帧间差分法利用时间连续的两帧图像的灰度图做差分运算,得到差分图像的过程.该方法计算简单,适用于简单的场景,但容易产生大面积的空洞现象.以高斯混合模型(GMM)[2]和视觉背景提取算法(ViBe)[3]为代表的背景减法是目前最常用的运动目标检测研究方法.背景减法主要是初始化一个背景模型,将背景模型与后续的每一帧图像进行比较,得到运动目标并对背景模型进行更新[4].

由于高斯混合模型(GMM)在目标运动缓慢的情况下容易出现拖影现象,且模型计算复杂度较高,实时性较差.O.Barnich和M.Van Droogrnbroeck在2011年提出了一种像素级的前景检测算法—ViBe.ViBe算法利用视频第1帧实现背景模型初始化,利用新帧背景像素点更新背景样本模型,使得背景模型的分布规律更加符合实际,具有占用内存小,检测效果好等特点.但ViBe算法同样存在一些不足,视频第1帧存在运动目标的图像,算法会将相应区域的背景误判为前景,从而在背景模型中引入一个虚拟的前景,即“鬼影”现象.在光照条件下,运动目标产生的影子也会在背景模型中留下明显的阴影区域.“鬼影”现象和阴影问题的产生严重影响了运动目标的提取效果,对后续的目标跟踪、异常行为检测也造成了不利影响.

对于ViBe算法容易出现“鬼影”现象及阴影的问题,已经有很多的学者对其进行了深入的研究.文献[5]对传统的ViBe算法进行了改进,利用传统ViBe算法检测运动对象,对特定区域连续多帧的静态前景进行鬼影和静态对象的区分,然后使用更新策略进行背景模型的更新,加快“鬼影”的消除.文献[6]利用加权窗选择ViBe模型的动态自适应最优参数,结合帧间差分法,加速“鬼影”的消除;文献[7]利用了帧间差分的实时特征方法,将三帧差分所得二值图像与ViBe算法所得的结果图像进行逻辑运算,从而快速地消除“鬼影”现象.文献[8]提出了一种去除阴影的背景减法,利用HIS色彩空间的色相测量色度,尺度不变3值模式(SILTP)测量纹理,使用亮度、颜色色调和纹理模型对检测到的阴影区域进行阴影去除.文献[9]利用阴影区域颜色和纹理的各自特点,使用YCbCr颜色空间与CLBP相结合的方法,准确的消除前景目标中存在的阴影区域.文献[10]对传统的混合高斯模型进行改进,利用灰度比的梯度的平均值来确定阴影像素点,考虑到阴影区域与运动目标的一部分具有一定的相似性造成运动目标被错误移除,采用归一化互相关方法确保运动目标的完整性,从而准确的消除阴影区域.以上方法对消除“鬼影“现象、解决阴影问题都起到了一定的作用.

根据以上学者的研究,结合传统视觉背景提取算法在室内监控条件下容易产生“鬼影”现象以及阴影难以消除的问题.本文在传统ViBe算法基础上提出一种改进的算法.首先,采用一种外接矩形像素直方图对比法,将目标区域直方图与邻域背景区域直方图相比较,利用余弦值和巴氏距离判断直方图之间的匹配程度,从而确定并消除“鬼影”现象.其次,将得到的运动目标图像与对应背景样本模型映射到YCbCr 颜色空间,利用YCbCr 颜色空间与混合高斯阴影模型相结合,准确的判断出阴影区域在图像中的位置,实现对阴影区域的准确消除.

2 ViBe算法介绍

ViBe(Visual Background Extractor)算法,即视觉背景提取算法,是一种基于背景模型更新的前景检测算法[11],由于其独特的更新策略,使得ViBe算法的前景提取效果优于大多数的前景检测方法.

2.1 背景模型初始化

ViBe算法利用相邻像素点拥有相近的像素值,在此空间分布特征的基础上初始化背景模型.对于每一个像素点,随机选取N个邻域点的像素值作为对应像素点的背景样本集,邻域点像素值的选取主要采用8邻域方法进行随机选取.背景样本集M(x)在形式上标识为:

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

(1)

式中M(x)为像素点x对应的背景样本集,fi为随机采取的邻域点像素值.N取经验值20.

2.2 前景检测

前景检测,利用背景模型对新一帧图像中像素点进行判定,主要思想为:当新一帧图像到来,将背景模型中的背景样本集与图像对应像素值进行比较,从而判断出图像中的像素点是前景点还是背景点.判定示意图如图1所示.

定义一个以x点为圆心,R为半径的球空间SR(f(x)),计算球空间SR(f(x))与背景样本集M(x)之间交集的样本数U,U=SR(f(x))∩{f1,f2,…,fN}.当U小于预设阀值#min,该像素点为前景点,否则,为背景点.过程可描为:

图1 ViBe算法前景检测原理图Fig.1 Schematic diagram of ViBe algorithm foreground detection

(2)

其中foreground代表前景点,background代表背景点,#min表示预设阈值,#min一般取2.

二值化结果表示为:

(3)

2.3 背景模型更新

ViBe算法采用了一种保守更新结合前景点计数的更新策略,使得背景模型在复杂的条件下也能够不断地适应.对于判定为背景的像素点,有1/ψ的概率去更新所在位置的背景样本集M(x).主要是从背景样本集中随机地选取一个像素值,将判定为背景的像素点的像素值与其进行替换.同时也有1/ψ的概率更新它的邻域背景样本集.在随机的替换背景样本集的某一像素值时,背景样本集中的其他像素值在时刻t不被更新的概率为(N-1)/N,在经过dt时间段之后,背景样本集中的像素值仍然保留的概率为:

(4)

式(4)可以看出,在背景模型更新的过程中,背景样本集中的像素值是否被替换与时间无关,即这种随机更新策略是合适的.

3 改进的ViBe算法

本文主要是以人物在室内的活动轨迹为研究题材,对于使用传统ViBe算法容易引入“鬼影”现象及阴影问题.提出一种改进的ViBe算法.本文算法流程图如图2所示.

3.1 改进ViBe背景建模

相较于其他的背景建模方法,ViBe算法具有其特殊性,该算法利用视频第一帧实现背景模型初始化.主要从8邻域中随机采样20次,作为像素点x的背景样本集.该方法会造成邻域区间的某一像素值被多次采样,背景样本模型中样本重复率较高,影响了ViBe算法的准确性.针对这一问题,采用扩展法对ViBe算法进行改进.

如图3所示,24邻域是在8邻域的基础上,向8邻域的上下左右4个方向进行扩展,得到一个5×5的样本矩阵.从24邻域中随机采样20次,实现背景模型的初始化,能够减少邻域像素值被重复选区的概率.邻域的扩大,也有助于提高运动目标检测的准确性.此外,当像素点位于图像边缘或者靠近边缘的地方,如图4(a)所示,8邻域只有5、7、8这3个位置落在图像中,从这3个位置选取20个像素值,采样重复率太高.如图4(b)所示,当x位于图像的边界,将邻域进行平移,形成新的邻域布局,使24邻域全部落在图像中,然后从新的邻域布局中进行样本采样,能够避免重复采样.最后,无论像素点处于图像内还是图像边界,采用扩展法,可以保证邻域的个数为24,不会造成邻域的丢失,减低了样本被重复选取的概率.

图2 本文算法流程图Fig.2 Flow chart of this algorithm

图3 像素采样值采样Fig.3 Pixel sampling value sampling

图4 像素采样值采样Fig.4 Pixel sampling value sampling

3.2 针对“鬼影”现象的改进

ViBe算法在前景提取的时候,当视频第1帧存在运动目标,后续多帧都会存在第1帧运动目标的影像,即“鬼影”现象.从图5可以看出,“鬼影”现象的存在对前景提取产生了很大的干扰,也严重影响了运动目标检测的准确性.针对此问题,本文采用一种外接矩形像素直方图的方法,利用运动目标区域直方图与邻域背景区域直方图相似度匹配快速消除“鬼影”现象.算法的主要思想为:用R表示运动目标区域的最小外接,用RF表示检测到的运动目标区域,用RB表示矩形框内的背景区域,即RB=R-RF.然后作出运动目标区域RF对应直方图和邻近背景区域RB对应直方图,计算两个直方图之间的匹配程度.如果是运动目标,则运动目标区域直方图与背景区域直方图不相匹配,颜色分布相差较大;如果是“鬼影”,直方图相匹配,颜色分布相近.“鬼影”判别准则为:

图5 真实目标和“鬼影”标定示意图Fig.5 Schematic diagram of real target and “ghost” calibration

(5)

图6 外接矩形区域像素直方图对比Fig.6 Comparison of pixel histograms in the external rectangular area

T1和T2为所设定的阀值.经验证,当T1=0.65,T2=0.49时,效果最好.Mcosθ(Hi,Hj)>T1&MD(Hi,Hj)

(6)

(7)

Mcosθ(Hi,Hj)为运动目标区域直方图与邻域背景区域直方图两者之间的夹角余弦值cosθ.由此可知,两直方图之间的夹角越接近0,Mcosθ(Hi,Hj)越接近1,说明两个直方图越相似;MD(Hi,Hj)为运动目标区域直方图与背景区域直方图两者之间的巴氏距离D,巴氏距离结果越大,结果值越接近1,两直方图越不匹配;相反,巴氏距离结果越小,结果值越接近0,两直方图越匹配.同理,按照上述方法计算出“鬼影”直方图及“鬼影”邻域直方图之间的匹配程度.将余弦夹角与巴氏距离带入公式(5)判断鬼影区域,并将鬼影区域的鬼影点像素置为0,然后参与背景模型更新,以快速消除鬼影现象.消除鬼影如图7所示.

图7 消除鬼影Fig.7 Ghost removal

3.3 针对阴影问题的改进

阴影的产生来源于光的直线传播被物体所遮挡,从而在背景区域留下的影子.在运动目标检测过程中,阴影被提取为前景并与真实的目标连接在一起,会造成真正的运动目标形状发生改变,降低前景提取的准确性.因此,消除阴影十分重要.目前,大多数的视频采集设备所采集的视频都是基于RGB颜色空间的,但是RGB颜色空间中红(R)、绿(G)、蓝(B)3个颜色分量各分量相关性较高、多余信息较多.因此,本文提出利用YCbCr颜色空间和混合高斯模型相结合的方法准确的消除阴影区域.考虑到RGB颜色空间可以线性转换为YCbCr颜色空间,且YCbCr颜色空间中亮度分量Y与色度分量Cb、Cr相互独立.利用转换公式(8)将RGB颜色空间转化到YCbCr颜色空间.

(8)

将ViBe算法去除“鬼影”现象之后的运动目标图像和与之对应的背景样本模型映射到YCbCr颜色空间,得到运动目标图像与背景样本模型在YCbCr颜色空间中Y、Cb、Cr这3个分量的值.然后将两幅图像对应的Y、Cb、Cr分量值做差并取绝对值,进行差分运算.对于阴影点的判定,考虑阴影区域的整体亮度相较于背景图像而言,亮度较低,而且色调基本保持不变.因此,在YCbCr颜色空间中,利用公式(9)对阴影点进行判定,从而确定整个阴影区域的位置.

(9)

式中IY(x)与BY(x)、ICb(x)与BCb(x)、ICr(x)与BCr(x)分别表示运动目标像素点与背景样本模型对应点的Y、Cb、Cr分量;TY,TCb,TCr分别是Y,Cb和Cr这3个差分分量的阈值,通过相关实验,当TY=50,TCb=10,TCr=15时,满足阴影在YCbCr颜色空间的共性.因此,选取以上3个分量值作为Y,Cb和Cr差分分量的阈值.

考虑到利用YCbCr颜色空间所确定的阴影区域,包含着亮度较低且蓝色分量较大的非阴影区域.因此,采用混合高斯模型对YCbCr颜色空间所判定的阴影区域进行进一步的确定,从而准确的检测和消除阴影区域.考虑到像素点x的值随着时间而变化,设其像素值分别为{x1,x2,…,xt},这些像素值分布情况可以用为K个高斯分布的线性组合来表示,像素值xt被判定为阴影点的概率可以通过公式(10)得到:

(10)

(11)

对于时刻t像素点x的像素值xt,当xt满足公式(12),则认为该像素点与第i个高斯分布匹配.

|xt-μi,t|≤2.5σi,t

(12)

当出现像素点与高斯分布相匹配的情况时,需要对高斯分布参数的进行更新:

(13)

其中,α(0≤α≤1)是背景更新率.Et=1,说明像素点与高斯分布相匹配,需要对参数中的均值和方差进行更新;Et=0,像素点与高斯分布不匹配时,不需要更新高斯分布,只更新权值ωi,t.

(14)

将像素值与前B个高斯分布一起放入建立的混合高斯阴影模型中,并按照优先级的顺序进行逐一的匹配.如果该像素点的像素值与高斯分布相匹配,为阴影点;否则为前景点.从而实现阴影的准确消除.阴影消除如图8所示.

图8 消除阴影区域Fig.8 Shaded areas are eliminated

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

4.1 实验结果与分析

为了验证本文改进算法的实验效果,使用C++编程语言实现本文的改进算法,测试实验在AMD处理器、内存8G的Window10环境下进行,同时采用VS2019及OpenCV为开发工具.同时,算法的参数设置情况为:像素点样本集的个数默认值为20,最小相似像素点数量#min=2.同时,本文选用网上比较有代表性的公开数据集对改进算法的性能进行验证,分别为Le2i公开数据库中的“office”序列和“home”序列、CDnet2014数据集中的“cubicle”序列和“PETS2006”序列.

其中“office”序列和“PETS2006”序列在视频第1帧就包含运动目标,主要用来测试传统的ViBe算法在该视频序列下会产生“鬼影”现象及本文算法能够实现“鬼影”的消除.“cubicle”序列以及“PETS2006”序列代表了在光照条件下,运动目标对光线的遮挡产生影子,前景提取出来的运动目标会产生与人物相连的阴影区域,本文算法能够有效的去除阴影区域.“home”序列第1帧不包含运动目标,使用该序列将ViBe算法与文本算法进行自然场景下的比较.最后,本文还将三帧差分算法、GMM算法、ViBe算法与本文算法进行对比,进而验证本文算法在消除“鬼影”现象和去除阴影区域的能力,各算法在4种不同监控场景下效果图如图9所示.

图9 4类场景各算法检测效果对比Fig.9 Comparison of detection effects of each algorithm in four scenes

从图9可以看出,在“office”序列和“PETS2006”序列中,传统的ViBe算法存在明显的“鬼影”现象,并一直持续于后续多帧图像.而本文改进的ViBe算法对“鬼影”现象进行了有效的抑制.“cubicle”序列以及“PETS2006”序列中,人物的影子造成前景提取出现阴影现象.GMM、ViBe算法在提取出来的前景目标中,都含有明显的阴影区域,并且阴影区域与运动目标相连.而文本算法能够对阴影区域进行准确的消除.通过“home”序列,可以看出,在第1帧没有运动目标的情况下,本文算法的前景提取效果仍然优于ViBe算法.最后,三帧差分内部出现大量的空洞现象,GMM存在阴影区域,ViBe存在“鬼影”及阴影现象,文本算法前景提取效果更好.

4.2 实验评价指标

为了更好的检测实验效果,需要对本文算法做定量分析.本文选择查准率(Precision)、查全率(Recall)、F度量(F-measure)和漏检率(FNR)4个常用指标进行定量分析.定义为:

(15)

(16)

(17)

(18)

其中TP为检测结果中前景像素点正确的个数,FP为为检测结果为前景点实际上是背景点的个数;FN为检测为背景点实际上是前景点的个数;在4个常用指标当中,查准率(Precision)和查全率(Recall)越高,漏检率(FNR)越低,则运动目标检测的效果越好;F-measure为综合性评价指标.对本文数据集的进行定量分析,具体数据如图10所示.

从图10可以看出,物体在运动过程中,三帧差分产生大面积的空洞现象,造成在4种序列当中F度量的值最低,漏检率最高.在“office”序列和“PETS2006”序列中,ViBe算法存在“鬼影”现象,在“cubicle”序列中ViBe算法存在阴影区域,造成ViBe算法的准确率相较于“home”序列有所下降.在“home”序列中,本文算法查准率(Precision)、查全率(Recall)、F度量(F-measure)都优与其他3种算法,漏检率都低于其他3种算法.

图10 4类场景各算法性能指标对比Fig.10 Comparison of performance indicators of each algorithm in four scenarios

5 结束语

ViBe算法是一种基于背景更新的前景提取算法,该算法能够利用视频序列第1帧快速的建立背景模型,实时性好,内存占用少.若视频第1帧中存在运动目标,后续一定范围帧中容易出现“鬼影”现象.同时,ViBe算法还存在着阴影难以消除的问题.本文提出一种改进的ViBe算法,通过外接矩形像素直方图,利用前景区域、邻域背景区域的直方图相似度匹配,快速检测并消除鬼影现象.通过YCbCr颜色空间判断阴影区域,并利用混合高斯阴影模型对YCbCr颜色空间所判定的阴影区域进一步确定,从而有效的消除阴影所带来的干扰.实验结果表明,改进的ViBe算法能够有效的消除“鬼影”现象,解决阴影问题,满足实时检测的要求,提高了运动目标检测的准确性.

猜你喜欢

邻域像素点直方图
基于混合变邻域的自动化滴灌轮灌分组算法
基于近邻稳定性的离群点检测算法
用直方图控制画面影调
一种X射线图像白点噪声去除算法
基于灰度直方图的单一图像噪声类型识别研究
基于canvas的前端数据加密
图像采集过程中基于肤色理论的采集框自动定位
例析频率分布直方图
中考频数分布直方图题型展示
对函数极值定义的探讨