面向运动目标检测的改进ViBe算法研究与实现

来源:优秀文章 发布时间:2023-04-07 点击:

张代旺,符辰桂,李学兵

(1.湖北汽车工业学院电气与信息工程学院,湖北 十堰 442002;
2.江西理工大学软件工程学院,江西 南昌 330044)

随着计算机技术的快速发展,运动目标检测在医学影像、智能交通和智能监控等领域被人们广泛使用[1-3],同时也是图像处理中研究热点.当今,常见的运动目标检测算法有3类:光流法[4-5]、帧差法[6]和背景差分法[7-9].光流法应用到实际场景中,是根据前景和背景像素的速度矢量不同来检测出运动目标,但光流法检测计算量很大且处理时间也较长,所以实时性非常差.帧差法是根据连续的n帧图像来进行差分,根据差分情况判别运动目标,此算法实时性好且简单,但它也存在一些问题,只能检测出运动目标边界,对于运动目标内部的运动目标差分后检测不出,则会出现空洞现象,而在背景变化非常快的场景下也检测不出运动目标,会把变化剧烈的背景错误地当作运动目标.背景差分法思想是用当前帧与背景模型进行差分,通过判断灰度等特征来分割运动目标.背景差分法实现简单且实时性好,同时具备准确性特点,能够很好地对视频序列中运动目标进行目标识别[10]、目标检测[11]以及目标跟踪[12-13],在有完整的背景图像时,能够较好捕获到前景目标.

传统的背景差分法在建立背景模型时耗时比较长,内存占用多.因此,在21世纪初,Barnich等提出了一种背景(visual background extractor,ViBe)建模方法[14],ViBe算法是像素级检测算法,能够用于图像建模或前景检测,运算速度快且计算量小,对运动目标检测效果非常好,但ViBe算法也存在很多不足,比如鬼影、空洞、噪声[15]等问题.对于这些不足,研究员们提出了很多目标检测改进算法.文献[16]提出一种基于块模型的混合高斯运动目标检测方法,根据信息度来对图像按分块进行处理,结合混合高斯运动目标检测算法,减少了算法的计算量,进而降低内存占用时间,不过在运动目标过程中会出现大量空洞.文献[17]提出Surendra背景更新法,能够自己适应去更新得到纯净背景,接着用于Vibe算法背景建模,这种算法能够抑制鬼影现象,但其存在一些不足,在背景更新时,是根据图像亮度进行差分判断,因此计算量大,即先要经过大量计算,接着还需要做大量迭代才能获得真实背景,算法复杂度非常高.文献[18]提出了一种加权Schatten-p范数与结构化稀疏分解的视频前背景分离算法,加权Schatten-p范数能够很好的抑制噪声,采用结构化稀疏约束,并在此基础上建立一种前景与背景分离模型,能够较好地分离目标,但存在一些空洞问题.文献[19]提出用平均背景法可以有效地抑制鬼影现象,但对于运动目标边界像素点不能有效检测,会出现大量漏点问题.文献[20]提出了一种阶段性处理的ViBe算法,是对ViBe算法步骤中细节进行改进,先用平均背景法获取真实背景,再用ViBe算法来背景建模,在前景检测后再加入最大类间方差法进行二次检测是否为背景点,该算法能获取更加精确的前景图像,但也会存在一些漏点问题.

图1 本研究算法流程图

本研究算法如图1所示,输入视频测试序列,首先采用迭代累积平均背景法获取真实背景;
然后再把真实背景分别用于改进的ViBe算法和“或”类型三帧差法,扩大的24领域改进的ViBe算法利用真实背景进行背景建模,可以很好地抑制鬼影现象,从8领域扩大到24领域进行样本选取,扩大像素点样本选取范围,降低样本数据重复率,对于目标边界处可获得高精度样本集,扩大到24领域后能提高背景模型精确度同时也提高运动目标检测的准确度.“或”类型三帧法结合真实背景可以获得运动目标在边界处像素点,再与改进的ViBe算法进行“或”运算操作,可以弥补ViBe算法中运动目标检测时边界漏点问题;
最后把“或”运算操作后视频序列利用形态学处理,可以抑制小噪声干扰,使检测结果更加完整,完成后输出前景图像.本文算法在保证运算速度的同时,能够有效抑制鬼影及漏点问题,同时提高检测精确度.本研究首先提出一种适合任何场景的真实背景获取方法,可以有效地抑制ViBe算法根据第一帧建模所出现的鬼影问题,其次,提出一种基于运动目标检测精度提高的方法.在目标检测数据集由之前8领域区域扩大为24领域来选取样本集,增加了样本数量,这将会提高模型的精确度,同时对边界也做一定处理,会提高边界处的准确度;
最后,提出一种基于帧差法的边界值补足模型.利用帧差法弥补ViBe算法运动目标边界处所存在的漏点问题.

