APP下载

复杂场景下自适应视频前景提取算法

2021-12-02陆泊帆何立风周广彬苏亮亮

科学技术与工程 2021年33期
关键词:像素点前景阈值

陆泊帆,何立风,2*,周广彬,袁 朴,苏亮亮

(1.陕西科技大学电子信息与人工智能学院,西安 710021;2.日本爱知县立大学信息科学学院,爱知县 480-1198)

运动目标检测在日常生活中应用十分广泛。目前,常见的提取运动前景的方法有背景减除法、光流法[1],以及后来提出的帧间差分法[2]。帧间差分法的计算量较小,实时性较高,背景不积累,可以抑制鬼影,但是提取的前景目标易产生空洞。背景减除法将当前图像的像素点与其背景模型进行对比和更新,从而提取到前景目标,主要通过为每个像素点建立背景模型来进行前景目标的检测,原理简单,性能比较好。目前以混合高斯算法(Gaussian mixture model,GMM)[3]和视觉背景提取(visual background extractor,ViBe)算法[4]为代表的背景建模法是当前主流的研究算法。为了能够让混合高斯算法适应复杂场景,文献[5-6]从不同方面对GMM算法进行改进,但由于物体运动状态的不确定性,提取运动前景仍旧有困难。

由Barnich提出的视觉背景提取算法(ViBe)是一种基于像素点邻域空间的运动前景提取算法,该算法原理简单,但提取到的前景易出现噪声点、鬼影以及阴影等问题。为了解决上述问题,文献[7-9]使用自适应阈值代替固定阈值从而实现前景点与背景点的分割,但是提取的目标出现了不同程度的不完整。文献[10]通过改变背景模型更新因子,结合三帧差分技术一定程度上抑制鬼影,但是易产生空洞。文献[11]通过改进Harr-like特征结合级联分类器能够抑制鬼影像素点,但鬼影消除的速度依旧不能满足实时性的要求。文献[12]通过像素点的时间和空间特征进行前景提取,计算复杂度较高。文献[13]通过选取同质像素点来初始化背景模型,自适应调整半径阈值和背景模型的更新速率,同时根据光流将鬼影和真实目标进行区分,虽然可以去除鬼影,但是过程较复杂。

基于以上研究的不足,现提出一种复杂场景下自适应视频前景提取算法。通过背景模型中样本之间最小欧氏距离的均值衡量背景动态波动程度,当背景动态波动大时,增加半径阈值,反之则减小半径阈值,从而更加准确地进行像素点分类。针对静止物体突然运动、运动物体突然静止以及利用首帧初始化而产生鬼影的问题,根据物体的运动速度,自适应调整一次更新的背景模型中样本个数,加快鬼影融入背景模型,使得背景模型更加符合真实场景,提高检测的准确性。

1 ViBe算法原理及不足

首先,ViBe算法随机选取像素点邻域空间内的样本构建背景模型;其次,对比当前像素点与其模型的相似程度进行像素点的分类;最后,根据分类结果更新其对应的模型。

1.1 模型定义与初始化

假设视频帧中x位置处的像素值为v(x),设P(x)为像素点x的背景模型,即该像素点的样本集,该背景模型的定义如式(1)所示。

P(x)={P1,P2,…,PN}

(1)

式(1)中:Pi为对x一定范围内的像素点随机抽取后生成的样本集中索引为i的样本元素;N为该样本集的大小。

x像素的空间邻域记为NG(x)。通常来说NG(x)是像素x的8邻域,利用视频的第一帧初始化背景模型,如式(2)所示。

P(x)={P[y|y∈NG(x)]}

(2)

式(2)中:y为像素x的8邻域中任意样本索引号。

1.2 前景目标分割

从第二帧开始进行前景检测,为了确定t时刻像素点x是属于前景范围的像素点还是属于背景范围的像素点,定义一个以Pt(x)为中心、R为半径的空间SR[Pt(x)],如图1所示。

