一种自适应运动目标检测算法及其应用

2021-03-13 06:00李善超车国霖杨晓洪
小型微型计算机系统 2021年2期
关键词:漂浮物阈值像素

李善超,车国霖,张 果,杨晓洪

(昆明理工大学 信息工程与自动化学院,昆明 650500)

1 引 言

运动目标检测在智能视频监控的应用中扮演着重要的角色,是计算机视觉领域的一个研究热点[1].运动目标检测的实质是在视频序列中定位运动中的目标,而准确的前景检测是目标分类、目标跟踪和行为识别研究的重要基石[2,3].运动目标检测算法按类别可分为帧差法[1]、光流法[4]、背景建模法[5,6]3种.帧差法原理简单且易于设计,然而其检测结果存在空洞和鬼影的问题.光流法虽然精度高,但由于其计算量大,不适用于对实时性有较高要求的场景.背景建模法是在初始化过程中构建出由背景样本组成的模型,并将当前帧与背景模型进行差分,从而对像素进行分类,最后得到运动目标.其具有精度高实时性好的特点.背景模型的准确性决定了背景建模法的检测精度,主要影响检测精度的因素有鬼影问题、动态背景、噪声干扰等[7].

高斯混合模型(GMM,Gaussian mixture model)[8]是运动目标检测算法中最为经典的算法,其本质是基于像素样本统计信息的背景建模方法,能够对复杂背景进行准确建模,然而其计算复杂度较高.GMG算法[9]是统计背景模型的概率,采用贝叶斯逐像素分割,但在动态场景中其检测精确度较低.核密度估计算法(KDE,Kernel Density Estimation)[10]是一种非参数背景建模方法,其通过大量的背景样本估算背景像素的概率密度函数,从而根据像素背景概率来分类像素,然而其内存占用与计算复杂度都较高.Barnich等人[11,12]于2009年提出一种非参数化视频背景提取算法(ViBe,Visual Background Extractor),该算法是为每个像素设置一个样本集,并与新帧像素进行阈值比较,从而对像素进行分类,其具有实时性好、鲁棒性高和易于集成于嵌入式设备的特点.然而ViBe算法仍存在一些不足,限制了其在动态场景中的应用.例如:1)当初始化图像中存在运动中的目标时,ViBe算法会在后续帧中检测到鬼影,降低了算法的检测精度且鬼影消除时间长;2)ViBe算法在动态场景中检测精度低,容易受动态噪声干扰;3)ViBe算法的背景模型更新策略无法适应背景动态的变化.

针对ViBe算法存在的问题,本文提出一种自适应运动目标检测算法.本文将从以下3个方面对ViBe算法进行改进.1)采用鬼影检测法标记鬼影区域并强制引入背景样本,加速鬼影的抑制;2)采用自适应匹配阈值的方法进行像素分类,提高算法抗干扰的能力;3)根据像素分类的匹配值动态调整更新因子,提高算法适应场景变化的能力.本文采用CDNET数据集中dynamicBackground视频类中的5个视频序列和3组河流漂浮物的视频序列进行研究,以本文算法和其他5种算法为例,定性、定量对实验结果做出质量评价和分析.研究结果表明,本文算法相较于ViBe算法在召回率、精确率和F度量值方面均有提高,错误分类比更低,达到了预期的目标.

2 ViBe算法原理

ViBe算法是基于样本随机聚类的背景建模算法,具有运算效率高、易于设计、易于集成嵌入设备的特点,能够实现快速的背景建模和运动目标检测.算法的步骤包括背景模型初始化、像素分类过程和背景模型更新.

2.1 背景模型初始化

1)背景模型定义:ViBe算法的背景模型是由N个背景样本组成的,v(x)是像素x的像素值,则背景模型M(x)定义如公式(1)所示:

M(x)={v1(x),v2(x),…,vN(x)}

(1)

2)背景模型初始化:ViBe算法利用视频序列第1帧建立背景模型,从第2帧开始算法就可以有效地检测运动目标.背景模型初始化是在像素x的8邻域NG(x)中选取一个像素值作为背景样本,重复N次,如公式(2)所示:

(2)

