APP下载

基于分层码本模型的阴影消除方法

2016-03-17熊庆国

计算机应用与软件 2016年2期
关键词:码本码字阴影

张 峰 熊庆国

(武汉科技大学信息科学与工程学院 湖北 武汉 430081)



基于分层码本模型的阴影消除方法

张峰熊庆国

(武汉科技大学信息科学与工程学院湖北 武汉 430081)

摘要为了解决复杂环境,特别是背景改变带来的背景模型变化,对运动目标的阴影检测与消除效果产生影响的问题,给出一种在YCbCr颜色空间下基于分层码本模型的阴影消除方法。目标检测时采用分层建模与检测技术检测出运动区域并更新背景模型,从永久背景模型中提取背景图像并采用基于色度的阴影检测方法消除阴影,避免在阴影检测与消除中使用固定背景的问题。在公开测试集上的实验结果表明,该方法能有效地适应背景的动态变化,对复杂环境中的前景目标检测与阴影消除有很好的效果。

关键词阴影检测与消除背景建模分层码本目标检测

SHADOW ELIMINATION APPROACH BASED ON LAYERED CODEBOOK MODEL

Zhang FengXiong Qingguo

(School of Information Science and Technology,Wuhan University of Science and Technology,Wuhan 430081,Hubei,China)

AbstractThe background model changes brought about by the complex environment, and in particular the variation of background have the impact on the shadow detection and elimination effects for moving objects. In order to solve this problem, we proposed a shadow elimination method which is based on layered codebook model in YCbCr colour space. In objects detection phase, the method uses the stratified modelling and detection technique to detect the moving regions and to update the background model, and extracts from the permanent background model the background images, and adopts the chroma-based shadow detection method to remove shadows, thus avoids the problem of using the fixed background when detecting and removing shadows. Results of experiment on public test set demonstrated that the method was able to effectively adapt to the dynamic changes of background, and had excellent effect on foreground objects detection and shadow elimination in complex environment.

KeywordsShadow detection and eliminationBackground modellingLayered codebookObject detection

0引言

一种常用的运动目标检测方法是背景减除法,即将当前图像与参考背景模型相减或找出不同点,从而标识非静止或新出现的物体[1]。但在检测运动目标时,因目标的阴影具有和前景目标相似的运动模式及色彩变化,会很大程度上影响目标的精确提取,从而带来错误的目标检测及分类结果。针对背景无明显变化的场景现有技术能够稳定地检测出运动目标并消除阴影。但是在一些背景动态变化的场景中,即背景在连续的图像序列中不断地发生变化,此时运动目标检测、阴影检测及消除变成了一个难点,对此应采取相应的背景更新策略。对背景减除法而言,如何正确且高效地建立并更新背景模型,以及如何去除阴影将是两个主要也是具有挑战性的工作。Yang等[2]提出的建立自适应背景模型方法能够从图像序列中获取信息建立初始背景模型,但在背景更新中存在参数选择问题,影响检测效果。王彬等[3]提出了一种基于颜色空间的浮动气球模型,将像素值序列描述为颜色空间的点集,并将背景更新过程描述为浮动气球在颜色空间内浮动的过程,用于解决监控场景中的自适应背景建模问题。相对于混合高斯模型等多种背景建模方法,码本模型对复杂背景有更强的适应性以及较好的实时性优点,成为应用最广泛的方法。

目前,Prati等[4]对阴影检测算法的分类和评估进行了详细的讨论。Sanin等[5]在其基础上提出:基于色度、物理特性、尺度和纹理特征的阴影去除方法,同时也指出基于色度特征的阴影去除方法,相较于其他三种方法,具有快速实现的特点。其中基于色度的方法假设当背景被阴影覆盖时,对应像素的亮度变小但色度却基本保持不变。邓亚丽等[6]根据阴影和目标在YCbCr颜色空间的颜色统计特性设计阴影消除算法,然而该方法使用固定的背景,一旦背景发生改变时该方法将失效。刘清等[7]根据获取的前景运动区域考虑YUV颜色空间的亮度和色度信息来检测阴影区域,该方法同样使用固定背景而没有考虑到背景发生改变的情况。张志鹏等[8]提出一种基于HSV空间的三层码本模型阴影检测方法,从备选码本中提取具备阴影色度特征的像素值构建阴影码本模型,和其他层码本模型一样,阴影码本模型需要建立和更新两个阶段,这无疑增加了算法的复杂度。李志慧等[9]根据运动目标的RGB颜色变化度的特点将运动阴影区域与非阴影部分的颜色变化表达为两个混合高斯分布过程实现阴影的检测,和码本背景建模方法相比有更大的算法复杂度。