图1 二维欧氏空间Fig.1 Two-dimensional Euclidean space

若背景模型P(x)中落入SR[Pt(x)]中样本的个数R#>min#,则判断为背景像素点,否则是前景像素点。具体细则如式(3)和式(4)所示。

{SR[Pt(x)]∩{P1,P2,…,PN}}=R#

(3)

(4)

式中:vb和vf分别为背景集合和前景集合;min#取经验值2。

1.3 背景模型更新

为了适应背景时刻变化的场景,如光照影响,背景物体突然运动(如突然抬起的拦车器)以及运动物体突然静止,ViBe算法使用的更新方法是保守的更新策略和随机采样。保守的更新策略即属于前景的像素点永远不会被用来填充背景模型,比如一块静止的区域若被错误地判断为前景,那么就会一直被当作运动物体,在检测过程中背景物体开始运动,则该物体静止时的位置在保守更新的策略中永远被认为属于前景范围,从而在该处会留下一个虚假目标。采用随机采样方法时,当一个像素点被判断为背景点时,它有1/φ的概率去更新背景模型。由于随机的策略,模型中的样本值存在的概率呈指数型衰减,使得模型更新状态达到最佳。若时间是连续的,那么在dt时间之后,模型中的样本值仍然不被更新的概率如式(5)所示。

(5)

式(5)中:N为样本集中样本个数。

1.4 算法面临的问题

(1)虚假目标。产生鬼影的根源可归纳为两类原因:一是初始帧存在运动目标,即并非真实的背景图像,进行背景建模的时候就会把运动目标加入背景模型中,检测结果中就会出现虚假目标;二是物体的运动状态发生转变,比如运动目标从运动到静止,背景模型的更新速度和背景的变率不同步,出现虚假目标,即鬼影。

(2)复杂场景。半径阈值R是衡量当前像素点与背景模型相似度的重要依据,固定半径阈值对于动态变化的背景分割效果较差,这些动态变化的背景像素点都有可能被判为属于前景,进而出现噪声点。还有光线的变化,场景中光线的变化使得背景也发生变化,很难将这些变化与检测目标的变化区分开。

2 改进的视觉背景提取算法

针对1.4节中提到的ViBe算法存在的主要问题,考虑到背景动态变化程度和目标的运动速度,从前景分割和背景更新两个方面进行改进,提出了一种复杂场景下自适应视频前景提取算法。

2.1 自适应阈值

判断一个像素点x属于前景范围还是背景范围时,对应的半径阈值R(x)起着重要的作用。由于ViBe算法对所有的像素点统一使用固定半径来进行像素点分类,因而无法避免在复杂场景下的误检。为了在复杂场景下更加高效而准确地提取前景信息,对于背景中动态波动大的区域中的像素点x,应该增大所采用的半径阈值R(x),以避免将动态变化大的背景像素点判断为前景区域,从而产生噪声点。反之,对于背景中动态波动较小的区域中的像素点x,应该减小半径阈值R(x),以避免提取到的前景信息缺失。综上,为了在复杂场景中高效而准确地提取完整的前景信息,视频帧中的所有像素点,应该根据其模型的动态变化程度,采用不同的半径阈值。

基于以上分析,提出一种基于时间和空间分布,来计算像素点x的背景模型动态程度f(x)的方法,并以f(x)为依据来调整该像素点的半径阈值R(x)。这样,对于任意时刻任意位置的像素点,不仅考虑时间分布,也考虑该像素点邻域空间的像素点信息,从而可以更好地适应背景不断变化的场景,极大提高了算法的鲁棒性。主要步骤如下。

步骤一对于每一个像素点x,计算其背景模型中每个样本与其他N-1个样本的最小欧氏距离,计算过程如式(6)所示。

Di(x)=mindist[Pi(x),Pj(x)],j=1,2,…,N

(6)