3)随机选取策略:背景建模时,背景样本始终采用随机选取邻域像素的策略,以使背景模型更加稳定可靠.

2.2 像素分类过程

ViBe算法采用计算欧氏距离来进行像素的分类.SR(v(x))是以像素值v(x)作中心,匹配阈值R为半径的二维欧氏空间,若SR(v(x))与M(x)的交集H{·}中元素个数不小于最小匹配数#min,则认为像素x是背景像素,如公式(3)所示:

H{SR(v(x))∩{v1(x),v2(x),…,vN(x)}}

(3)

2.3 背景模型更新

1)保守更新机制:ViBe算法通过保守更新机制进行背景模型更新,即如果像素被分类为背景像素,则以1/φ(φ是更新因子)的概率替代背景模型中的任一样本.假设时间是连续且选择过程是无记忆性的,在任一dt时间后,背景模型的样本随时间变化的概率如公式(4)所示:

(4)

公式(4)表明,背景模型样本值的预期剩余寿命都呈指数衰减,背景模型的样本更新与时间无关.

2)随机更新机制:ViBe算法通过随机更新机制进行样本替换,使得每个样本的存在时间成平滑指数衰减,提高了算法适应背景变化的能力,避免了旧像素长期不更新带来的模型劣化的问题.

3)空间传播机制:ViBe算法也将背景像素引入邻域的背景模型中,保证了邻域像素空间的一致性.例如,用背景像素替换任一邻域NG(x)中的任一样本.

ViBe算法首次将随机聚类技术应用于运动目标检测中,使得算法在背景模型初始化、像素分类过程、背景模型更新3个方面都比较简单,保证了算法的实时性,因此ViBe算法被广泛应用于现实生活中[13].

3 提出的改进算法

ViBe算法采用随机采样、非参数化和无记忆的更新策略,使得其具有较好的性能,但其在动态场景下仍然存在不能快速抑制鬼影、难以消除动态噪声以及无法适应场景动态变化的问题,本文将从以下3个方面对ViBe算法进行改进.

3.1 鬼影检测

ViBe算法利用第1帧建立背景模型,但也不可避免的将第1帧中存在的运动目标前景像素引入到背景模型中,导致鬼影问题和影响算法的检测精度.假设背景模型M(x)是由第1帧中的前景像素样本f(x)组成的,当运动目标离开时,f(x)不在背景像素值b(x)的SR(b(x))圆内,背景像素被错误的分类为前景,如公式(5)所示,则在第1帧中运动目标所在的区域就会出现虚拟的前景(鬼影).

(5)

本文针对这一问题,应用鬼影检测法标记出第1帧中的鬼影区域,并向位于鬼影区域的背景模型中强制引入背景样本,减少其中前景像素的数量,从而快速抑制鬼影.

鬼影检测法借鉴了帧间差分法并对其进行改进,其原理是提取视频序列的前3帧图像,第1帧图像分别与后两帧图像做差分运算,设定差分阈值并对差分后的图像进行二值化分类,将二值化结果做逻辑或操作和形态学操作,即得到标记有第1帧运动目标的鬼影模板Ghost(x),在鬼影模板Ghost(x)中大于0的位置是第1帧中鬼影区域的.具体定义如公式(6)、公式(7)和公式(8)所示:

(6)

(7)

Ghost(x)=D1(x)orD2(x)

(8)

式中:D(x)为二值化图像,Ik(x)为第k帧输入图像,一般k=1,T为图像差分阈值,or为逻辑或操作.鬼影检测法的对比效果如图1所示.

图1 鬼影检测方法对比Fig.1 Comparison of ghost detection methods

图1(a)为视频序列的第1帧图像;图1(b)和图1(c)分别是与操作和或操作的结果对比图,从图中可以看出,鬼影检测法采用或操作相比与操作能更好的检测出第1帧中存在的运动目标.

