APP下载

融合改进帧差和视觉背景提取算法的前景检测

2019-09-09段锁林高仁洲刘毛毛王一凡潘礼正

小型微型计算机系统 2019年9期
关键词:阴影前景阈值

段锁林,高仁洲,刘 福,刘毛毛,王一凡,潘礼正

1(常州大学 机器人研究所,江苏 常州 213164)2(常州纺织服装职业技术学院 机电工程学院,江苏 常州 213164) E-mail:1099770202@qq.com

1 引 言

运动目标检测和视频跟踪问题成为近几年的一个研究热点,并且吸引了众多研究者的目光,此后其在军事和民用领域产生了广泛的应用前景.目标检测[1]是该技术的核心,也是下一步研究工作的基础[2].目前主流的运动目标检测算法有:帧间差法、背景减除法和光流法三类.

近年来,光流法[3]已成为了有吸引力和有价值的研究对象,该方法通过为图像中的每个像素点初始化一个速度矢量,利用运动目标与邻域背景的速度矢量的差异性来检测运动目标的位置.而在实际运用过程中,光流法计算量大,且对噪声敏感,因而不适用于实时处理.帧间差分法[4]通过确定相邻两帧或若干帧图像之间像素灰度值之间的差值是否大于某一阈值来识别物体的运动:如果差值的绝对值大于某一阈值,说明存在运动目标,反之,不存在运动目标.帧间差分算法简单且对背景或光线的慢速变化不敏感,同时可根据帧序的移动快速调整以适应背景变化,对目标运动的检测灵敏度较高,但是当目标运动速度较快时,会影响目标区域的定位及其特征参数的准确提取,且预定义阈值设置不准确,容易造成误判.背景减除法[5]通过将下一帧图像与当前背景模型进行差分操作从而获得运动目标区域,该方法的关键在于背景模型的更新,自适应的背景图像更新方法会提高目标检测的准确性及背景差分的效率.

由于背景减除法算法简单,易于实现,因此在实际应用中得到了广泛的应用.该方法首先要构造场景的静态背景模型[6].目前常用的背景建模方法有:高斯混合建模(GMM)[7]、码本建模[8]以及ViBe算法[9].ViBe算法基于像素来建立背景模型,与其他背景建模算法相比,它具有更优化的检测结果,而且对硬件要求不高,所以其运算速度有了很大提高.但是无论是原始的ViBe算法还是2012年M.Van发表的ViBe+算法[10]都没有对运动目标的阴影进行去除.阴影也会随着运动物体运动而移动,并且在前景检测时被当做前景误检测出来,导致粘连、误判等其他问题.此外ViBe算法在目标检测中还会产生鬼影区域.鬼影区域指原本静止的物体开始运动,该物体所覆盖的区域就会被错误的检测为运动的,这块区域就会成为鬼影.为解决上述问题,本文结合改进的帧差法和改进的ViBe,来去除运动目标阴影和鬼影区域.

2 ViBe算法及其不足

ViBe算法是背景减除法之一,它和传统的背景建模方法不同,需要前几帧图像来构建背景模型.它利用第一帧图像就可以建立背景模型.同时该算法采用随机选择更新对应的背景模型像素,因此既加快了计算速度,而且保持了较高的检测精度,提高了抗干扰能力.算法总共分为三步:初始化背景,前景目标检测,更新背景模型.算法的具体步骤如2.1节所示.

2.1 ViBe运动目标检测算法

a)背景模型初始化

初始化第一帧图像中每个像素点的背景模型.假设每个图像中每个点的像素值及其相邻点的像素值具有相同的空间分布.在这种假设情况下,对于任一像素点x,随机选取其八邻域中的像素值作为背景模型的样本.为了确保背景模型遵守统计学规律,选取的邻域要具有足够大的范围.当获取第一帧图像时,即t=0时,该像素点模型的样本为:

(1)

图1 像素点分类Fig.1 Pixel point classification

式中,NG(x,y)为空域上相邻的像素点,f0(x,y)为点的(x,y)的像素值.在样本的随机选取过程中,NG(x,y)中的像素点(xi,yi)被选中的概率相同.

b)运动目标区域检测

后面的图像序列与背景模型进行差分.从第二帧开始,将新一帧图像中每一个像素与采样数组进行比较,判断该像素为前景还是背景,如图1所示.

假设一个集合SR,它是邻域像素点到当前点的颜色距离小于R的集合:

SR={f(xi,yi)|dist(f(xi,yi),f(x,y))}

(2)

(3)

c)背景模型更新

ViBe算法的背景模型更新在时间和空间上都是随机的.该算法采用无记忆策略来更新背景.当一个像素点被检测为背景时,对该像素点及其邻域点进行更新.随机选取N个背景模型之一将其设为PG.当获得下一帧图像Pt时,假如检测到图像Pt中的x点对应的像素Pt(x)为背景时,则需要更新PG,定义一个时间重采样因子φ,Pt(x)以1/φ的概率同时更新进入该像素的背景模型和其邻域像素的背景模型中,此抽取过程的随机性体现在时间上.用像素点Pt(x)替换像素点PG(x)八邻域中随机的一个像素点PG(r),这显示了模型更新时,在空间上具有随机性.

由上述可知,更新过程即是用Pt(x)来随机替换PG(x)和其八个邻域.利用这个更新方法,可以消除因为采集的视频中有细微抖动例如:摄像机抖动、目标微动等而引起的重影和错误,从而使检测到的运动目标更精确.

2.2 ViBe算法的缺点

ViBe算法背景建模优势明显但也具有缺点.算法的优点在于原理简单、计算量小、实时性高等.算法存在的缺点主要有阴影前景[11]、鬼影[12]和运动目标不完整等问题.产生阴影前景问题的本质原因[13]是:运动目标遮挡住了光源,投影区域因为光线被遮挡使得区域颜色比周围区域更暗颜,即阴影区域与背景区域颜色值的欧式距离差异较大,因此在进行背景差分时被错误的检测为运动前景.而鬼影产生的原因是视频第一帧中存在运动目标.因此,为了不影响后续目标跟踪、目标分类与行为识别等的准确性与鲁棒性,需要对上述不足进行改进.

3 改进的三帧差分算法

相邻两帧差分法可以方便快捷地获取运动目标,但提取出的目标内部像素较少,同时还存在明显的双影和空洞现象.三帧差分法改进了两帧差分法,有效地抑制了双影现象,但很难检测到目标之间的重叠部分,仍有空洞存在,且检测的目标轮廓不准确.为了解决上述方法的不足,本文将连续六帧图像进行差分,并通过最大类间方差法[14]确定的动态阈值校正,进而消除空洞现象.为了进一步提取完整的目标轮廓,同时采用Sobel边缘检测算子提取目标边缘特征,然后结合六帧图像差分得到完整的目标边缘.原理如下:

在视频序列中,连续读取六帧视频图像Ik(x,y),Ik+1(x,y),Ik+2(x,y),Ik+3(x,y),Ik+4(x,y),Ik+5(x,y),按顺序进行配对差分和二值化处理,差分公式为:

d1k=|Ik(x,y)-Ik+1(x,y)|

(4)

d2k=|Ik+2(x,y)-Ik+3(x,y)|

(5)

d3k=|Ik+4(x,y)-Ik+5(x,y)|

(6)

上式中,dik,i=1,2,3分别表示两两差分后的图像.然后使用阈值处理三个帧差图像,并进行二值化处理.处理公式为:

(7)

(8)

(9)

(10)

(11)

(12)

该公式中,λ表示抑制系数,在实际应用中取2;M×N表示检测视频帧的分辨率,分辨率等于该帧图像的像素总数;T为分割前景与背景的最佳阈值,值由最大类间方差法来确定,使前景和背景的区分度更明显.ΔT1,ΔT2,ΔT3是动态阈值,其值随光线的变化而变化,光线变化越剧烈,值越大.因此,在最佳阈值后加上动态阈值有效解决了光线变化带来的干扰.

对二值化后的差分图像bik,i=1,2,3可以通过公式(13)的逻辑与操作来获得运动目标的轮廓,从而获得运动目标的前景区域.

bk=b1k∩b2k∩b3k

(13)

(14)

式(14)中,Dk=0表示背景区域,Dk=1表示前景区域.

(15)

(16)

(17)

(18)

再将图像Dk与目标边缘轮廓S进行“或”运算,从而得到完整目标结果M:

M=Dk∪S

(19)

4 基于帧差和ViBe的改进算法

本文提出的改进ViBe运动目标检测算法融合改进三帧差法来进行鬼影抑制以及基于YUV分量比率来去除目标阴影.算法流程如图2所示,将改进的三帧差分图像和ViBe差分图像结合到逻辑运算中,既可以消除帧差法出现的空洞现象,也能快速消除第一帧ViBe背景建模出现的鬼影现象.对于检测出的前景图像存在阴影的问题,在YUV空间利用亮度信息设计阴影检测模型,利用候选前景与背景的YUV分量变化比率来检测阴影并去除阴影.