在本文中,我们分析了经典码本模型[1],考虑到阴影区域和背景像素的相关性,结合YCbCr颜色空间的亮度分量和色度分量关联小特点,提出一种基于YCbCr颜色空间在动态背景下消除阴影的方法。首先通过双层码本模型的背景减除法提取出运动前景和阴影区域;其次从背景模型中提取实时背景图像,考虑到背景的动态变化,双层码本模型的作用在于学习背景的新变化,如静止的汽车移动后导致的背景变化;最后运用背景和阴影像素在YCbCr颜色空间中的特征设计算法实现阴影去除。本文的创新点在于:1) 在经典码本模型的基础上,为了达到检测阴影的目的重新设计了码本描述子,并实现双层码本的背景模型,该模型能够有效地适应动态背景的变化;2) 算法能够从永久背景模型中提取出当前帧对应的背景图像,并将其用于阴影检测中;3) 将易于实现的阴影检测方法应用到该模型中,关键在于能从背景模型中提取实时的背景,避免使用固定背景并增强了方法的适用性。

1背景码本的创建

经典码本模型采用一种量化和聚类技术从连续的像素采样值中构建背景模型。它为每一个像素点建立一个包含若干个码字的码本模型,码字的个数由当前场景的变化情况决定,其工作过程可分为训练和检测两个阶段。训练阶段对序列图像中每个像素点进行固定帧数的训练,按落入区间进行聚类,根据像素值及时间信息进行学习和更新[10]。

1.1码本模型的建立

假设X={x1,x2,…,xN}表示N帧连续序列图像中某一像素点的采样值;C={c1,c2,…,cL}表示由该像素点的连续采样值建立的码本模型,其中包含L个码字ci(1≤i≤L)。每个码字定义为二元组结构:

(1)

(2)

其中,Rmin和Rmax代表着R通道的最小值和最大值,其他依次类推。

1.2训练码本模型

训练阶段将得到背景码本模型,将t时刻像素点采样值(R,G,B)t与当前码本相比较,如果有码字ci(i是该码字在码本中的索引)与之匹配,表示该码字命中一次。初始码本训练过程如下:

Step1初始化每个像素的码本,即L=0。

Step2进行N帧的背景训练,每个像素的序列值X={x1,x2,…,xN},xt=(Rt,Gt,Bt),其中t=1,2,…,N;初始化cbBounds[n]代表边界,其中数组初始值设置为10,high[n]为当前像素各通道值与cbBounds[n]之和;low[n]为为当前像素各通道值与cbBounds[n]之差,并调整计算结果至0~255。

1) 以式(3)为依据在码本中寻找与之匹配的码字,其中Pn表示像素点的三个通道采样值且n=1,2,3。

learningLow[n]≤Pn≤learningHigh[n]

(3)

2) 如果码本为空,或者不存在匹配码字,则新建码字并置相关参数值如下式所示:

(4)

并设置learningLow[n]为low[n],learningHigh[n]为high[n],其中n=1,2,3。

3) 如果存在匹配的码字ci,则该码字参数按下式作更新:

(5)

Step3对于每个码字ci(i=1,2,…,L),调整λi,使λi=max{λi,(N-qi+pi-1)}。

需要指出的是:在Step2中LearningLow[n]和LearningHigh[n]表示背景训练过程中的学习边界。当下一帧图像来临时,根据学习边界是否位于low[n]和high[n]之间,对其上下界进行调整。即当新输入像素值求得的学习边界大于high[n]时,对其逐步加调整;反之,当求得的学习边界小于下限时,对其下限进行逐步减调整。其中min(Rmin,Rt)指取Rmin和Rt的较小值。

