基于自适应阈值和动态更新因子的ViBe改进算法

2022-07-05 08:12李宏涛
应用光学 2022年3期
关键词:像素点前景阈值

陈 伟,刘 宇,李宏涛,孙 静,严 宁

(1.西安应用光学研究所,陕西 西安,710065;2.西安文理学院 机械与材料工程学院,陕西 西安,710065)

引言

运动目标的有效检测是目标实时跟踪、行为分析和行为判断的前提[1]。运动目标检测已经广泛应用于军事安防、机器人导航、车辆辅助驾驶、医学以及航空航天等领域,是计算机视觉领域的热点问题[2-3]。目前主要的运动目标检测方法包括:光流法[4]、相邻帧差法[5]及背景减除法[6]。光流法根据像素灰度值变化进行运动目标检测,其精度高且计算复杂,不能直接用于实时场景处理;相邻帧差法计算量小、速度快,但检测出的运动目标会出现空洞,适用于简单场景;背景减除法计算量小、实时性好,是目前经常使用的方法[7-10]。背景减除法按照模型参数分为2类:第1类是有参数模型,如混合高斯模型GMM(Gaussian mixed model)算法[11],其背景建模是基于像素样本统计信息,计算量随着高斯分布个数增加而增加,计算时间长,实时性差;第2类是无参数模型,如核密度估计KDE(kernel density estimation)算法[12]和ViBe(visual background extractor)算法[13],其特点是计算量小,实时性好。ViBe算法是一种全新的背景减除法,该算法的主要思想是利用单帧建立背景样本,然后通过后续帧和背景样本的距离提取后续帧中存在的运动目标,并动态更新背景样本。实际应用中由于光照变化以及场景中的动态事物(如晃动的树叶、水波纹等场景)会对检测结果产生干扰,使得该算法仍有提升空间。本文针对ViBe算法的不足,对算法中的背景建模、前景和背景判断以及更新因子选取等进行了改进,改进的算法可以有效地抑制各种干扰,适应不同的场景。

1 ViBe算法

ViBe算法计算过程简单,实时性高。该算法主要包括背景建立、前景和背景提取、背景更新策略等,具体过程如下文。

1)背景建立

选取第1帧建立背景样本,对第1帧中每一个像素 (x,y)建立一个大小为 N 的背景样本集M(x)={v1,v2,···,vN},其中vj为第j 个背景样本,j=1,2,···,N,N取经验值20。vj的像素值是其第1帧对应位置的8邻域随机采样值,循环 N次,遍历每一个像素点,即完成背景样本集的建立。

2)前景和背景提取

判断当前像素 (x,y)是否为背景。通过计算当前位置像素值与所有对应位置背景样本集像素值的欧式距离,然后统计大于距离阈值的个数,判断当前像素是背景还是前景,具体计算如(1)式、(2)式所示:

式中:j=1,2,···,N ; dis(fi(x,y),vj)表示第i帧图像在( x ,y)处 的像素值与背景样本集 vj在 ( x ,y)处像素值的欧式距离,通常 R= 20; cnti(x,y)是距离值小于R的个数。遍历第 i帧所有像素点,然后按照(2)式进行二值化处理:

式中:T 表示匹配阈值,经验值取2; Bi(x,y)为检测结果。

3)背景更新策略

通过上面2个步骤分离出前景和背景,下面主要是针对前景和背景采用不同的更新策略。若当前像素 (x,y)为前景,对应计数值加1;若计数值大于50,当前像素强制更新为背景,对应计数值清零,当前像素按照背景更新。若当前像素 (x,y)为背景,按照1 /φ(φ为更新因子,经验值16)的概率更新当前位置背景样本集和邻域位置背景样本集。更新当前位置背景样本集,用像素值 fi(x,y)替换随机选取的背景样本 vid对应位置的像素值,即vid(x,y)=fi(x,y),其中 id 为从1到 N随机选取。邻域位置背景样本集更新,随机选取一个样本 vidu,在当前像素的8邻域随机选取一个位置 ( xu,yu),用当前像素值fi(x,y)替 换样本vidu在 ( xu,yu)的像素值,即vidu(xu,yu)= fi(x,y),其中 i du为 从1到 N随机选取。

2 ViBe算法改进