鬼影检测法标记出鬼影区域后,还需要将背景像素引入到标记位置背景模型中.基本思路是判定当前帧中位于鬼影区域的像素是否被分类为前景,如果当前位置像素被分类为前景,则当前位置像素是运动目标移动后被错误分类为前景的背景像素,应该将背景像素强制引入到当前位置的背景模型中作为背景样本,同时鬼影模板Ghost(x)-1,直到鬼影模版Ghost(x)等于0为止;如果当前位置像素被分类为背景,那么当前位置还存在运动目标,不进行更新,直到当前位置像素被分类为前景.该方法能够在运动目标移动后强制将m个背景样本引入到背景模型中,加速了鬼影的消除.鬼影区域消除具体流程如图2所示.

图2 鬼影消除的具体过程Fig.2 Specific process of ghost elimination

3.2 自适应调整匹配阈值

虽然ViBe算法的匹配阈值(R=20)是适用于大多数场景的,然而Van等人[14]提出固定参数对于动态场景而言是不合适的,单一的匹配阈值设定降低了像素分类的准确性,导致背景噪声增加.因此,设定一个自适应场景动态变化的匹配阈值来提高像素分类准确性并消除背景噪声.

Brutzer等人[15]建议在ViBe算法中引用一个与模型样本相关的阈值,这样能更好的处理伪装前景点.因此在固定匹配阈值的基础上,本文提出一种可以自适应调整每个像素匹配阈值R(x)的方法,进而提高像素分类的准确性.该方法核心思想是对于不同区域设定不同的匹配阈值,既降低高动态区域的背景像素误判为前景像素的概率,又提高低动态区域检测细微变化前景的能力.这里是通过计算像素的背景模型的标准偏差来确定像素的动态范围,具体定义如公式(9)和公式(10)所示:

(9)

(10)

式中:Mi(x)表示像素x索引为i的背景样本,μ(x)表示像素x的背景模型的平均灰度值,σ(x)表示像素x的背景模型的标准偏差,N表示背景模型中样本的个数.

得到像素x的动态范围后,本文算法在动态匹配阈值σ(x)·γ(γ是动态匹配阈值系数)的基础上加上适用于大多数视频序列的固定匹配阈值Rfix,从而得出自适应匹配阈值R(x).为保证检测的精度,对匹配阈值R(x)范围进行限定,根据实验经验,R(x)范围在[Rlower,Rupper]区间内具有较理想的效果,R(x)定义公式如公式(11)所示:

R(x)=Rfix+σ(x)·γ

(11)

3.3 匹配值更新法

ViBe算法的更新因子是不变的,其是以1/16的概率将分类为背景的像素引入到背景模型中.然而固定的更新因子在背景简单、变化单一的场景中具有较好的应用,但在背景复杂、变化较快的场景中,固定的更新因子无法及时替换旧的背景样本,使背景模型的丰富度和有效性大大降低,从而导致检测结果中背景噪声增加.针对这一问题,本文采用匹配值更新法来设定更新因子.

匹配值更新法是在每帧的像素分类的过程中建立一个由匹配值n所组成的更新模板updata(x),根据更新模板中对应位置的n值大小来设定更新因子.公式(12)定义如下:

(12)

式中,update(x)=k的设定是针对前景图像中像素数小于α的连通区域(这部分像素在前景图像中做丢弃处理);update(x)=0的设定是针对前景图像中像素数小于β的空洞区域(这部分像素在前景图像中做填充处理);除以上两种情况外,更新模板update(x)等于对应位置的匹配值.

接着,根据更新模板updata(x)动态调整更新因子,不仅引入更多不同的新背景样本,提高背景模型的复杂度,并且加速了旧样本值地淘汰.更新模板与更新因子的关系如公式(13)所示(η是常量):

φ=updata(x)-η

(13)

由公式(13)可知,更新模板中的匹配值n越大,背景模型M(x)进行更新的概率越小.更新概率P(x)与更新因子φ的关系是:P(x)=1/φ.

ViBe算法的空间传播机制能够加速背景模型的更新,保证了邻域像素空间的一致性.但在动态背景下,前景像素被误判背景像素时,该机制导致错误像素的扩散,造成缓慢移动和静止目标出现空洞和残缺问题.故本文算法决定抑制像素的空间传播.

4 实验结果与应用

