APP下载

采取阶段性改进的全新ViBe目标检测算法

2021-06-03涂伟强李炎炎陈金戈

关键词:像素点像素背景

涂伟强, 李炎炎, 龙 伟, 陈金戈, 丁 伟

(四川大学机械工程学院, 成都 610065)

1 引 言

随着计算机技术的高速发展,运动目标检测在智能监控、智能交通、航空航海等领域得到了广泛应用,其检测效果是后续目标行为分析、目标追踪的关键. 目前,运动目标检测算法主要分为三大类:光流法[1-2]、帧差法[3-4]和背景差分法[5-7]. 光流法是在其对应的矢量场中,根据背景与前景目标像素点的速度矢量不同而检测出运动目标.但这种方法计算量较大、处理时间长,难以达到实时性的要求. 帧差法是利用连续m帧图像差分获得检测目标,其原理简单且实时性好,但只能检测出运动目标的边界信息,导致获得的目标不完整,并且不适应背景变化较大的场景. 背景差分法则同时具备实时性、准确性以及简单性等特点,可以从视频序列图像中提取出较完整的运动目标.

由于传统的背景差分法建立背景模型耗费时间较长,占用内存较大. 因此,Barnich等人在2009年提出了视觉背景提取模型 (Visual Background extractor, ViBe) 建模方法[8]. ViBe算法是一种像素级图像背景建模或前景检测的算法,该算法将随机机制应用到背景模型的建立和更新中,使得背景模型中每个像素值的样本值更加符合实际分布.由于不需要假设复杂的概率模型,故检测精度高、实时性好、内存占用少.另外算法简单易实现,使得检测效率大大提升. 但是,该算法也存在鬼影[9]、目标检测不完整[10]等问题. 针对鬼影问题,文献[11]提出一种基于ViBe和三帧差法的目标检测算法,在背景模型更新过程中加入参考帧,并为每个像素点设置更新因子λ(x,y).由于ViBe算法检测过程中三帧差法需同时对目标进行检测,运算量明显加大,因此,不能满足实时性要求. 文献[12]采用一种基于信息度对图像进行分块,同时结合混合高斯的运动检测算法,使得该算法计算量大大减少,从而占用时长减少,但是运动目标存在大量的空洞. 文献[13]增加了鬼影抑制模块,通过 OTSU 算法计算出最适合当前帧的分割阈值,在传统 ViBe 算法基础上再对前景像素点进行二次判别.该方法能够很好地适应前景目标运动变化较大的情况,更好地抑制鬼影现象,同时保持较高较稳定的检测率.

本文针对ViBe算法传统建模方法的缺陷提出利用前m帧视频序列来构建背景模型;针对ViBe算法中固定参数影响检测精度问题,提出扩大样本选取邻域数量、自适应调整匹配半径以及背景更新因子方法;其次提出在目标检测阶段通过获取的最佳图像分割阈值对前景像素进行二次判别.

2 ViBe算法原理介绍与分析

ViBe算法是2009年由Barnich等提出的一种背景建模方法[8],该算法采用邻域像素来创建背景模型,通过比对背景模型和当前输入像素值来检测前景,整个过程如图1所示.

图1 ViBe算法的基础流程图

从图1可看出,ViBe算法大致可分为模型初始化、目标检测以及背景模型更新三个主要阶段.

2.1 模型初始化

一般的运动目标检测算法在初始化背景模型时是由一定长度的视频序列完成,而 ViBe 算法的模型初始化是根据首帧图像的情况来建立背景模型,如图2所示. 图2(a)为某视频序列的首帧画面;图2(b)表示在像素点x的8邻域中进行随机采样n个样本,且图中Nx为x点处的其中一个邻域;图2(c)为当前像素点x的样本集S(x) = {P1,P2,P3,……,Pn}. 所有像素点的样本集构成了初始化的背景模型.

(a) (b) (c)图2 ViBe背景模型Fig.2 ViBe background model

2.2 目标检测

前景检测是ViBe算法中较为关键的环节之一,它通过比较新的像素值与对应样本集来判断新的采样点是否为前景点. 背景模型中每个像素点x都存储了一个像素样本集P(x),计算新的像素值与样本集中每个像素值的距离,如果该距离小于设定的半径参数,则对应像素点的近似样本数增加;如果近似样本数小于规定的阈值,则判定该像素点属于前景点. 检测过程主要由三个参数决定:样本集数目n,阈值#min和半径参数R,图3参数设置为n=20,#min=2,R=20.