图2 改进算法流程Fig.2 Improved algorithm flow

4.1 融合改进帧差的鬼影抑制

ViBe背景建模使用第一帧作为初始帧来初始化背景模型,当第一帧中存在运动目标时,检测结果会出现鬼影.产生鬼影主要有两个原因:第一是初始化背景模型时,视频第一帧中含有运动目标或者运动目标从静止状态开始运动.因此只靠第一帧建立背景模型,虽然能使模型快速适应背景的转变,但不能完全区分背景像素点和前景像素点,导致背景模型中可能含有前景像素点,从而产生鬼影.

针对ViBe算法易出现鬼影问题,在运动目标检测过程中,首先分别利用ViBe算法和改进自适应动态阈值分割的帧差法获得运动目标,记ViBe算法获得的当前帧前景图为Pk,帧差法获得的前景图为Dk,并对两幅图像进行比较,标记出可能的“鬼影”区域.最后,根据标记的像素数量与设定的阈值进行比较判定该区域是否为鬼影区域.具体过程如下:

利用改进的三帧差法获得运动目标的前景区域.由于存在各类噪声的干扰,因此在进行上述操作后的二值前景图中仍会存在一些白点,本文通过形态学滤波去除这些噪声,并通过连通性检测来填充孔,以获得最终的完整的检测结果,详细的形态学后处理算法如算法1所述,其中面积阈值是通过实验得到的.

算法1.

vector>contours1,contours2;

findContours;

容器storage1盛放检测到的连通区域;

for(inti=0;i

if 第i个连通域的面积>15

将该区域放入到容器 storage2

else

丢弃该区域;}

for(intj=0;j

if 第j个连通域的面积15-85之间

drawContours;}

其次,利用ViBe算法创建背景模型,并使用自适应阈值R(x)代替原始算法的固定的距离判定阈值,阈值大小与样本集的方差σf成正比例关系.σf由公式(20)计算.

(20)

σf越大,表示背景噪声越大,判定阈值应该越大.这是因为在某些情况下,如背景中树叶的晃动,光线变化和水面波纹变化会干扰背景模型的建立,所以应增大阈值来避免这些变化的干扰.自适应阈值用公式(21)计算.

R(x)=0.5×σf∈[20,40]

(21)

同时在背景建模时为每个像素设置一个从零开始的计数器.使用自适应距离阈值分割下一帧图像得到前景区域Pk.这时前景区域可能会出现鬼影,因此利用公式(22)来判定鬼影区域.

(22)

当像素的计数值大于阈值N时,将其判定为鬼影区域的像素,并将计数器重置为零,如公式(23)所示:

(23)

由于运动目标和鬼影具有相似的特点,目标区域的像素也会被标记为鬼影,因此它不能被添加到计数器中,也就是说阈值N应该大于等于运动目标和鬼影重合的帧数.随后将该像素值置为零如公式(24)所示:

(24)

最后对所得到的候选前景图像进行中值滤波,从而在鬼影消除的同时去除噪点.

4.2 基于YUV分量变化比率的阴影去除

ViBe算法与其他的运动目标检测算法一样也存在阴影问题.由于运动阴影在检测时会随目标一起运动,所以往往会将阴影作为运动目标的一部分而使得目标发生形变,造成跟踪、分类与识别精度下降,特别是当多个目标相距较近时,阴影可能将这些目标连接在一起,使得目标分割不彻底,最终导致跟踪失败、误分类和误识别.因此,运动阴影消除在目标检测中有着非常重要的作用.

本文在上述提取出的候选前景图像中先检测出阴影,再去除阴影.本文阴影检测模型是基于YUV色彩空间,因为在YUV空间下灰度图像和彩色图像转换非常方便,即对颜色的亮度信息和色彩信息分离较为方便.因此处理图像要比在RGB空间中下简单.公式(25)描述了YUV色彩空间与RGB色彩空间的转换关系,即

(25)

在YUV空间中,Y分量可用于描述像素亮度信息,阴影区域变化很明显,理想状态下的UV两种色差分量不随光照变化而变化,但是,因为光线传感器存在偏差和图像在采集传输、存储过程中产生的随机噪声,U分量和V分量存在差异,即使相同亮度同样存在一定的误差.基于以上考虑,设计如公式(26)的阴影检测模型,利用候选前景与背景的YUV分量变化比率来检测阴影.