ViBe算法通过第1帧建立背景,如果第1帧存在运动目标,在后续的检测中会出现“鬼影”现象,而且传统算法中样本集大小、前景和背景判断阈值、匹配个数以及背景更新因子都采用固定值,不能适应场景变化,容易出现目标丢失。本文针对这些问题提出一种改进的ViBe算法,背景建模采用随机选取背景样本和24邻域法获取初始背景;前景和背景判断采用OTSU算法与均匀性度量法的平均值作为背景和前景判断阈值;更新策略采用动态更新因子的方法等,这些改进措施可以有效地提高目标检测的准确性和对不同场景的适应性。

2.1 背景建立

背景的建立方法很多,常用的有平均法、中位数法以及传统的单帧法,当用于建立背景的帧中存在运动目标时,检测结果都会出现“鬼影”现象,不同的算法对“鬼影”消融起到了一定的作用,但是消融的时间长短不一样。实际应用中,背景的建立希望获取到真实的背景,即不包含运动目标。当图像中存在运动目标时,可采用多帧随机选取和24邻域法建立背景。这样可以有效避免像素的重复选取,最大概率选取到真实背景,降低错误分类的概率。计算步骤如下:

1)选取被检测图像的前 m 帧;

2)建立背景样本集 M(x)={v1,v2,···,vN},j=1,2,···,N ,随机选取 m 帧图像中的1帧,选取其对应像素24邻域的一个随机值赋给 vj(x,y),循环 N次完成1个像素背景样本集的建立,按图像大小遍历每一个像素点,即完成背景样本集初始化。

本文采用标准数据集highway视频序列对传统算法单帧背景建模和本文算法背景建模的目标检测效果进行了对比测试,测试程序在传统ViBe算法基础上更改背景建模部分算法。初始帧从第300帧开始,初始帧存在运动目标,本文算法中m=25,当运行到第344帧时,传统的单帧背景建模目标检测结果中残留初始帧运动目标像素点较多,存在明显的“鬼影”。本文算法背景建模目标检测结果中残留初始帧运动目标像素点较少,“鬼影”消融速度较快,如图1所示。从测试结果可以看出,本文的背景建模方法,可以有效抑制“鬼影”,加快其消融速度,明显优于传统方法。

图1 ViBe算法中不同背景建模算法目标检测效果对比图Fig.1 Comparison images of target detection effects in ViBe algorithm with different background modeling algorithms

2.2 前景和背景提取

传统ViBe算法在进行前景和背景提取时,采用固定阈值,固定阈值不能适应各种场景的变化。阈值分割方法很多,场景不同、目标大小不同,其效果都不一样。经过大量对比试验,OTSU算法[14]和均匀性度量[15]法效果较好,但是OTSU算法容易将前景像素分割为背景,而均匀性度量法容易将背景分割为前景。基于这种结果,本文的阈值采用二者阈值的平均值作为ViBe算法的自适应阈值。下面分别看这2种算法的具体计算过程。

OTSU算法是一种动态阈值分割算法。它的主要思想是按照灰度特性将图像划分为背景和前景,门限值使得背景和前景之间的方差最大,计算方法如下文1)~3)。

1)TH1从最小灰度值到最大灰度值进行搜索;

2)按照 T H1对图像进行前景和背景分割,求取图像总平均灰度μ,如(3)式所示:

式中:ω0和 μ0为前景个数占比和前景平均灰度;ω1和 μ1为背景个数占比和背景平均灰度;

均匀性度量法,基本思想是属于一类的对象其分布有较大的一致性,所以算法以方差最小的灰度值作为分割阈值。计算方法如下文1)~4)。

1)T H2从最小灰度值到最大灰度值进行搜索;

2)按照 TH2对图像进行前景和背景分割,分别计算前景与背景的类内方差,如(5)式、(6)式所示:

式中:C1属于前景集合; C2属于背景集合; NC1为前景像素点数; NC2为背景像素点数;

3)分别计算2类像素在图像中的分布概率,如(7)式所示:

式中:Nimage为图像总的像素个数;

图2 ViBe算法中不同前景和背景判断阈值目标检测效果对比图Fig.2 Comparison images of target detection effects in ViBe algorithm with different foreground and background judgment thresholds

2.3 背景更新策略