式(6)中:Di(x)为编号为i的样本对应的最小欧氏距离;mindist[Pi(x),Pj(x)]为像素点x的背景模型中第i个样本与背景模型中其他所有样本的最小欧氏距离。

步骤二对于每一个像素点x,根据式(6)得出其背景模型中每个样本对应的最小欧氏距离,建立一个包含N个元素的基于时间和空间的动态变化程度采样数组,如式(7)所示。

D(x)={D1(x),D2(x),…,DN(x)}

(7)

式(7)中:如果一个像素点被判断为背景像素点,则需根据式(6)重新计算该像素点的背景变化程度,并更新该像素点的动态变化程度采样数组。

步骤三计算每个像素点x的背景模型中每个样本与其他所有样本最小欧氏距离的平均值,如式(8)所示。

(8)

f(x)反映了每一时刻像素点x基于时间和空间的背景动态变化程度。当像素点x所在区域背景动态变化大时,f(x)增大,反之,则减小。

步骤四根据背景动态变化程度,任意像素点x对应的半径阈值的计算方法如式(9)所示。

(9)

式(9)中:η和λ为用来实现背景动态变化程度与半径阈值之间的转换;Rb(x)为前一帧像素点x的匹配半径。首次匹配时,R(x)=20。当像素点的背景动态变化程度较高时,即该像素点的样本集中样本对应最小欧式距离之和的平均值大于半径阈值的值,需要增大自适应匹配半径。反之,则需要减小自适应匹配半径。

为了防止出现阈值过大,使得前景像素点判断为背景像素点,将阈值上限设置为Rmax=50。另一方面,为防止阈值过小,将背景大面积误判为前景,将阈值下限设置为Rmin=20。

2.2 自适应更新样本集

为了适应不断变化的背景,背景模型必须不断更新。由1.3节可知不同于混合高斯模型[14]背景建模方法,ViBe算法不需对新图像的背景模型中所有像素值进行替换。建立实时的背景模型主要难点是找到一种适应复杂场景的背景模型更新方法,来确定一次替换掉原模型中的几个样本,从而使得背景模型可以相对准确描述实时场景。

从上述分析可知一次替换样本的个数M影响着背景模型的准确性,而M应该与目标的运动速度产生关联。受到文献[15]的启发,引入了帧差测量值ΔD,以此来衡量一段时间内目标质心的运动速度,如式(10)所示。

(10)

式(10)中:f为经过的帧数;di为前一帧与当前帧的时间间隔内目标质心移动的相对距离,即计算质心的二维矢量差,将其转换为一维欧氏距离。给定的原则:去除前景中像素点少的区域,对于帧差测量值ΔD大且像素点多的前景区域,更新模型时加大一次更新的样本个数;反之,则减少一次更新的样本个数。具体更新方法如式(11)所示。

(11)

式(11)中:τ1、τ2的取值需要根据数据集的情况进行调整,一般取经验值τ1=2,τ2=8。如果ΔD<τ1,即目标运动速度偏慢,说明需要减少一次更新样本集中样本的个数,避免出现提取到的前景信息不完整的情况;如果ΔD>τ2,即目标运动速度较快,需要加大一次更新样本集中样本的个数,加快背景模型更新,以提取到更加准确的结果;否则,按照式(11)中间情况进行处理。对于前景中存在的虚假目标,初期依旧会当成前景来更新背景模型。随着鬼影消融的进行,虚假目标的质心也会变化,根据质心的运动速度继续调整一次更新的样本个数。此方法在一定程度上可以加快虚假目标融入到背景模型。

3 实验分析

算法的实验运行硬件环境:Intel(R)Core(TM)i7-67003,3.4 GHz,内存为8 G。软件环境:64位Windows10操作系统,MATLAB2015。为验证本文算法在复杂场景中的提取效果,选取ChangeDetection(CDnet2014)[16]公开数据集中有树叶晃动、水波晃动、光线差异、物体运动状态改变和首帧存在运动目标5种情况的视频,从定性和定量两个角度对本文算法的检测结果进行评价。