图2 ViBe算法流程图

ViBe算法是Barnich等提出的一种背景建模方法,能够实时检测运动目标,是根据视频序列中首帧来创建背景建模,把首帧中各像素根据周围领域来建立样本集,用当前帧的像素值与背景模型中样本集比较来检测前景,整个过程如图2所示.

1.1 背景建模ViBe算法是根据视频序列中首帧图像来创建背景模型,如图3所示.这个背景模型建立是集合套集合概念,背景模型B为一个大集合,B集合中有i个Ai元素,i=1,2,…,N,即B={A1,A2,…,AN},N表示背景模型大小.同时Ai也为一个集合,Ai(x,y)是由a(x,y)像素周围领域多个随机像素值(p1,p2,…,pn)组成,其中(x,y)是首帧中像素位置,关系式为Ai(x,y)={p1,p2,…,pn},n为随机选取的样本数.

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

1.2 目标检测用当前帧中像素P(x)与背景模型中对应位置处的样本集{p1,p2,…,pn}进行比较得出距离,如果该距离比半径参数R小,则近似样本数加一,根据近似样本数与提前设定的阈值#min再比较,如果大于#min则判定该像素为背景点,反之为前景点,如图4所示.

1.3 背景更新ViBe算法有两种背景更新法,分别是保守更新和前景点更新.保守更新会产生死锁现象,在背景建模时,首帧中若存在运动目标,建模时候会把运动目标作为背景进行处理,则在下一帧时,真实背景与背景模型中误判的运动目标相比较后,会被误判为前景,这样一直下去会产生死锁现象.前景点更新是指某像素连续k次被判定为前景,则将划为背景进行背景更新.ViBe算法是把这两种方法联合使用的,当判断某像素为背景点时,将会有1/φ概率更新样本集合,也有1/φ概率更新周围的领域中样本集合.连续k次判断某点为前景点,也有1/φ概率去更新.

1.4 ViBe算法分析性ViBe算法是一个效率高且简单的算法,根据首帧来建立背景模型,如果首帧中有运动目标,则会被当作背景模型而处理,在下一帧时就会产生鬼影现象,同时ViBe算法也会有边界不清晰等问题,本文中提出的改进方法将能有效抑制鬼影、漏点现象.

改进ViBe算法是从背景建模、目标检测以及背景更新3个方面进行改进.

2.1 迭代累积平均背景法迭代累积平均背景法是通过对每一帧图像迭代相加累积而形成的真实背景,提取真实背景用于ViBe算法背景建模,可以有效地抑制ViBe算法根据第一帧建模所出现的鬼影问题.具体步骤如下:

1) 初始时,视频中首帧图像为I1(x,y),背景为B1(x,y).

2) 后面每一帧图像将进行迭代累加得到新的背景Bn(x,y),即

Bn(x,y)=aIn(x,y)+(1-a)Bn-1(x,y)

(1)

式中,In(x,y)表示第n帧图像,Bn(x,y)表示迭代到第n帧时的背景模型.a为迭代系数,表示当前帧在背景模型中占的比重,且0

图5 背景建模鬼影现象对比图

2.2 改进的目标检测传统ViBe算法在目标检测时,对于单一领域区域进行选取样本集时,会产生重复问题,这将会减少样本数,本文在目标检测做了一定改进,由之前8领域区域改为24领域来选取样本集,如图6(a)所示,增加了样本数量,这将会提高模型的精确度.此外,对于边界也做一定处理,会提高边界处的准确度,如图6(b)所示.

图6 8领域与24领域对比图

最后,对于增加至24领域处理将会对原处理产生一定影响.根据背景模型的变化程度,将对R、#min做一定调整,使获得的背景模型更加符合实际情况.

2.3 利用三帧差分法优化改进的ViBe算法三帧差分法是用当前帧与前一帧和后一帧分别进行差分,再把差分结果做一次“与”运算操作得到最终运动目标.这种算法检测速度快且简单,根据这种优势,在ViBe算法中,所存在小漏点问题可用此方法进行补足.现在将对运动目标边界处像素进行讨论,如图7所示,假设第i帧中像素点(x,y)是运动物体边界点,灰色区域是运动物体,其余为背景区域.第i帧像素点(x,y)与第i-1帧进行比较,相似会被判断为背景点;
第i帧像素点(x,y)与第i+1帧进行比较,不相似会被判断为前景点,则通过“或”类型三帧差法判断(x,y)为前景点,则可以弥补ViBe算法检测运动目标边界时出现的漏点问题.

图7 三帧差分法图

“或”类型三帧差法公式为:

(2)