(26)

式中,yF(i)、uF(i)、vF(i)和yB(i)、uB(i)、vB(i)分别表示前景像素和背景像素的YUV三分量;ay、au、av和by、bu、bv分别对应前景的YUV分量和背景的YUV分量的判别阈值.假设前景像素符合公式(26),则判断该像素为目标的阴影,应该与检测前景分离.

5 仿真结果与分析

在上述研究的基础上,从CDW-2014数据库中选取视频序列进行实验.该数据库包含31个视频序列.实验设备基本配置:CPU为Intel(R)Core(TM)i5-4210H 2.89Ghz,内存为8GB,Windows 64位操作系统的PC机,软件实现平台为VS2013和OpenCV2.4.10.为了和原始ViBe算法做对比,本文改进ViBe算法的参数选择与原ViBe算法一致即:#min=2,也就是说如果有两个采样点小于自适应距离阈值R(x)就将该像素点判定为背景,否则为前景,采样点个数N=20,重采样因子φ=16.为验证改进算法的目标提取效果,本文采取了不同场景分别用不同算法做了去鬼影、去阴影和综合性能分析.

5.1 去除鬼影仿真实验

从数据库中选取了视频highway.avi,进行去除鬼影实验,从视频出现运动目标时第进行处理.对比实验效果如图3所示.从图中看出,三帧差法虽然鬼影消失的也较快,但检测目标不完整出现了明显的空洞.混合高斯算法和原始ViBe算法明显出现了鬼影,混合高斯算法经过70帧处理之后鬼影消失,ViBe算法经过大约200帧处理之后,鬼影才逐渐消失,这极大地影响了目标检测的效果.而本文通过ViBe算法结合帧差法经过20帧左右就快速地去除了鬼影.实验结果表明,改进的算法的检测结果和实际场景相符合,同时鬼影去除较快,检测效果较好.

图3 各算法鬼影去除效果Fig.3 Ghost removal effect of each algorithm

5.2 阴影检测实验及可行性分析

为了验证本文的阴影检测模型的有效性,本文选取LISA实验室的不同环境下的三组视频数据作为实验数据集.对三组视频序列进行阴影检测,并通过手动调整阈值达到最佳的阴影区分效果.检测结果如图4所示.

为了检验本文的阴影检测模型的效果,引入了阴影检测率η、阴影识别率ξ和综合指标θ三个评测参数,如公式(27)-公式(29)所示.

(27)

(28)

(29)

式中,TP表示目标(F)和阴影(S)检测正确的像素数,FN表示目标(F)和阴影(S)检测错误的像素数.η越高表明正确检测为阴影的像素数越多,检测到的阴影中包含的真实前景部分少.ξ越高表示正确检测为前景的像素数多,包含的阴影部分少.θ表示算法的综合性能.各组视频的评价指标结果如表1所示.

图4 阴影检测结果Fig.4 Shadow detection result

从表1中可以看出,通过候选前景和背景的YUV分量变化比率阈值的检测方法能够有效区分阴影和运动目标,阴影的检测率可达到95%以上,且综合性能指标可达到92%以上.

表1 阴影检测评价指标
Table 1 Shadow detection evaluation index

性能指标Campuslabroomη97.0698.5298.56ξ89.2391.5194.12θ92.9894.8996.29

5.3 算法综合性能分析

为了进一步评估上述几种算法的性能,采用fall.avi视频图像共1700帧和driveway.avi视频图像共1410帧作为样本,fall.avi存在摇晃树叶的噪声干扰,driveway.avi存在光线变化的干扰.利用不同算法对视频图像fall.avi和driveway.avi进行检测,检测结果如图5和图6所示.

为了定量分析各算法的性能,定义如下性能评价指标:

(30)

(31)

(32)

式中,DTP、DFP分别为正确检测到的前景的像素数和错误检测到的虚假前景的像素数;DFN为前景中被漏判为背景的像素的数量;DTN为正确检测到的背景像素数.DPCC为分类正确率,表示的是正确检测到的前景像素和背景像素占所有像素的比例,作为算法的整体性能指标.DFPR为误报率,表示的是检测到的错误前景的比例.DFNR为假阴性率,表示漏判为背景的前景像素占背景像素数的比列.DPCC越大,表明算法总体性能越好,DFPR和DFNR越小,表明算法检测性能越佳.