3.1 消除鬼影仿真实验及分析

鬼影消除实验选取公开数据集中highwayII-raw视频和campus-raw视频。

3.1.1 运动状态发生改变

campus-raw视频中拦车器在第77帧由静止状态变为运动状态,在第291帧拦车器运动状态从运动变为静止,实验对比效果如图2、图3所示。

图2 物体由静止到运动实验对比Fig.2 Experimental comparison of objects from static to moving

图3 物体由运动到静止实验对比Fig.3 Experiment comparison of objects from moving to static

ViBe算法使用保守,固定的更新机制,因此在面对拦车器突然运动的情况时会在原位置留下鬼影,且鬼影融入背景模型慢。当ViBe算法提取的前景中仍有轮廓清晰的鬼影时,本文算法已经将鬼影的一部分融入背景模型中,在第87帧时只余留了1~2个噪声点。同时,本文算法提取的前景信息相对完整。

拦车器静止后,ViBe算法中鬼影融入背景非常缓慢,在第362帧仿真结果中鬼影十分清晰,经过68帧之后,ViBe算法检测到的前景中鬼影区域仍旧很大,一直到第470帧依旧没有完全消除,严重影响了前景目标检测的效果。而本文算法在第362帧时鬼影就即将融入背景,到第371帧鬼影完全融入背景,且提取到的前景信息相对完整。

3.1.2 初始帧存在运动目标

highwayII-raw视频中第一帧存在运动目标且摄像头在抖动,实验对比效果如图4所示。

图4 首帧存在运动目标实验对比Fig.4 Experimental comparison of moving targets in the first frame

由于初始帧中存在运动目标以及固定的背景模型更新机制,ViBe算法提取的第115帧中鬼影区域依然很大。而本文算法在第115帧中所有虚假目标几乎全部融入背景模型中。

3.2 背景动态干扰仿真实验及分析

为验证自适应半径阈值R的有效性,选取公开数据集people以及fountain01视频,实验对比效果如图5所示。

由图5可知,ViBe算法面对水波动态波动的情况很大概率会出现误检,而本文算法由于引入了自适应半径阈值R,提取的前景中噪声点大大减少。

图5 背景动态变化对比实验Fig.5 Background dynamic change contrast experiment

3.3 光线差异干扰实验及分析

光线变化干扰实验选取Laboratory-raw视频序列,实验对比效果如图6所示。

图6 抑制光线变化对比实验Fig.6 Comparison experiment of restraining light changes

实验结果显示,ViBe算法受光线干扰十分明显,出现了拖影和误检。而本文算法能很好地将人的双腿和双脚分开,虽然也将手柄部分误判为前景,但是区域十分小,同时能很快将虚假目标融入背景中。

3.4 算法综合表现实验与分析

为对比本文算法与帧间差分法、光流法、ViBe算法以及GMM算法,在消除鬼影以及面对复杂环境的性能表现时,选用了具有代表性的highway、PETS2006、pedestrians(选取第598帧建立背景模型)以及people视频序列。其中highway视频序列中有摄像头晃动、树叶晃动以及光线变化的干扰,PETS2006视频序列中有光线变化的干扰,pedestrians视频序列中首帧存在运动目标,且有光线的干扰,people视频序列中水面不停晃动。实验结果如图7所示。

图7 改进算法与其他代表性算法对比Fig.7 Comparison of improved algorithm with other representative algorithms

在highway视频序列中,帧间差分法、光流法、GMM算法以及ViBe算法都在不同程度上误将晃动的树叶检测为前景,且提取的内部信息出现了一定程度的漏检。此外,由于光线的影响,光流法还将斑马线检测为前景。而本文算法几乎没有将晃动的树叶误判为前景,且提取的前景目标相对完整。