当背景模型受到外界因素干扰时,采用固定更新因子,会出现前景误检为背景或是背景误检为前景的现象,从而增大误检率。更新因子 φ是反映背景更新速率的一个参数,φ越小背景更新越快。在模型的更新策略中,本文动态地改变更新因子φ以适应不同的场景,其原理是图像中的运动目标速度变化快,背景更新快,背景中运动目标速度变化缓慢,背景更新也会放慢。本文改进方法在前50帧检测中,将更新因子 φ设置为1,这样可增加背景的更新速率,促使背景中由于存在运动目标而形成的“鬼影”迅速消融,然后可按照目标在场景中的运动速率来动态改变更新因子φ。如果视频中存在运动目标,相邻2帧检测结果目标的位置会发生变化。通过相邻2帧求异或可以得到图像中变化部分的像素点,这些像素点的多少,可以间接地反应出目标速率的变化。具体计算方法见(9)式:

式中:Bi-1(x,y)和Bi(x,y)分别是前一帧和当前帧的运动目标检测结果,前景像素点值为255,背景像素值为0; Si是 Bi-1(x,y)和Bi(x,y)对应位置像素值异或操作的结果。统计 Si和 Bi(x,y)中像素点值为255的个数,分别是 count1和 count2 ,按(10)式计算 τ,τ间接反映目标速度的变化。

按照 τ的变化大小确定更新因子 φ的值。传统方法默认其值为16,本文分析了大量视频测试结果,根据 τ值将更新因子 φ分为4档,适用大多数场景,如(11)式所示:

采用本文的更新策略分别对MATLAB自带的viptraffic视频和测试数据集中的sofa视频进行目标检测效果对比测试,其中viptraffic视频目标移动速度快,并且伴有光照变化;sofa视频中有运动缓慢和由运动转为静止的物体。测试程序在传统ViBe算法基础上更改背景更新因子取值的相关算法,测试结果如图3所示。从图中看,viptraffic视频从第1帧运行至46帧,背景更新因子取值分别是 φ自适应、 φ=32 、 φ=16 、 φ=1,可见,φ=1的噪点最少,与 φ自适应的检测效果最为接近,最能适应当前场景;sofa视频,从第1帧运行至344帧,背景更新因子取值分别是φ 自适应、 φ =32 、φ =16、φ=1,可见,φ=32时由运动转为静止的盒子保留的有效像素最多,与 φ自适应的检测效果最为接近,最能适应当前场景。从测试结果可以看出,本文的改进方法在背景更新策略上更加符合实际需求。

图3 ViBe算法中不同背景更新因子目标检测效果对比图Fig.3 Comparison images of target detection effects in ViBe algorithm with different background update factors

2.4 形态学操作

一帧图像通过上述处理,会得到一幅二值化图像,但是图像中仍然会存在大量的噪点和孔洞,造成目标的模糊和不完整。为了提高目标提取的完整性和准确率,本文采用了滤波和形态学操作来改进检测效果。具体的步骤为:

1)滤波 滤波的作用是去除噪点,具体方法是分别统计检测结果中二值图像像素点的8邻域内值为0和255的像素点的个数 K1和 K2。当K1大 于阈值 τ1,将当前像素点的值置为0;当 K2大于阈值 τ2时 ,将当前像素点的值置为255。τ1和τ2的值取5。

2)形态学操作 由于误判,实际中二值图像中会有一些孤立的点和孔洞,在实际处理时,可以通过形态学操作将这些点连接起来,对孔洞进行填充。形态学操作还包括开运算、闭运算等。实际应用中,还会删除像素数小于10的连通区域,有效剔除一些干扰。通过这样的操作,使目标更加清晰和完整。

3 实验结果与分析

3.1 评价标准

本文采用IEEE Change Detection Workshop[16]评价检测标准来定量地对改进ViBe算法的目标检测能力进行客观评价。指标包括精确率Rprecision、召回率Rrecall、F度量值F、错误分类百分比PPWC、假阳性率RFPR、假阴性率RFNR6个指标[17]进行分析,如(12)式所示:

式中:NTP表示检测正确的前景像素数;NTN表示检测正确的背景像素数;NFP表示误检为前景的背景像素数;NFN表示误检为背景的前景像素数。通常精确率和召回率越高,假阳性率、假阴性率和错分率越低,其性能越好。