为了评估本文算法在动态背景下的效果,本文采用CDNET数据集[16]提供的dynamicBackground视频类中的5个视频序列做测试.同时采用BGSLibrary[17]中提供的可执行程序做经典算法对比.实验和开发环境为VS2017,测试硬件平台为Core i7 CPU,8GB内存.

为了定量比较几种算法的性能,本文采用召回率(Recall)、精确率(Precision)、错误分类百分比(PWC,percentage of wrong classification)和F度量值(F-measure)作为量化指标.具体定义如公式(14)-公式(17)所示:

(14)

(15)

(16)

(17)

式中,TP(True positive)表示正确检测的前景像素数;TN(True negative)表示正确检测背景像素数;FP(False positive)表示错误检测的前景像素数;FN(False negative)表示错误检测的背景像素数.Recall反映应该检测到的前景像素中正确检测的前景像素的占比;Precision反映实际检测到的前景像素中正确检测的前景像素的占比;PWC反映总像素中错误检测像素的占比;F-measure反映算法检测综合质量.

4.1 参数设置

本文方法由许多可调的参数组成,这些参数必须进行适当调整以获得最佳的算法性能.然而,对于某些特定场景,参数可以针对需求进行微调.图3是不同参数设置在各动态背景序列以及整体均值的F-measure性能,通过比较设定本文算法相关参数:N是背景模型中的样本数,如图3(a)所示,在N=15时,本文算法在dynamicBackground类中性能最佳;Rfix是固定匹配阈值,如图3(b)所示,在Rfix为10时,本文算法性能最佳;γ是动态匹配阈值系数,如图3(c)所示,当取γ=0.5,算法结果最佳;Rlower和Rupper分别是匹配阈值的取值范围的下界和上界,由于σ(x)是大于等于0的数,因此R(x)=Rlower≥Rfix,而Rupper设定为50;α和β分别是小目标丢弃和空洞填充的像素数阈值,如图3(d)所示,α取15最佳,这里β取值为40;k是针对像素被丢弃时设定的更新模板值,k取值为2;T是帧间差分阈值,T取值为30;m是鬼影区域强制更新次数,m取值为3;#min是最小匹配数,同ViBe算法一样取2;η经实验测试取1最优;图3(e)是匹配值更新法与固定更新因子的对比结果,可以看出匹配值更新法可以提高算法F-measure性能.

图3 不同参数设置在各动态背景序列及整体均值上的F-measure性能Fig.3 F-measure performance of different parameters on each dynamic background sequence and the overall mean

4.2 质量评价

图4是鬼影消除实验在baseline视频类中highway视频序列上与ViBe算法的对比实验,highway视频序列中第1帧中包含两辆正在移动的车辆,分别位于图像的中上和右上区域,如图4所示,自从而下分别为视频序列第50帧、第150帧、第250帧、第350帧、第600帧.从图中可以看出,在第50帧时本文方法在图中中上和右上区域已经不存在鬼影,相反的是,直到第600帧ViBe算法还未完全消除干净鬼影.ViBe算法虽然能够利用空间传播机制缓慢消除鬼影,但该机制设置的更新条件较为苛刻(这是为了避免前景像素快速融入到背景模型中导致背景模型的劣化),尤其是在更新因子设置较大的时候,鬼影消除较为缓慢.通过实验对比可以看出本文方法相较于ViBe算法能够更快速地消除鬼影.

图4 鬼影消除对比实验Fig.4 Comparison experiment of ghost elimination

图5是各算法dynamicBackground视频类测试结果的定性比较,图5中以行为单位,自上而下分别为:canoe、fall、fountain01、fountain02、overpass视频序列,以列为单位自左向右分别为:(a)输入帧、(b)真值图、(c)GMM-Stauffer、(d)GMM-Zivkovic、(e)GMG、(f)KDE、(g)ViBe、(h)本文算法的检测结果.从图5可以看出,GMM、GMG、KDE、ViBe算法虽然能够检测出运动目标,但其也将河水、晃动的树叶、喷泉这类动态变化的干扰错误检测为前景,影响检测的精度.本文算法相较于其他算法,可以有效的克服背景噪声干扰,适应场景的动态变化规律,目标检测完整度和准确度更高.