其中,b(i,i-1)(x,y)表示第i帧和第i-1帧差分结果;
b(i+1,i)(x,y)表示第i+1帧和第i帧差分结果;
T(x,y)表示“或”类型三帧差法在第i帧像素点(x,y)位置时检测结果.测试如图8所示,图8(a)是用ViBe算法对运动目标检测图,图8(b)是用“或”类型三帧差法对运动目标弥补漏点后检测图,从图中可以看出,1位置处,用帧差法弥补漏点后车辆边界处变得更加平滑,而用ViBe算法检测时相应粗糙些,2位置处车轮部位用帧差法弥补后相对ViBe算法稍微清晰光滑一点,1、2位置两种方法对运动目标检测都较完整,几乎没有大的区别,而3位置处车辆用帧差法弥补后结果非常清晰,车辆边界处轮廓非常清楚,而用ViBe算法则是一团糊状不清晰,这是存在大量漏点问题.用“或”类型帧差法弥补漏点相对ViBe算法来说,已大幅度提升检测准确性.

2.4 形态学操作经过以上方法处理后能够很好地抑制ViBe算法中出现的鬼影、漏点现象,但在输出时也会有少量小噪声,为了解决这个问题,将在最后输出前用形态学处理,用以提高运动目标检测质量.

图8 运动目标检测对比图

形态学中“闭”运算可以把小细节放大,能更加清楚显示出细节.而“开”运算是指先腐蚀再膨胀,能够去掉一些小的影响,本文中提出的算法最后采用“开”运算进行处理以达到去除噪声效果.

3.1 实验验证为了验证本文中算法,将选用Change Detection数据集[21]中Pedestrians、Backdoor、Highway和PETS2006视频序列.其中,初始帧应选择含有运动目标的才有研究意义,如果初始帧中不存在运动目标则用ViBe算法可直接建模,第一帧作为背景,但大多数视频中初始帧会含运动目标,才会造成鬼影、漏点等问题,所以本实验中测试序列中初始帧选择含有运动目标的,测试帧没有要求随便选取.选取测试序列Pedestrians初始帧为第590帧,测试帧共655帧;
测试序列Backdoor初始帧为第273帧,测试帧共330帧;
测试序列Highway初始帧为第960帧,测试帧共285帧;
测试序列PETS2006初始帧为第25帧,测试针共720帧.为更好地验证本文所提算法的有效性.在实验验证过程中,除了本文中所提算法以外,还采用了ViBe算法、结合三帧差分的ViBe算法以及文献[23]所提算法对视频序列进行检测对比.

图9 鬼影出现阶段检测结果

图9是对4个视频序列在初始阶段检测的结果,从左至右分别是对Pedestrians、Backdoor、Highway和PETS2006视频序列的检测结果.其中图9(a)、(b)分别是视频序列的原图和理想检测图,图9(c)~(f)分别是用ViBe算法、结合三帧差分的ViBe算法、文献[23]所提算法和本文中所提算法的检测结果.从图9中可以看出,用本文中所提算法与ViBe算法比较,ViBe算法检测出的鬼影(白色框)非常明显,比如:Pedestrians中白框里的人、Backdoor中白色框里的人骑自行车、Highway中白色框里的车以及PETS2006中白色框里的半身人,根本无法区分运动目标和鬼影,鬼影现象将还会持续一段时间,这会给目标追踪及目标行为分析带来非常大的困难.而本文算法在初始阶段检测时,鬼影现在已消除,只有少量小噪音,相对ViBe算法来说,已大幅度提升检测准确性.用本文中所提算法与结合三帧差分的ViBe算法相比,结合三帧差分的ViBe算法虽然很大程度上抑制了鬼影的产生,但是仍然留下了部分残影,效果不佳,也会给目标追踪及目标行为分析带来很大的困难,依旧有待改进,本文算法鬼影现在已消除,只有少量小噪音.相对结合三帧差分的ViBe算法来说,本文算法检测准确性更高.用本文所提算法与文献[23]算法相比,文献[23]算法虽然能抑制鬼影现象,能够准确地提取运动目标,但是会存在少许空洞现象(蓝色框),Backdoor和Highway视频序列检测中,目标运动速度较快,文献[23]所提算法空洞现象较为严重,而在Pedestrians和PETS2006视频序列检测中,目标运动速度较慢,空洞现象得到了一定的抑制,但也存在少许空洞现象,效果不佳,目标不完整也会给目标行为分析带来很大的困难,同时检测准确度有待提高,本文算法能够对抑制鬼影现象的同时,也能够较完整的检测出运动目标,不存在空洞问题,检测准确性更高.总之,本文算法与ViBe算法、结合三帧差分的ViBe算法和文献[23]所提算法相比,本算法兼顾抑制鬼影现象同时,也能够更准确地检测出完整的运动目标.