图3 二维欧氏颜色空间分类示意图

图3中,P(x)为新图像帧的像素值;R为预先设定的半径参数;P1、P2、P3、……为样本集S(x)中的像素值. 图中以P(x)为圆心,R为半径的圆被定义为一个集合SR(P(x)),S(x)与SR(P(x))的交集为新像素点的近似样本数 (近似样本数越少,新像素点判定为前景点的可能性愈大). 因此,阈值#min和半径参数R与模型的灵敏度成正相关,可适当调整#min、R的值来改变模型的灵敏度.

2.3 背景更新策略

背景模型的更新目的是使其可以不断适应外界环境的变化,例如光照的变化、背景物体的变化等,其中保守更新与前景点计数更新是背景更新的主要更新策略. 保守更新策略规定前景点不能填充背景模型,由此可能导致死锁现象出现.例如在模型初始化时如果一块静止的区域被错误的检测为运动区域,那么在这种策略下该运动区域将永远被当作前景目标来对待.而前景点计数更新策略则是假设某个像素点连续K次被判定为前景时,将判定更新该像素点为背景像素点. 而ViBe算法的更新策略则是保守更新策略与前景点计数相结合. 该策略规定每一个被检测为背景点的像素点都有1/φ的概率更新它本身的模型样本值,同时更新邻点样本值的概率也是1/φ. 另外当前景点计数达到阈值时也将更新为背景点,并有1/φ的概率去更新它本身的模型样本值.

笔者针对事故车辆类型、事故发生时间段、肇事人年龄段、性别、是否酒驾、是否持驾照、是否本人车辆、肇事时间和肇事次数等指标对事故中的车和人进行详细分析,从事故发生根源入手,分析事故发生原因,从而为预防事故的措施出台提供可靠理论基础。

3 基于ViBe的目标检测算法改进

3.1 模型初始化阶段

首先,针对建模方式选择问题,由于在真实场景下,往往第一帧图像中是否存在运动物体对背景建模会产生极大的影响. 因此,采用前m帧视频序列对应像素点的均值构建背景模型,即通过计算对应各个像素点的平均值来构造一个虚拟背景,并以此背景为基础来建立背景模型,从而使建立的背景模型更加符合理想模型. 其中,式(1)用来计算虚拟背景中每一个点的像素值.

(1)

式中,Va(x,y)为平均像素值;Vi(x,y)为第i帧像素值.

其次,在样本选取过程中,ViBe算法所采用的邻域数目较少,所需样本值个数明显多于邻域个数,在单一邻域中出现集中采样,使得重复采样的概率增大. 为有效解决上述问题,将原先的8邻域改为24邻域进行样本选取,降低样本选取的集中性,提高背景模型的精确度. 此外当像素点x处于图像边界时,传统策略会导致分类的准确性降低,因此采用一种新型边界采样策略,使得边界像素点的采样值更加准确,如图4所示.

图4 边界采样策略对比图

最后,在检测过程中相关参数对像素检测的精确度也有一定影响,为改善此影响,根据背景模型的变化程度以及检测目标的运动速度动态调整原ViBe算法中固定的匹配半径,使获得的背景模型更加符合实际模型.

3.2 目标检测阶段

为了提高算法的容错率,引入最大类间方差法[14]来计算当前帧的最佳分割阈值[15],对前景像素进行二次判别,从而提高像素判别的正确率. 其中最大类间方差法(OTSU),是一种基于全局二值化的自适应阈值[16]确定方法,依据图像的灰度特性获取图像的最佳分割阈值,并根据最佳分割阈值将当前图像分为背景和前景两个部分. 当取最佳阈值时,上述部分之间的差别达到最大,也就意味着目标与背景被错误分辨的概率降到了最低(错分概率最小[17]).

3.3 背景更新阶段

根据背景变化快慢程度,采用动态调整更新因子大小的方法. 从图1可看出,φ值与背景模型的更新速率Vu成反比. 因此,引入了帧间均速测量值ΔV来衡量运动目标的运动速度,使得φ能够自适应地调整自身值的大小. 其中,帧差测量值ΔV表示前后帧同一个运动物体质心间的平均移动速度.

(2)

式中,di为当前图像与前一个图像对应运动物体的相对质心差;f为待统计的帧数.

这里根据ΔV将更新因子划分为3个等级,即

(3)

σ1、σ2的选取是根据当前视频的实际情况给出,一般情况下,取σ1= 2,σ2=8.

最后,经过形态学图像处理,清除检测时出现的孔洞以及一些轻微闪烁点.算法流程见图5.