3.2 结果分析

本文实验使用MATLAB R2016b软件进行实验数据的统计与计算。实验环境为CPU-Intel®Core(TM)i5-3470 CPU@3.2GHz,内存为4 G,操作系统为Windows7旗舰版。为了测试本文改进算法的性能,分别与GMM算法、ViBe算法和KDE算法在不同的场景进行了测试,测试视频来自WWW.changedetection.net网站,分别选取了canoe、highway、pedestrians、snowFall、park、sofa视频进行了测试,这些视频包括基本视频、含动态背景视频、红外视频、恶劣天气视频、过程中有短暂停留视频等。本文测试时,KDE算法中,选取高斯核函数,训练集N=20,带宽 h=45,阈值 thr=0.000002。GMM算法的参数设置中,高斯分量 C=3,背景分量 M=3,正偏差阈值 D=2.5,学习率 alpha=0.001,前景阈值thresh=0.25,初始标准偏差 sd_init=16。传统ViBe算法的参数设置中,样本 N=20,阈值半径 R=20,匹配阈值 T=2 ,更新因子 φ =16。本文算法的参数设置中,样本 N=20,匹配阈值 T=2,初始背景建模选取帧数 m=25,其余均采用自适应阈值。测试时highway、pedestrians、snowFall、park、sofa初始帧存在运动目标。MATLAB仿真操作界面如图4所示。

图4 MATLAB仿真操作界面Fig.4 Simulation operation interface in MATLAB

4种方法在6种不同场景测试效果如图5所示。其中:图5(a)为canoe视频测试效果图,图5(b)为highway视频测试效果图,图5(d)为snowFall视频测试效果图,由图可见,本文改进算法相对于KDE算法、GMM算法、传统ViBe算法可以很好地抑制水波纹、树叶晃动以及雪片等带来的干扰,图中的目标周边较为干净,内部没有太多的孔洞,目标轮廓更加的完整;图5(c)为pedestrians视频测试效果图,图5(f)为sofa视频测试效果图,可见,本文改进算法可以消除部分阴影以及光照带来的影响;图5(e)为park视频测试效果图,可见,该测试视频为红外图像,其他算法在目标周边都存在大量的噪点,本文改进算法可以有效滤除目标周边的噪点,使目标更加完整和清晰。由于测试视频初始帧存在运动目标,图5中KDE算法和ViBe算法在部分测试结果中仍有初始帧运动目标的残留像素,本文算法初始帧中运动目标已经完全融入背景,适应能力更强。为了进一步验证算法的可行性,按照3.1节量化指标进行了测试和对比。分别在6种场景下对每种算法进行测试,求各项指标的平均值,测试结果见表1。从表中可以看到本文改进算法在不同场景下,相对于KDE算法、GMM算法和传统ViBe算法,各项指标均有大幅度提高,精确度分别提高30.44%、40.72%和20.95%,错分比分别降低了43.28%、40.59%和29.43%,召回率、F度量值、假阳性率和假阴性率均优于其他3种算法。

图5 4种算法在6类场景下目标检测效果对比图Fig.5 Comparison images of target detection effects of four algorithms in six types of scenes

表1 4种算法在6类场景下测试指标平均值Table 1 Average values of test indexes of four algorithms in six types of scenes

4 结论

本文针对传统ViBe算法动态场景适应性差、初始背景帧有运动目标存在“鬼影”现象等问题,提出一种改进的ViBe算法,改进内容包括背景建模、背景和前景的自适应阈值判断、动态更新因子等,并将改进算法与传统ViBe算法、GMM算法、KDE算法进行了对比试验,结果表明本文改进算法对有水波纹、树叶晃动、下雪、强光等场景有较好的适应性,其准确率和误检率等多项评价指标均优于其他对比算法。

猜你喜欢
像素点前景阈值
改进的软硬阈值法及其在地震数据降噪中的研究
图像二值化处理硬件加速引擎的设计
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
农业好前景 品牌来引领
我国旅游房地产开发前景的探讨
基于局部相似性的特征匹配筛选算法
改进小波阈值对热泵电机振动信号的去噪研究
离岸央票:需求与前景
一种X射线图像白点噪声去除算法