3.2 算法性能评估为了定量分析比较4种算法的性能,本文中选用精确度(P)、召回率(R)、处理速度以及借鉴文献[23]中的PCC指标从不同的角度进行评估.

(3)

其中,TN和TP分别表示正确检测到的背景像素数量和前景像素数量;
FN和FP分别表示错误检测到的背景像素数量和前景像素数量.其中精确度、召回率越高,算法对运动目标检测越精确.图10为4组视频下的4种算法的精确度(P)和召回率(R)的直方图.

图10 4种算法下的P与R的直方图

图10(a)是精确度直方图,可以看出本文中所提算法的精确度指标明显高于结合三帧差分的ViBe算法和ViBe算法,尤其在“Pedestrians”和“PETS2006”序列中比ViBe算法提高将近1倍,而在“Backdoor”和“Highway”序列中也高了近30个百分点.但与文献[23]所提算法相比,在“Pedestrians”、“PETS2006”和“Backdoor”序列中,本文中所提算法的精确度有所提高但不明显,但在“Highway”序列中,目标运动较快,本研究所提算法的准确度提升显著.由此可见,文献[23]中所提算法的精确度受运动目标速度影响,稳定性较差.

在召回率指标上,如图10(b)所示,本文中算法也有所提高.虽然在“PETS2006”序列中,本文中算法与结合三帧差分的ViBe算法和文献[23]所提算法基本持平,但是在“Pedestrians”、“Backdoor”和“Highway”序列中,本文中所提算法的召回率明显高于结合三帧差分的ViBe算法和文献[23]所提算法.与ViBe算法相比,召回率指标在各测试视频中相差不明显,可见,本文中所提算法与ViBe算法在被错误检测到的背景像素数量上基本相同.总体而言,本文中所提算法的性能要优于其他三类算法.

接着比较4种算法的PCC指标,分别统计了4种算法在测试视频序列中PCC对比(PCC越接近100%,则算法对运动目标检测越精确),如表1所示.

最后比较4种算法的实时性,分别统计了4种算法在测试视频序列中处理速度对比,最终的统计结果如表2所示.

表1 PCC对比 单位:%

表2 处理平均速度对比 单位:s

从表1和表2中可以清楚地看出,本文中算法对像素点检测准确率得到一定提高,其处理速度略低于ViBe算法,但和其他算法持平,需要提前进行真实背景提取,不过在处理视频速度时是在可接受的范围以内,不影响实时检测视频的需求.

本算法是根据ViBe算法中存在的缺陷进行改进.首先,采用迭代累积平均背景法获取真实背景后用于ViBe算法背景建模,解决了首帧图像初始化时出现的鬼影现象,提高背景模型的准确性.其次,对ViBe算法中8领域扩大到24领来选取样本集,增加了样本数量,这将提高模型的精确度.此外,对于边界也做一定处理,能提高边界处的准确度.然后再对改进的ViBe算法与同时已经完成的三帧差法通过“或”运算操作来保留更多的像素点,可以降低漏点问题.最后把“或”运算操作后视频进行形态学滤波处理,可以减少小噪声干扰,使获得的运动目标更加完整.由实验结果可知,本文中算法能够对视频实时性检测的同时,可以很好地抑制鬼影现象及漏点现象,提高对运动目标检测的精确度,使运动目标更加完整.实验结果表明,本文所提算法在光照突变场景下检测效果不佳,但是在静态背景下可以获得很好的分离效果,并且在具有复杂多样的背景中也可以获得很好的分离效果.

下一步的工作中,将会考虑光照突变的这种情况,使其具有健壮性,并且还会考虑摄像机转动的情况.

猜你喜欢鬼影漏点像素像素前线之“幻影”2000小哥白尼(军事科学)(2022年2期)2022-05-25空客A320 系列飞机大翼干仓燃油渗漏解决方案航空维修与工程(2020年7期)2020-09-18海底管线漏点修复技术探讨石油化工建设(2019年4期)2019-10-10高含硫气井完井管柱多漏点泄漏规律与控制石油钻采工艺(2019年3期)2019-09-25“像素”仙人掌红领巾·萌芽(2019年8期)2019-08-27ÉVOLUTIONDIGAE Style de vie tactile中国与非洲(法文版)(2017年10期)2017-11-23如何消除胶印“鬼影”?印刷技术·数字印艺(2016年11期)2016-12-06基于单应性矩阵的图像拼接方法的对比分析科技视界(2016年6期)2016-07-12高像素不是全部CHIP新电脑(2016年3期)2016-03-10实时的静止目标与鬼影检测及判别方法浙江大学学报(工学版)(2015年1期)2015-03-01推荐访问:算法 改进 面向
上一篇:基于大数据与开放关联数据设计政府透明度模式*
下一篇:电商经济中的差序格局:产业集聚、空间想象与数字消费不平等*

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有