图5 各算法在dynamicBackground视频类的定性对比Fig.5 Qualitative comparison of algorithms in the dynamic Background video category

本文分别对各算法在dynamicBackground视频类下的5个视频序列求取性能指标的平均值,如表1所示是各算法的性能定量对比结果.从表1中可以看出本文算法在Precision、PWC还是F-measure指标上都好于其他5种算法.

表1 各算法在dynamicBackground视频类的定量对比Table 1 Quantitative comparison of algorithms in the dynamicBackground video category

4.3 现实应用

智能视频监控作为计算机视觉的重要应用方面,近年得到广泛重视[18],尤其是在水文领域中的应用.河流漂浮物对水质、水面景观、供水、水产、航运、发电、水文测验造成了严重威胁[19],河流漂浮物检测是保障河道和水文测验安全的前提,故基于运动目标检测方法的河流漂浮物检测具有重要的应用价值.

运动目标检测方法在河流漂浮物检测的应用中能够快速准确的定位河流漂浮物位置与漂浮物面积大小,具有实时性好、适用范围广、易集成于嵌入式设备的特点.在河流漂浮物检测的应用中,由于漂浮物种类多、数量大、组成多样,导致漂浮物难以用单一模型进行模拟推测[20].同时河流漂浮物的运移受河流流势影响,因此对目标检测方法的实时性有较高要求.尤其在铅鱼测流过程中,河流漂浮物冲撞铅鱼及其悬挂的流速仪会导致流速仪损坏,干扰正常的测流工作,严重时漂浮物缠绕铅鱼致使承载铅鱼的缆道坍塌.因此对河流漂浮物的快速检测为铅鱼预警与避障提供了重要的依据.

本文采用3组河流漂浮物视频序列进行ViBe算法与本文方法在现实应用上的对比,如图6所示.

图6 2种算法在河流漂浮物检测中的定性对比Fig.6 Qualitative comparison of two algorithms in thedetection of river floating objects

在图6中自上而下分别是视频序列1、视频序列2和视频序列3.视频序列1中是较为平静的河流场景,漂浮物为人工丢置的黑色泡沫板,灰度特征较为明显,除了较小的波浪干扰外,无其他干扰.视频序列共有300帧.视频序列2中是波动较大的河流场景,河流漂浮物为图像左侧漂过来的油桶,灰度特征较为复杂,除了较大的波浪干扰外,还有河岸树木晃动干扰.视频序列共有100帧.视频序列3中是波动较大的河流场景,河流漂浮物为图像右侧漂过来的垃圾,由于下雨影响,图像清晰度较差,波浪干扰较多,视频序列共有150帧.从图6对比实验可以看出本文方法相较于ViBe算法能更好的适应以动态背景为主的河流漂浮物检测场景,有效检测河流漂浮物的同时消除噪声干扰.ViBe算法与本文算法在河流漂浮物检测实验中的定量性能对比如表2所示.

表2 2种算法在河流漂浮物检测中的定量对比Table 2 Quantitative comparison of two algorithms in thedetection of river floating objects

通过求取3个视频序列性能指标的平均值得到表2.通过表2可以看出,本文算法在河流漂浮物检测中,Recall、Precision、F-measure指标相较于ViBe算法有明显提高,PWC指标有明显下降.

5 总 结

本文提出了一种自适应运动目标检测算法,该算法提出鬼影检测法标记鬼影区域并强制引入标记像素到背景模型中,加速鬼影的消除,采用自适应匹配阈值的方法进行像素分类,并根据匹配值大小动态调整更新因子,提高算法对动态背景的适应能力.实验结果表明,相比于ViBe算法,本文算法更能有效消除鬼影,克服动态噪声的负面影响,适应场景的变化,将其应用于河流漂浮物检测场景中,也能够实时检测出河流漂浮物,保障铅鱼测流安全.

猜你喜欢
漂浮物阈值像素
神秘的海上漂浮物
像素前线之“幻影”2000
改进的软硬阈值法及其在地震数据降噪中的研究
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
改进小波阈值对热泵电机振动信号的去噪研究
浙江杭州:新能源智能清理船上岗
“像素”仙人掌
高像素不是全部
杠杆式电动清漂装置