1.3构造初始背景

真正的背景应该包含静止和运动的背景像素,对于运动背景通常是类周期性的,即某一像素值在一个有限周期内重复出现[1]。在初始码本的训练过程中,考虑到可能含有的运动前景物体,通过时域指标λ改善初始训练的码本模型,滤除可能含有的运动码字,从而得到背景模型。通过下式实现:

M={ci|ci∈C∧λi≤TM}

(6)

2检测运动目标

目标检测主要是检测当前帧图像与背景模型的差异,这种差异通过像素采样值与码本是否匹配来判断。具体步骤如下:

Step1假设当前帧图像某位置像素采样值为x=(R,G,B)。

Step2在对应像素的码本模型中寻找与之匹配的码字,条件如下式所示:

min[n]-minMod[n]≤

P(x,n)≤max[n]+maxMod[n]

(7)

Step3如果符合以上条件,则说明找到了相匹配的码字,并输出为背景点;反之,则输出为前景点。若输出为背景点,则按照1.2节中的Step2的3)更新码字。

其中min[n]和max[n]就是码本训练过程中得到的各个通道的最小及最大值,即码字描述子vi。考虑到像素值的波动性,在两边界上分别增加偏移量minMod[n]和maxMod[n]。这种码本描述简单且易于实现,运算量比经典码本模型小。

3构建双层码本模型

考虑复杂背景下,相对于训练码本阶段的背景,检测阶段背景是随时可能发生改变的。若一直使用训练得来的背景模型,一旦背景发生改变,改变的区域将持续检测为运动目标,当然这种检测结果显然是错误的。为了更好地检测运动目标就需要随时更新背景,为此我们实现了分层建模与检测[1],主要目的是实现背景的更新,更好地从新的背景中检测出运动目标。

在目标检测过程中,更新码本过程采用如下方法:首先将初始创建的背景模型定义为永久码本M,同时创建一个缓冲码本H。在检测运动目标的过程中,若将当前像素检测为前景点,则在缓冲码本H中寻找与之匹配的码字并更新该码字或创建新码字,其过程和训练码本模型相似。其次,使用参数TH过滤缓冲码本中的码字,同样为了滤除运动前景所产生的码字。最后将缓冲码本中重复次数超过Tadd的码字增加到永久背景码本M中,并将超过Tdelete未访问的码字从永久背景码字中删除。具体实现如下:

Step1对于新输入的像素,如果在永久背景码本M中找到与之匹配的码字则更新该码字;若未找到与之匹配的码字,则在缓冲码本H中寻找,若找到则更新该码字,反之若未找到则以该像素各通道值新建码字,其创建过程和训练阶段相似。

Step2使用时间参数TH消除缓冲码本中代表运动前景的码字,如下式所示:

H=H-{ci|ci∈H,λi>TH}

(8)

Step3使用下式将H中停留足够长时间的码字移到M中。

M=M+{ci|ci∈H,(qi-pi)>Tadd}

(9)

Step4将M中超过一定时间未被访问的码字删除,如下式所示:

M=M-{ci|ci∈M,λi>Tdelete}

(10)

如上所述,该模型能够跟踪背景的变化,在后面的实验中可以看到:相对于训练阶段的背景,在检测阶段中若是该背景发生改变,双层码本背景模型很快会学习这一变化,并将其添加进永久码本模型中。

4背景提取与阴影去除

正如引言部分提到的,当前研究阴影检测及去除的工作都使用的是固定背景,而实际检测通常都是较复杂背景,如背景物体的运动等,因此背景提取显得尤为重要。本文实现阴影检测及去除的算法来源于阴影和背景在色度上的差别,即当区域被阴影覆盖时,阴影部分亮度低于背景像素和前景像素的亮度;而色度与背景像素色度几乎相等[4]。具体步骤如下:

Step1使用双层码本模型对当前帧图像进行运动目标检测,其结果包含运动前景及阴影区域,输出为运动区域掩膜。

