ViBe算法(精选3篇)
ViBe算法 篇1
摘要:针对经典Vibe算法在实际视频图像中,对行人目标检测不够精确,主要存在“鬼影”、光照误检的干扰问题,结合三帧差分算法及LUV均匀色彩空间的特性,提出了一种改进的Vibe算法。该算法首先通过三帧差分对视频进行预处理,获取真实背景,然后结合LUV空间的均匀色彩特性降低对光照的敏感度,最后对空洞填充并获取行人目标的最小外接矩形。实验结果表明,该算法能有效地消除“鬼影”问题,并在光照突变情况下具有良好的鲁棒性,在复杂环境的实时监控视频流中具有理想的行人目标检测效果。
关键词:经典Vibe算法,三帧差分,LUV色彩空间,行人目标检测
0 引言
运动目标检测是计算机视觉领域中重要的研究课题之一,融合了图像处理、模式识别、人工智能以及自动控制等多个领域的内容,是一个跨学科、富有挑战性的前沿课题。行人目标检测作为运动目标检测的一个实例,随着我国智慧城市建设的大力开展,智能视频分析需求的亟需提高,它在视频监控系统中得到了广泛应用[1]。但在复杂的现场环境中,诸如光照突变、动态背景、“鬼影”等干扰因素,给行人目标检测技术带来了很大的挑战。
目前常见的目标检测方法有: 光流法[2]、帧间差分法[3,4]、背景减去法[5,6,7,8]。光流法由于计算十分复杂,从而导致算法的实时性差、实用性低。帧间差分算法相对简单,利用图像序列中相邻帧之间的图像差分来提取运动的目标区域,但往往不能提取出完整的目标。背景减去法通过实时的背景提取和更新实现运动目标的检测,算法简单且实时性好,但其检测性能与背景模型的准确性有较大的相关性。
为了建立适应动态背景的有效背景模型,学者们提出了多种背景建模算法,例如: 混合高斯模型( Gaussian mixture model,GMM)[9]、码本模型( Code Book)[10]、GMG算法[11]和Vibe算法[12]。其中,Olivier Barnich等[12]学者提出的基于像素非参数化随机样本模型( Visual Background Extractor,Vibe)的背景减除算法,以其计算量小、检测速度快等特点得到了广泛应用,但该算法对“鬼影”的滤除以及光照的处理方面未做太多考虑。本文在Vibe基础上结合三帧差分以及LUV均匀色彩空间,提出了一种改进的Vibe算法,用于视频监控中行人目标的检测。实验结果表明,本文算法与传统Vibe算法检测结果相比,不仅实现了对“鬼影”的快速抑制并提高了对光照影响的鲁棒性,同时还保证了视频监控的实时性需求。
1 Vibe运动目标检测算法
Vibe算法,即视觉背景提取算法,用来实现快速的背景提取和运动目标检测。该算法首次直接对单帧图像进行初始化建模,并将随机化的方法引入到背景模型中,提出一种随机更新背景模型的策略。由于算法的实时性和鲁棒性较高,一经提出就很快被用于实际应用中。算法的核心思想主要包括背景建模、前景检测及背景模型的更新。
1. 1 背景建模及前景检测
对视频第一帧图像的每一个像素点建立一个包含N个样本的像素模型,根据相邻位置像素值具有相似时空分布的特性,随机选取每个像素的八邻域中某个像素值来初始化背景模型中该像素的值。定义v( x) 为RGB彩色空间中x处的像素值,vi为选取的样本,则像素v( x) 的背景模型记为:
定义一个圆域SR( v( x) ) ,如图1 所示,中心为像素v( x) ,半径为R ,统计落在圆域内的样本的个数,记为#{ SR( v( x) ) ∩ { v1,v2,…,vN} } ,给定一个阈值#min ,若满足:
且在RGB通道上,样本像素的色彩差满足公式( 3) 时,则将v( x) 分类为背景,否则认为是前景。
其中,c代表R,G,B这三个通道。
1. 2 背景模型的更新
随着时间的推移,背景不可避免会发生一些变化,如光照,前景遮挡等等。因此需要不断地更新背景模型,才能达到较强的抗噪性。Vibe算法在模型更新时引入随机策略,提出了一种简单快速的更新方法:
1采用无记忆更新策略,随机选取样本更新。每次确定需要更新像素点的背景模型时,从新像素点的八邻域中随机选取一个样本,替代原有背景模型中随机选取的一个样本值。这样保证了样本在背景模型中存在寿命的平滑指数衰减,避免了先入先出方法造成的变化速度不能正确处理的问题。
2随机决定是否更新背景模型。即并不是每处理一帧数据,都需要更新处理,而是按一定的更新率更新背景模型。增加一个时间二次抽样因子记为φ ,以1 / φ 的概率更新背景模型。从而进一步提高了背景模型的时间相关性,并有效地防止周期或者伪周期的背景运动。
3随机更新邻域像素点。图像中邻域的像素具有相似的时空分布,因此背景模型中的样本也要更新对应的邻域。增加一个时间二次抽样因子 φ ,以1 / φ 的概率更新该像素的八邻域中的某一像素。这样有效地保证了空间一致性,可以随时间恢复被前景遮挡的背景像素。
2 改进的Vibe算法
Vibe算法程序简单,特别是对于场景中有快速运动的物体、规律闪烁的背景以及遮挡的背景等情况的处理具有良好的鲁棒性。针对原算法中存在“鬼影”以及对于图像中发生光照突易产生误检现象的问题,本文对视频进行三帧差分[13]预处理并结合形态学及LUV色彩空间[14,15]的方法提出了一种改进的Vibe算法。
2. 1 基于三帧差分的背景获取
在Vibe算法中,由于直接对第一帧进行背景建模,若目标在第一帧中出现,则得不到纯净的背景,因此本文利用预处理过程来获取相对真实的背景。帧间差分法采用基于像素的时间差分来提取图像中的运动区域,具有实现简单,计算量小,对光线等场景变化不敏感,对动态环境具有较强的自适应性,且不会产生“鬼影”的特点。本文预留视频的前n帧( 当i < n时) 使用三帧差分算法得到运动目标的位置信息,通过运动特征在不同帧中提取内容来填充真实背景。背景获取预处理具体步骤为:
1设定预处理帧数n 、帧处理步长step ,当前处理帧号i ,背景生成帧号t 。
2获得运动目标的位置信息: 从第t帧开始,令i = t ,提取视频中第t - step 、t 、t + step帧图像做三帧差分,差分后的图像直方图具有明显的双峰特征,即背景和目标之间的类间方差很大。基于这种特性,使用大津法对结果进行二值化处理,获得第t帧图像中运动目标的位置,将第t帧中除去移动目标位置外的部分作为真实的背景信息。
3运动目标位置填充: 将当前处理帧后移step帧( 即i = i + step ) 。
当i < n时,用t - step 、t 、t + step做三帧差分,通过差分结果图像判断第i帧位于第t帧图像运动目标位置处是否有未填充的背景信息,若有,则将第i帧此位置的像素填充为背景,同时填充该像素的八邻域; 否则,转步骤3。
若第t帧图像运动目标位置已经全部填充完毕转步骤4; 否则转步骤3。
当i ≥ n时,根据邻域像素的相似时间分布特性,选择最近邻域背景像素填充,转步骤4。
(4)真实背景输出。
2.2 LUV颜色空间
RGB空间是非均匀色彩空间,对图像中的光照改变非常敏感,会导致错误地标记光照改变时的背景为前景。因此本文把RGB图像转换到LUV颜色空间,以提高算法对光照的抗干扰性。LUV全称为CIE1976( L*,u*,v*) ,是均匀色彩空间,具有视觉统一性。其中,L*代表亮度信息,u*和v*代表色度信息。LUV色度坐标可以由RGB坐标转换得到:
其中,R,G,B分别代表像素v( x) 在x处的色彩值。u' 和v' 是色度坐标,
采用式( 5) - ( 7) 形成标准化的坐标,令( Lb*,ub*,vb*) 为像素vb的采样值,( Lt*,ut*,vt*) 为vb在t时刻的采样值。如果背景完全静态,当光照变暗时,此时的背景像素对比原先的背景像素要暗: α ≤Lt*/ Lb*≤ 1; 相反,当光照变亮时,此时的背景像素对比原先的背景像素要亮: 1 ≤ Lt*/ Lb*≤ β。因此,光照强度的容差变化范围可以表示为: α ≤ Lt*/L*b≤β。
在LUV色彩空间中式( 3) 可以改写为式( 8) ,当#( v( x) ) ≥ #min时,像素v( x) 被判为是背景。
这里s、α 和 β 都是经验常数,本文实验中,设置s = 0. 03,α = 0. 6,β = 1. 5。
2. 3 算法步骤
本文算法流程框图如图2 所示,具体步骤如下:
1使用三帧差分算法预处理得到真实背景。
2背景建模。对预处理得到的背景进行建模,得到20 幅背景样本。
3前景检测。对图像中的每一个像素,根据式( 8) 计算与每一幅背景样本中对应像素的欧氏距离#( v( x) ) ,设定阈值R = 20 ,#min = 2 。即如果至少有2 个结果小于20,则该像素点判断为背景,转步骤4; 否则为前景,对二值图像进行膨胀处理,再做闭操作,填充小空洞。计算像素值为1 区域的面积A ,当A ≥ 300 时对区域做最小外接矩形,即为目标检测结果。
4更新背景。如果当前像素判断为背景像素,设定时间二次抽样因子 φ = 16 ,即随机选取背景样本中以1 /16 的概率更新样本。同时以1 /16 的概率更新该像素的八邻域中的某一像素。
3 实验结果分析
算法运行环境为CPU: Intel( R) Core( TM) i5 -2450M@ 2. 5GHz; 内存: 4. 00GB的笔记本上; 程序代码使用VS2010 + opencv2. 4. 8 编写。本文的实验过程中其它参数设置n = 50,step = 5,i = 5,t = 5,φ = 16。在对视频行人目标检测的效果进行评价时,本文采用主观评价。
实验采用Cell_phone_Spanish视频对本文算法进行测试,同时与传统Vibe算法进行比较。实验过程中,算法采用的参数与原文相同。实验结果如图所示,图3 是算法的背景图像对比图,图3( a) 为视频第一帧,即原始背景,图3( b) 为预处理后得到的真实背景。图4 是存在“鬼影”时检测结果图,图4( a) 为传统Vibe算法的检测效果,可以直观地看出,由于“鬼影”干扰,产生了误检现象; 图4( b) 为本文算法检测效果,预处理后很好地消除了“鬼影”影响,检测结果较好。实验视频是高速运行的列车上拍摄得到,外界光照变化对视频中目标检测存在影响。图5 给出了光照变化情况下的检测结果,图5( a) 为传统Vibe算法的检测结果,大片光照会产生误检,而且不做形态学处理,得到的检测结果也不够精确; 图5( b) 为本文算法的检测结果,转换色彩空间并加入形态学处理后,算法对光照的鲁棒性得到了显著增强,同时提高了检测的准确性。
4 结束语
本文提出了一种基于Vibe的改进算法,该算法的主要贡献有: 1实现复杂环境视频下行人目标的检测。2该算法利用三帧差分算法获取视频的真实背景进行初始化,从而有效降低了“鬼影”对背景模型的影响。3通过引入LUV颜色空间,提高了算法对光照的抗干扰性,明显降低了误检率。本文算法在保证复杂环境视频中目标检测实时性的同时提高了检测效果的准确性,并提高了算法对光照的鲁棒性。
ViBe算法 篇2
视频中运动目标检测技术是智能交通、人机交互等领域的关键。现在主要的前景检测技术有帧差法、背景减法、光流法等。帧差法首先利用图像序列中前后两帧做差值, 然后对差值图像进行阈值化, 从而得到前景图像。帧差算法简单、速度快, 但它无法适应复杂背景, 检测出来的前景会出现“双影”现象, 对于缓慢移动的物体会出现空洞。vibe算法是背景减法的一种, 算法比较简单, 速度较快, 具有一定的鲁棒性。但vibe算法会出现孔洞现象, 部分扰动背景和噪声会被检测成前景。本文针对帧差算法缺陷进行改进, 将改进后帧差算法融入vibe算法中, 使它对噪声和扰动背景具有一定的适应性, 快速的消除“ghost”现象, 同时使其对抑制阴影也有一定效果。
2 帧差算法改进
设f1 (x, y) 和ft+1 (x, y) 是图像序列中连续的两帧图像, 差分后的图像为dt, t+1 (x, y) , 则
选取阈值T, 将差分后的图像dt, t+1 (x, y) 二值化, 则得到前景图像Ft, t+1 (x, y) :
上面所述的帧差算法模型简单, 运行速度快, 但是对噪声和扰动复杂背景无法适应。为了解决这个问题我们做如下考虑, 对于前景像素点在一定的范围内像素值可以看成是连续的, 而噪声则相对不具有连续性, 所以选择参考邻域像素值的变化, 对帧差法进行改进, 使它能够抑制噪声以及适应一定的扰动背景。
设像素点 (x0, y0) 的8邻域为N8 (x0, y0) , 利用差分法求连续两帧的差值, 对于像素点 (x0, y0) 它的8邻域像素点对应的差值如下:
二值化后如下:
设ft, t+1 (x, y) , (x, y) ∈N8 (x0, y0) 中判定为1的个数为n, 设定阈值Δ, 则像素点的分类判定方式为:
3 vibe算法
3.1 背景构建及初始化
设t=0时刻, 在像素点x的8邻域内随机选取N个像素值v1, v2, …vN作为像素点x的背景模型, 设背景模型为M (x) , 则
3.2 像素点的分类
设像素点x的像素值为v (x) , 以像素值v (x) 为原点半径为R的球为SR (v (x) ) , 选取阈值Ω, 如果SR (v (x) ) ∩M (x) ≥Ω则像素x为背景, 否则为前景。
3.3 背景模型的更新
与一般前景检测算法不同vibe采用无记忆的随机像素点的替换策略。具体为:由步骤 (2) 如果像素点x为前景则背景不更新, 否则:
(1) 以概率φ更新像素点x的背景M (x) 。更新策略为:在背景模型M (x) 中, 随机选取一个像素值替换之。
(2) 以概率φ更新像素点x的8邻域某个像素点y的背景M (y) 。更新策略为:在像素点x的8邻域内随机选取像素点y, 在像素点y的背景模型M (y) 中, 随机选取一个像素值替换之。
4 填补空洞
对于缓慢移动的物体帧差法检测到的前景容易包含空洞, 导致前景图像不连续, 我们通过vibe算法以及参考邻域像素来填充空洞。对于像素点 (x0, y0) 由改进的帧差法得到二值图像像素值为F (x0, y0) , 8邻域为N8 (x0, y0) , 同时由vibe算法得到前景图像像素值为f (x0, y0) , 设F (x, y) , (x, y) ∈N8 (x0, y0) 中大于0的个数为m, 设定阈值Φ, 则
5 改进帧差和vibe算法融合
场景中的背景物体突然移动, 则会在原来的位置检测出前景, 这种现象叫做“ghost”现象。帧差算法理论上可以在几帧之内快速的消除“ghost”现象, 现假设由改进的帧差算法得到的前景图像为F (x, y) , vibe算法得到的前景图像为f (x, y) , 我们简单的将两幅图像相与, 即
则最终的改进算法可以迅速的消除“ghost”现象。通常情况下, 阴影相对于背景图像具有一定的透明度, 反映到图像上阴影较于真正移动前景它的灰度值更接近背景, 即前后两帧图像的差值, 阴影部分要小于真正的移动物体, 适当的调整阈值T和Δ, 就会使改进后的算法对阴影具有一定的抑制效果。由于改进后的帧差算法对于扰动背景和噪声已具有较好的效果, 相与后的图像则同样具有较好效果。
6 前景图像处理
针对vibe算法具有孔洞的问题, 本文采用图像处理的相关方法, 查找二值图像的内部轮廓, 然后填充。本文的改进算法在抑制噪声方面已经具有较好的效果了, 本部分仍旧可以加入形态学腐蚀和膨胀处理, 以期获得更好的处理效果。
7 实验效果对比分析
根据以上的算法描述, 选择一段图像序列来进行背景建模, 图像尺寸为360×240, 各个参数取值为Ω=2, N=16, R=20, Δ=5, Φ=2。选取图像序列的某一帧实验效果如图1所示, 所有方法均没有进行形态学处理。
图1中 (a) 为原始图像; (b) 为帧差算法, 可以看到大量的噪声被检测为前景, 并存在“双影”现象, 前景部分含有空洞; (c) 为vibe算法检测的结果, 可以看出相比于帧差vibe算法对噪声有一定的抑制作用, 但图像的上半部分还是有不少噪声被检测出为前景, 而且vibe算法对阴影没有效果; (d) 为本文的改进算法, 由于帧差检测步骤中参考了邻域像素, 所以本文的改进算法对噪声取得了较好的效果。同时适当的调整阈值, 改进算法对阴影也有一定的抑制作用。
为了方便测试“ghost”现象的处理效果, 我们选取图像序列中的一部分进行测试, 初始化图像包含前景物体, 实验结果如图2、图3所示。
图2中的图像序列为vibe算法的处理结果, 65帧可以看到部分背景区域误检测为前景, 即出现“ghost”现象, 71帧“ghost”现象慢慢消失, 到101帧时误检测的前景基本融入背景中。图2中图像序列为本文改进算法的处理结果, 可以看到第10帧时, “ghost”区域几乎消失, 到12帧时“ghost”现象完全消失, 由此可见本文的算法对“ghost”现象具有更好的处理效果。
8 结束语
本文通过参考邻域像素对帧差算法进行改进, 使它能够抑制大量噪声和适应一定的扰动背景, 同时利用vibe算法的结果对帧差产生的空洞进行填充, 最后将改进后的帧差算法和vibe算法进行融合。实验表明融合后改进算法相较于vibe算法对噪声有更强的适应性, 对阴影也有一定的抑制效果, 对“ghost”现象具有更好处理效果。阈值的选取对于帧差算法的效果具有很大影响, 现在有固定阈值、otsu阈值分割等方法, 实际的效果取决于应用场景, 可以在这方面做更进一步的研究。
参考文献
[1]Barnich OVan Droogenbroeck M.ViBe:A universal background subtraction algorithm for video sequences.IEEE Trans.on Image Processing, 2011, 20 (6) :1709-1724.
[2]李毅, 孙正兴.一种改进的帧差和背景减相结合的运动检测方法[J].中国图像图形学报, 2009 (06) .
[3]刘鑫, 刘辉.混合高斯模型和帧间差分相融合的自适应背景模型[J].中国图像图形学报, 2008 (04) .
ViBe算法 篇3
ViBe算法是一种非参数化聚类背景建模方法, 在不同环境下具有良好的适应性和实时性[6], 检测效果明显。传统的ViBe算法仍然存在一些缺陷, 例如, 光照突然变化时, ViBe算法会将大面积的背景点误检为前景点, 即使经过了很长时间, 也难以重新将其归类为背景。同时, ViBe算法背景模型的单帧初始化方式容易引入鬼影区域, 而且该算法模型更新策略并不能很好地处理噪声。针对这些不足, 本文依据光照变化并不会改变图像的纹理特征这一特性, 提出运用尺度不变局部三值模式 (SILTP) [7]对图像进行纹理特征提取, 通过比较SILTP值来对前后景像素进行分类, 实验结果表明, 改进后的算法对光照变化取得了较好的鲁棒性。此外, 本文采用20帧图像进行背景模型的初始化, 并且更新策略改进为替代异常值的方式, 实验显示, 改进后的算法在处理鬼影区域和抑制噪声方面取得了明显的效果提升。
1 ViBe算法思想和SILTP算子
1.1 ViBe算法思想
ViBe算法首次将随机化的方法引入到背景模型中, 同时根据图像中相邻像素的时空一致性原则, 采用单帧初始化策略和随机信息传播机制。
1) 背景模型表示:属于背景中每一个像素的背景模型用N个背景样本组成 (N取值为20) , 定义I (x) 为欧式空间中位于x处的像素, Ik为选取的样本像素, 则像素I (x) 对应的背景模型M (x) 如式 (1) 所示
2) 背景模型初始化:与其他背景差分算法不同的是, ViBe算法采用单帧初始化策略。如图1a所示, 在第一帧中, 从I (x) 的八邻域NG (x) 里随机多次选取N (N取值为20) 个像素值, 存放到对应的背景模型的N个样本中。如式 (2) 所示, 定义M0 (x) 作为第一帧的背景模型
3) 像素分类:在2-D欧式空间中, 定义SR (I (x) ) 是以像素I (x) 为中心, 距离R (R取20个像素) 为半径的球体 (见图1b) 。设定阈值#min (#min取值为2) , 当集合M (x) 与SR (I (x) ) 的交集大于#min时, 则判定I (x) 为背景像素, 反之, 则为前景像素。
4) 背景模型更新及信息传播:若I (x) 被分类为背景像素, ViBe算法将从I (x) 的背景模型M (x) 中随机选取一个样本Ik, 然后用I (x) 来替代。这种随机化更新方式, 保证了每一个样本的生命周期呈平滑指数递减, 避免了先进先出更新策略的缺陷。考虑到在实际应用场景中, 不必频繁更新背景, 该算法采用了二次时间取样的方式, 来延长模型中样本的生命周期。
为了保证像素邻域空间一致性以及恢复被前景遮挡的背景像素, ViBe算法在采用像素I (x) 对背景模型进行更新的同时, 还使用I (x) 对邻域中的像素的样本模型进行更新, 这就是随机信息传播机制。
1.2 尺度不变局部三值模式SILTP
在实际应用中, 光照突变等因素都会导致图像的多尺度变化, 对此, Shengcai L等人在LTP[8]的基础上提出尺度不变三值模式 (Scale Invariant Local Ternary Pattern, SILTP) 。其计算公式如式 (3) 所示
式中:Ic表示中心点像素值, Ik表示N邻域中所对应的像素值, 并且N邻域位于以Ic为中心, R为半径的区域中, 表示二进制串的连接运算符, t表示比例系数, st (Ic, Ik) 是一个分段函数, 定义如式 (4) 所示。由于比较结果只有三种可能, 因而采用两位二进制来表示结果, SILTP具体编码过程如图2所示, 从图中可以看出, SILTP对于噪声和尺度变化具有强鲁棒性。
SILTP算子的优势主要体现在三个方面。首先, 由于SILTP只比LBP多一次比较, 因此, 其计算效率较高;其次, 与LTP类似, SILTP引入区间范围, 从而对噪声的鲁棒性较好;最后, 也是最重要的一点, 就是SILTP引入尺度不变特性, 因此, 对于光照变化的处理效果较好。
2 改进后的运动目标检测算法
结合SILTP纹理描述算子, 利用像素的时间和空间特性, 提出改进后的运动目标检测算法。图3为本文的算法流程图, 下面将从背景模型初始化、运动目标检测和模型更新等方面介绍本文的改进算法。
2.1 背景模型的初始化
当视频的第一帧包含运动目标时, ViBe单帧初始化策略在初始化模型时, 会将运动目标像素作为背景像素值进行建模, 运动目标移动后, 采样得到的真正背景像素无法与背景模型匹配, 导致背景像素被误检为前景, 由这类像素形成的区域, 称之为鬼影区域。此外, 从邻域中随机选取背景初始样本的过程中, 可能会引入不同纹理的像素, 破坏了初始模型。
因此, 本文针对ViBe算法初始化的不足, 提出采用20帧图像进行初始化, 能够有效抑制鬼影。如式 (5) 所示, 从同一位置的20帧图像中选取样本构成初始化模型M0 (x) , Ik (x) 表示第k帧中位于x处的像素
2.2 运动目标检测
目前主流的运动目标检测算法都是依赖于概率密度函数和参数统计, 但是在实际应用中, 统计模型很难完整客观地反映运动场景。实际上, 如果把运动目标检测看成是分类问题, 那么只要正确地分出前景像素和背景像素就可以完成运动目标的检测。为此, 本文提出计算待检测点与背景模型中每个样本的SILTP值, 同时设定SILTP匹配阈值Th和样本匹配阈值#min, 若匹配度达到Th的样本数量超过#min时, 则判定该检测点为背景, 反之, 为前景。具体步骤如下:
1) 计算出待检测点像素I (x) 的SILTP值c (x) 和背景模型每一个样本的SILTP值, 则转化后的背景模型如式 (6) 所示
2) 式 (7) 表示用异或操作来计算c (x) 与式 (6) 中样本的匹配程度, 匹配程度通过统计异或结果中1的位个数来表示
3) 当该样本匹配程度大于阈值Th时, 标记该样本为1, 反之为0, 如式 (8) 所示
4) 统计样本中nk (x) 为1的个数, 得到结果Sum (x) , 如式 (9) 所示
5) 最后对I (x) 像素进行分类, 如式 (10) 所示
经过多次实验分析, 得到本文中参数Th=3, #min=2。
2.3 背景模型更新
在运动目标检测过程中, 背景模型容易混入异常样本, 比如误分类的前景像素或噪声像素, 这时, ViBe的随机更新方式并不能有效地处理。为此, 本文提出替代异常值的更新方式, 具体思想如下:
首先, 根据式 (6) 得到转化后的背景模型, 计算出每个样本与模型中其他样本的海明距离平均值, 如式 (11) 所示, Di表示第i个样本与其他样本的海明距离平均值。
其次, 找出平均海明距离最小所对应的样本, 如式 (12) 所示, index表示平均海明距离最小所对应的样本下标
最后, 设定更新速率为φ, 当某像素I (x) 分类为背景时, 则有1/φ的概率更新其背景模型中的样本, 即用c (x) 替代样本cindex (x) 。同时, 与ViBe算法传播机制相似, 本文利用邻域像素分布相似特性, 在更新该像素点背景样本的同时, 再次按照1/φ的概率随机选取I (x) 的8邻域的一个像素点, 将c (x) 替换其背景模型中的样本SILTP值。
3 实验结果与分析
本文实验的软件环境为配置了OpenCV 2.4.8的Visual Studio 2013, 硬件环境为3 Gbyte的内存和Intel Core i32.4 GHz的处理器。处理的视频序列来自UCSD的Beach People视频序列和CVPR的PETS视频序列。为了进行算法比较, 说明本文改进算法的性能, 实现了ViBe算法和本文改进后的算法, 其中, 在本文改进算法使用的是8邻域, 模型样本数N取20, SILTP阈值Th取3, 样本匹配阈值#min取2, 更新速率φ取16, 而ViBe算法采用原作者使用的参数, 即球形半径R取20, 样本数N取20, 更新速率φ取16, 样本匹配阈值#min取2。
3.1 Beach People图像序列实验结果
本图像序列主要用来检验改进算法在光照变化和噪声条件下的检测效果。在Beach People图像序列中, 阳光在海面反射会造成光照的突然变化, 同时, 波动的海面和抖动的树叶造成的噪声都会给检测效果带来挑战。在该图像序列上得到的实验结果如图4所示, 其中, 图4a表示截取的序列第230帧, 图4b表示理想状态下的检测结果, 图4c表示ViBe算法处理得到的结果, 图4d表示本文改进算法检测的结果。可以看出, ViBe算法对噪声和光照变化的处理不足, 导致树叶和围墙等背景物体误检为前景, 影响了机器视觉的后期处理, 比如目标跟踪。而从图4d可以得出, 本文的改进算法检测效果和ViBe算法相比有较大的提升。
3.2 PETS图像序列实验结果
本图像序列主要用来检验改进算法在鬼影抑制和复杂纹理场景下的检测效果。在PETS图像序列中, 背景纹理复杂, 同时, 静止的车辆移动后, 会造成鬼影区域。如图5所示, 图5a表示截取的序列第450帧, 图5b表示理想状态下的检测结果, 图5c是ViBe算法的处理结果, 图5d表示本文改进算法得到的检测结果。可以看出, 本文改进算法在鬼影抑制和复杂背景纹理处理方面和ViBe算法相比有较大的改进。
3.3 实验结果的定量分析
目前有许多的定量分析方法来评估背景差分法的检测效果, 但是很难选择最优的方法, 原因在于每个作者提出的分析方法都是有利于评估自身的算法, 有失公允。通过比较, 可以发现这些分析方法一般包括4个因素, 即正确检出的前景像素数量 (TP) , 误检的前景像素数量 (FP) , 正确检出的背景像素数量 (TN) , 误检的背景像素数量 (FN) 。根据文献[9], 正确分类比 (PCC) 公式包含了以上4个因素, 因而采用PCC来评估本文的实验结果, PCC公式如式 (13) 所示
为了抑制ViBe算法在初始化过程中容易引入鬼影问题, 本文采用了20帧初始化方式, 同时, 纹理特征的提取与比较都需要付出计算代价, 因而改进算法在处理速度上较ViBe算法有所降低。但是, 从表1中可以得出, 本文改进的算法在正确分类比率上较Vi Be算法有较大提升, 特别是在硬件较好环境下, 两种算法处理速度相近时, 改进后算法在性能上的优势更加明显。
4 小结
本文针对经典ViBe算法提出改进。首先, 对于模型初始化方面, 本文采用20帧初始化策略, 有效抑制了鬼影的形成其次, 对于前后景检测方面, 本文利用SILTP算子提取像素的纹理特征, 通过比较SILTP值来对像素进行分类, 提高了算法对光照变化的鲁棒性;最后, 对于模型更新方面, 本文采用替代异常值方式, 在处理噪声等异常像素时, 检测效果有明显的提升。实验结果显示, 本文提出的改进算法在满足实时性的基础上, 对复杂场景的鲁棒性较强。
参考文献
[1]ZIVKOVIC Z.Improved adaptive gausian mixture model for background substraction[C]//Proc.International Conference Pattern Recognition.[S.l.]:IEEE Press, 2004 (2) :28-31.
[2]KIM K, CHALIDABHONGSE T, HHARWOOD D.Real-time foreground-background segmentation using codebook model[J].Realtime Imaging, 2005, 11 (3) :172-185.
[3]WANG H, SUTER D.A consensus-based method for tracking:modeling background scenario and foreground appearance[J].Pattern Recognition, 2007 (40) :1091-1105.
[4]MADDALENA L, PETRESINO A.A self-organizing approach to background substraction for visual surveillance application[J].IEEE Trans.Image Processing, 2008, 17 (7) :1168-1177.
[5]BANICH O, VAN DROOGENBROECK M.Vi Be:a universal background substraction algorithm for video sequences[J].IEEE Trans.Image Processing, 2011, 20 (6) :1709-1724.
[6]邓博, 范文兵, 常伯乐.基于嵌入式系统的运动目标检测算法的设计及实现[J].电视技术, 2013, 37 (9) :214-217.
[7]LIAO Shengcai, ZHAO Guoying, KELLOKUMPU V.Modeling pixel process with scale invariant local patterns for background substraction in complex scenes[C]//Proc.2010 IEEE Conference on Computer Vision and Pattern Recognition.[S.l.]:IEEE Press, 2010:1301-1306.
[8]TAN X, TRIGGS B.Enhanced local texture feature sets for face recognition under different lighting conditions[EB/OL].[2014-12-10].http://link.springer.com/chapter/10.1007%2F978-3-540-75690-3_13.