图5 Fall.avi检测效果对比Fig.5 Fall.avi comparison of detection results

CDW-2014数据库的fall.avi视频中,第263帧中存在运动目标,并将其作为视频处理的第一帧,因为“鬼影”现象是由于第一帧中包含运动目标而产生的.在此后的100帧分别统计个算法DPCC,DFPR和DFNR.图7所示的是各算法的DPCC曲线.因为视频中车辆的行进速度较快,因此DPCC并没有呈现出单调递增的趋势,而是存在着一定的波动.

图6 Driveway.avi前景检测效果对比Fig.6 Driveway.avi detection effect comparison

从图7中可以看出,在各算法的DPCC曲线中,本文算法的整体性能最好,平均单帧DPCC值相较于其它算法提高了9%-25%.此外,还根据检测结果统计了各算法的DPCC,DFPR和DFNR的平均值如表2所示.

图7 各算法的DPCC曲线Fig.7 DPCC curve of each algorithm

帧差法是通过对视频中相邻图像做差分运算来检测运动目标,用前一帧图像作为当前帧的背景模型,其背景不积累,且更新速度块,因此鬼影消失较快.混合高斯模型在一建立高斯分布模型时对权重进行了归一化,因此最先建立的模型其权重相对较大,因此当目标运动离开了原始位置后依然被判别为前景. 当获取到了更多的后续视频帧时, 此时更多的场景信息被高斯背景模型获取到,之前检测错误的前景区域会过渡为背景.ViBe算法利用第一帧初始化背景模型,因此模型初始化非常快,但当第一帧中存在运动目标时,鬼影将伴随模型的初始化而产生,原始ViBe算法未对鬼影做任何处理,为此原ViBe需要花费很长时间更新背景模型才能完成对鬼影的抑制.而本文改进算法利用帧差法消除鬼影快的特点,对产生的鬼影进行了处理,从而使改进算法能够快速消除鬼影.从表2中可以看出,三帧差分法和本文算法鬼影消失的最快,原始ViBe算法鬼影消失的最慢,本文算法的鬼影消失速度是原始ViBe算法的将近十分之一.ViBe算法的DFPR和DFNR都相对较高,说明了鬼影对ViBe算法的检测效果影响较大,当鬼影未消失,而之后的运动目标与鬼影区域重叠时,容易被判定为背景像素.本文算法的DFPR和DFNR的值最低,是因为本文不仅对鬼影区域进行了抑制,还对目标阴影区域进行了去除,提高了检测目标的正确性.

表2 四种算法的性能比较
Table 2 Performance comparison of four algorithms

算法DPCCDFPRDFNR鬼影消失帧数三帧差分0.65060.08260.204720混合高斯算法0.80700.07150.213667ViBe0.81230.08970.1620190本文算法0.90230.05020.032521

表3 四种算法的平均每帧耗时比较

Table 3 Average time-consuming comparison of four algorithms

算法fall.avidriveway.avi三帧差分算法5442混合高斯算法610547ViBe3127本文算法6045

在上述检测过程中,分别统计了四种算法的平均运行时间,如表3所示.

从表3可以看出,由于混合高斯算法需要建立复杂的背景模型,因此比其他算法需要更长的处理时间,实时性差.而三帧差法和ViBe算法的运行时间相比混合高斯算法有较大的缩短.而本文算法因为利用了改进的三帧差法,因此运行时间虽略高ViBe,但相差无几,可以满足实时检测的要求.

6 结束语

本文将改进的三帧差分法和ViBe算法相结合,提出了一种改进的运动目标检测算法.一方面,通过改进帧差法获得的前景和ViBe检测的前景进行逻辑运算来判断鬼影区域是否存在,若存在将其去除.另一方面,使用自适应阈值解决背景中噪声对ViBe算法背景建模的干扰.最后设计了阴影检测模型,快速地去除了候选前景中的阴影,从而进一步提高了算法的检测效果.尽管如此,本文的算法仍存在缺陷,阴影检测阈值会随场景光线变化而改变,自适应阴影检测不能通过手动设置阈值来实现,下一步将对该问题进行改进.

猜你喜欢

阴影前景阈值
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
我国旅游房地产开发前景的探讨
四种作物 北方种植有前景
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
你来了,草就没有了阴影
离岸央票:需求与前景
量子纠缠的来历及应用前景
阴影魔怪