在PETS2006视频序列中,光流法、GMM算法以及ViBe算法在室内光线的影响下提取的前景都有不同程度的拖影。特别是光流法受光线干扰的影响十分严重,不仅将地面物体的边界以及列车融入前景中,而且提取的行人内部信息缺失严重,本文算法很好地抑制了光线的干扰。由于pedestrians视频首帧中存在行人,所以GMM算法、ViBe算法以及本文算法提取的结果中都出现了鬼影,但从结果中可以看到,本文算法消除鬼影的速度明显优于其他两种算法。帧间差分法和光流法由于检测机制结果中没有出现鬼影,但是不同程度上出现了大片噪声点和空洞。而本文算法很好地抑制了光线的干扰,提高了检测的准确率。在people视频序列中,其他4种算法都在不同程度上将晃动的水面误判为前景,本文算法虽然也将部分背景点检测为前景点,但是误检现象得到了很大改善。由结果可知,在4组测试视频下,本文算法的效果都明显优于其他4种算法。

为了更加准确地评估算法效果,采用通用的4个量化评价指标:准确率(precision,P)、召回率(recall,R)、假正率(false positive rate,F)以及F评分(F-measure,Fm),具体定义如下。

(12)

(13)

(14)

(15)

式中:TP为提取的前景中正确检测为前景的像素点个数;TN为提取的前景中正确检测为背景的像素点个数;FP为提取的前景中误判为前景的像素点个数;FN为提取的前景中误判为背景的像素点个数。对算法的性能进行评价时,P、R、Fm越大,F越低,说明算法的性能越好。使用以上通用指标对实验结果进行定量评价,并对结果取平均值,结果如表1所示。

由表1的结果可知,由于帧间差分法几乎只提取了前景目标的部分轮廓信息,易产生空洞,R最低。与ViBe算法及GMM算法相比,光流法虽然在部分帧中提取的前景信息较完整,但由于在光线的影响下提取目标内部的空洞比较大,导致R较低。此外,光流法误判的程度较高,把一些静态的背景区域误判为前景,所以导致光流法的F较高,而且P较低。GMM算法的P和ViBe算法的P相差不大,但R低于ViBe算法,说明GMM算法虽然对前景点分类的准确程度和ViBe算法相差不大,但是提取的内部信息十分不完整。本文算法的准确率P明显高于ViBe算法,而R值也稍高于ViBe算法,说明本文算法在保证内部信息较完整的前提下,能很好地适应光线变化、背景波动大以及易产生鬼影的场景。此外,本文算法在假正率F指标上是最低的,进一步证明了本文方法的检测结果的准确程度大大高于其他代表性算法。

表1 检测结果对比Table 1 Comparison of detection results

4 结论

分析了ViBe算法的原理、优势以及不足。在此基础上,从两个方面对其进行了改进,提出了一种复杂场景下自适应视频前景提取算法。由于像素点分类和半径阈值有很大的关系,因此本文算法利用像素点邻域空间信息,使得半径阈值能够自适应调整,从而提高了算法检测的准确性,增强了算法对动态场景的适应性。同时,本文算法还利用帧差测量值衡量物体的运动速度,并以此为依据自适应调整一次更新样本集中样本个数,加快了鬼影的消除。实验结果表明,与其他4种代表性运动目标检测算法相比,本文算法能更快地将鬼影融入背景模型并且可以抑制背景干扰。下一步将在此基础上研究背景模型的建立,在初始化背景模型时消除由于初始帧存在运动目标而产生的鬼影。

猜你喜欢

像素点前景阈值
图像二值化处理硬件加速引擎的设计
土石坝坝体失稳破坏降水阈值的确定方法
我国旅游房地产开发前景的探讨
基于局部相似性的特征匹配筛选算法
四种作物 北方种植有前景
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
离岸央票:需求与前景
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密
量子纠缠的来历及应用前景