图5 改进ViBe算法流程图Fig.5 Flow chart of the improved ViBe algorithm

4 实验结果与分析

为了验证本文算法对鬼影和目标不完整现象的抑制效果,选用两组视频序列对原ViBe算法与改进的ViBe算法进行对比试验. 试验运行环境:Win10 64位操作系统;处理器为:Intel(R) Core(TM) i5-5200U CPU;内存为:4.00 GB;软件算法平台:MATLAB 2016b、VS2019、OpenCV 4.0.设置的起始参数为:背景样本数n=20,似样本数规定的阈值#min=2,匹配半径参数R=20,更新概率λ=16.

4.1 结果试验

鬼影抑制试验选自Change Detection数据集中 Highway视频序列以及PETS2006视频序列. 其中Highway视频序列初始帧为第950帧,PETS2006视频序列初始帧为第40帧.

图6为Highway视频序列实验检测结果,图 6(a)为第980帧原图,图6(b)为ViBe算法检测结果,结果显示经ViBe算法检测的视频序列有明显的鬼影现象存在;图6(c)为本文算法检测结果,可以看到此时鬼影现象已经消除,目标完整度得到极大提高,但仍存在少量噪声点;图6(d)为真实前景. 通过ViBe算法处理的图像序列在1 019帧左右鬼影才消失.

(a) 原始图像

(b) ViBe算法

(c) 本文算法

(d) 理想检测图

图7为PETS2006视频序列实验结果.图7(a)为第75帧原图.图7(b)为ViBe算法检测图.检测结果显示有明显的鬼影现象存在,并且目标检测结果显示不是较完整.图7(c)为本文算法检测结果,可以看到此时鬼影现象已经消除.其实检测过程中鬼影只存在极短时间就已消失,且经过形态学处理之后几乎不存在噪声点,且目标更加完整.图7(d)为真实前景. 通过ViBe算法处理的图像序列在120帧左右时鬼影仍然存在,大大降低了目标检测的准确性,给后续目标追踪、目标行为分析造成了极大的困难.

(a) 原始图像

(b) ViBe算法

(c) 本文算法

(d) 理想检测图

4.2 性能分析

为了定量分析本文算法与原ViBe算法的性能优劣,本文分别用两种不同评价指标从不同角度对两种算法性能进行评估.

首先,借鉴文献[18]中采用的PCC指标对算法进行性能评估,其中公式为

(4)

其中,TP和TN分别表示正确检测到的前景像素的个数和背景像素的个数;FN和FP分别表示误判的前景像素的个数和背景像素的个数.

利用上述评判标准对本文使用的两组视频序列进行分析,表1为两种算法处理本文视频序列得到的结果(PCC数值愈接近100%,则算法检测性能愈好).

表1 ViBe算法改进前后PCC 对比

然后,为了检验算法处理视频序列的实时性,分别统计了两种算法在两组视频中的平均帧率,最终的统计结果如表2所示.

表2 平均帧率统计结果

综合表1和表2的实验数据可以明显看出,像素点的检测准确率得到大幅度提升,但本文算法的处理速度则略低于原ViBe 算法,不过处理视频序列的速度还是在可接受的范围内,不影响实时检测视频的需求.

本文针对ViBe算法的不足进行了改进.首先,采用前m帧均值构建背景模型,解决了首帧图像存在运动目标所造成的鬼影问题,提高了背景模型的准确性. 其次为了降低样本集重复选取的概率,增加了样本选取邻域数目,同样使得背景建模更加准确. 根据背景变化程度以及变化的速度,动态调整匹配半径和背景更新因子. 然后通过引入最大类间方差法计算当前帧的最优分割阈值,对前景点进行二次判别提高前景点的检测准确率,达到快速消除鬼影效果. 最后,对图像进行形态学滤波处理,使提取的运动目标区域更加完整. 改进算Change Detection公共数据集上进行了试验,与原ViBe运动目标检测算法进行比较. 试验结果表明,改进算法在满足实时性视频处理的同时,检测精度得到大幅提高,能够有效去除鬼影. 未来将进一步探索基于深度学习的目标检测算法.

猜你喜欢

像素点像素背景
像素前线之“幻影”2000
“新四化”背景下汽车NVH的发展趋势
基于局部相似性的特征匹配筛选算法
《论持久战》的写作背景
黑洞背景知识
“像素”仙人掌
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密
图像采集过程中基于肤色理论的采集框自动定位
高像素不是全部