Step2从永久码本背景模型M中提取运动区域掩膜所指向的背景像素,构建当前帧的背景图像。具体如下:

1) 遍历运动区域掩膜所指像素,在永久码本背景模型中找到各像素码本中首次被访问的码字,其含义代表该码字最有可能为当期帧的背景,如下式所示:

(11)

其输出结果B代表背景码字。

2) 求取满足1)要求的码字对应的各通道的最大值作为背景像素值,如下式所示:

(12)

Step3将使用当前帧与从Step2的2)中提取出的背景以及当前帧图像转化到YCbCr颜色空间中,在掩膜所指区域进行差分,根据以下阈值条件判断结果为运动前景或阴影,如下式所示:

(13)

5实验与结果分析

为了验证本文方法的有效性,本文在公共测试集(http://cvrr.ucsd.edu/aton/shadow/)上进行了测试,测试集采用三组监控录像完成实验,分别名为Laboratory_raw, campus_raw, highwayI_raw的监控录像,对以上监控录像进行了前背景转化和阴影消除实验。实验采用VS2010下利用C++编程结合OpecnCV的测试环境,所用机器配置为:酷睿双核CPU,主频2.0 GHz,1 GB内存。

5.1前背景转换测试

在实验1中视频采用320×240大小的Laboratory_raw.avi实验室监控录像,该视频中含有背景变动及阴影的复杂场景。在训练阶段选择0~20帧图像,测试阶段由20帧后图像组成。对比测试结果如下:图1为经典码本算法得到运动区域掩膜结果,图2为双层码本算法得到的运动区域掩膜结果,图3为从永久码本模型中提取的当前帧背景图像。图1中依次为视频中的第97、376、480、566帧图像。从图1中可见第0~300帧中柜子门是关闭状态;第315帧时柜子门由实验员缓缓打开,在后续帧中可以看到本文方法逐渐将停留的实验员转换成背景,同时在其运动后又检测为运动前景;第376帧显示柜子重新变为背景。需要指出的是:第315帧到第376帧图像背景发生变化,视频中实验员逐渐“融入”背景中。测试时的参数设置为TH=5,Tadd=15,Tdelete=10,单位为帧数;cbBound[n]=10,minMod[n]=3,maxMod[n]=10,其中i=0,1,2。

图1 Laboratory_raw经典码本算法检测运动区域掩膜

图2 Laboratory_raw双层码本算法检测运动区域掩膜

图3 Laboratory_raw背景图像

图2的结果显示双层码本算法检测运动区域能有效地处理背景的变化。在图3的检测结果中,当背景发生变化时,永久码本模型进行了背景的更新得到了正确的背景,表明从永久背景模型中提取当前帧背景方法是有效的。测试结果没有进行区域填充等形态学图像处理,而是给出两种方法处理的直接结果作为比较。

在实验2中采用352×288大小的campus_raw.avi校园监控录像,其中作为背景的拦车杆的离开造成了背景变化,算法能有效地处理该背景变化,将其逐渐转化为背景。图4中依次为视频中的第58、78、190、283帧图像。在第78帧图像中拦截杆离开原有位置,直到第190帧图像中拦截杆在新的位置停止运动,且原来位置转化为背景。图5提取到的背景图像说明了背景提取方法的有效性。

图4 campus_raw运动区域掩膜

图5 campus_raw背景图像

在实验3中,采用320×240大小的highwayI_raw.avi公路监控录像,该复杂场景含有阴影和左右晃动的树影。图6中依次为视频中的第95、97、101、104帧图像。图6和图7的结果表明背景的复杂变化并没有影响到运动前景和背景图像的提取。

图6 highwayI_raw运动区域掩膜

图7 highwayI_raw背景图像

5.2阴影消除测试及分析

背景改变后算法能够很快学习并转化该变化,即从缓冲码本中将码字转移至永久码本,以此构成背景模型。在背景发生改变后,使用本文中提到的阴影检测算法能够得到较好的测试结果,证明了本文所述方法的可行性和有效性。使用本文提及的阴影检测与消除算法采用的是固定阈值,其中在Laboratory_raw实验中使用阈值TY为62,TCr为3,TCb为4;campus_raw实验中使用阈值TY为50,TCr为8,TCb为6;highwayI_raw实验中使用阈值TY为106,TCr为5,TCb为6。

从图8可见阴影消除效果比图9和图10较理想,其中实验1为室内环境,实验2和实验3为室外环境。本文中基于色度的阴影消除效果考虑的条件是:当区域被阴影覆盖时,阴影部分亮度低于背景像素和前景像素的亮度;而色度与背景像素色度几乎相等。在YCbCr颜色空间中,Y分量表示亮度分量,阈值设置时优先考虑该分量阈值。三组实验数据对比可见,对不同测试数据需要不同的阈值才能得到较好的测试结果。

图8 Laboratory_raw各帧阴影消除结果

图9 campus_raw各帧阴影消除结果

图10 highwayI_raw各帧阴影消除结果

6结语

本文在前人研究的基础上实现了双层码本的背景建模算法,同时使用基于色度的阴影检测技术在YCbCr颜色空间中实现了对复杂背景的阴影检测及消除,并通过实验验证该方法的可行性及有效性。该过程主要特点是针对阴影检测与消除目标优化了码字描述子和训练过程。采用分层建模与检测使算法适用于运动背景,提出了在永久背景码本的基础上提取运动背景图像的方法,保证了在复杂环境下检测和消除阴影的准确性。在阴影消除算法中用到亮度阈值,实验结果也表明不同环境下亮度阈值对实验结果的影响。下一步的研究工作是对该算法作改进并对阈值的自适应设定进行研究。

参考文献

[1] Kim K,Chalidabhongse T H,Harwood D,et al.Real-time foreground-background segmentation using codebook model[J].Real-time Imaging,2005,11(3):172-185.

[2] Yang T,Li S Z,Pan Q,et al.Real-time and accurate segmentation of moving objects in dynamic scene[C]//Proceedings of the ACM 2nd International Workshop on Video Surveillance & Sensor Networks.ACM,2004:136-143.

[3] 王彬,冯远静,郭海峰,等.交通场景中车辆的运动检测与阴影消除[J].中国图象图形学报,2012,17(11):1391-1399.

[4] Prati A,Mikic I,Trivedi M M,et al.Detecting moving shadows:algorithms and evaluation[J].Pattern Analysis and Machine Intelligence,IEEE Transactions on,2003,25(7):918-923.

[5] Sanin A,Sanderson C,Lovell B C.Shadow detection:A survey and comparative evaluation of recent methods[J].Pattern Recognition,2012,45(4):1684-1695.

[6] 邓亚丽,毋立芳,李云腾.一种有效的图像阴影自动去除算法[J].信号处理,2011,27(11):1724-1728.

[7] 刘清,秦秀丽,文松柏,等.YUV颜色空间和图论切割的阴影去除算法[J].智能系统学报,2010,5(6):556-560.

[8] 张志鹏,王正勇,高明亮,等.基于多层码书模型的运动阴影检测算法[J].四川大学学报:自然科学版,2013,50(1):61-66.

[9] 李志慧,张长海,曲绍伟,等.交通流视频检测中背景模型与阴影检测算法[J].吉林大学学报:工学版,2006,36(6):993-997.

[10] Tu Q,Xu Y,Zhou M.Box-based codebook model for real-time objects detection[C]//Intelligent Control and Automation,2008.WCICA 2008.7th World Congress on.IEEE,2008:7621-7625.

中图分类号TP391.41

文献标识码A

DOI:10.3969/j.issn.1000-386x.2016.02.043

收稿日期:2014-08-29。张峰,硕士生,主研领域:图像处理,计算机视觉。熊庆国,教授。

猜你喜欢

码本码字阴影
免调度NOMA系统中扩频码优化设计
基于有限域上仿射空间构造新码本
你来了,草就没有了阴影
基于Zadoff-Chu 矩阵的最优码本构造方法
放 下
几类近似达到Welch界码本的构造
数据链系统中软扩频码的优选及应用
放下
让光“驱走”阴影