基于GrabCut算法和四帧差分法的目标提取算法
2016-06-14
作者:庾鹏,王旭,仝天乐,王秀超
来源:2016年微型机与应用第11期
庾鹏,王旭,仝天乐,王秀超
(贵州大学 计算机科学与技术学院,贵州 贵阳 550000)
摘要:提出了一种基于GrabCut算法和四帧差分法相结合的运动目标检测和提取算法。首先,利用四帧差分法对视频中连续的四帧图像进行二次差分;然后,对差分后的图像分别做水平投影和垂直投影,计算运动目标区域;最后,使用GrabCut算法分割目标区域得到完整的运动目标。实验结果证明,该方法既能精确和完整地检测出运动目标,又能有效地去除空洞、拉伸等现象。
关键词:四帧差分;GrabCut分割;目标检测
0引言
目前随着科技的不断发展,智能化视频监控在各个领域得到了广泛的应用,例如智能交通监控、安全防范系统、值岗检测系统等。无论应用在何种领域,对视频中移动物体的研究和分析才有价值,目标的完整提取是各种后期处理和应用的基础,所以对移动目标的检测与完整提取也就成为了视频处理研究中的一个热门问题。近些年来很多学者已经对这方面问题进行了研究,也提出了很多移动目标检测与提取的方法,主要有光流分析法[1]、帧间差分法和背景差分法[2]3种。
背景差分法是将视频图像与背景图像做差分,取差分值较大的区域为移动目标,然而难以得到合适的背景图像,而且易受外界干扰。帧间差分法与背景差分法类似,帧间差分法是对视频中连续帧做差分,具有计算效率高、实时性好等特点,但是容易出现重叠、空洞、拉伸等问题。光流分析法检测效果比前两种好,但是计算复杂,不能达到实时性。3种方法都很难取得完整的目标,GrabCut[3]算法综合了图像的纹理信息和边界信息对图像进行分割,只需要少量的交互操作就可以达到高精度的分割。根据上述问题,结合帧间差分法和GrabCut算法的各自优点,提出了以四帧差分法计算和框定运动目标区域,GrabCut算法在框定区域内精确分割目标的方法。
1基于GrabCut算法和四帧差分法的运动目标检测与提取
1.1预处理
在使用本文提出的算法前,对每一帧图像进行预处理十分必要,它可以提高算法在实际应用中的效率。图像平滑可以有效减少图像中的噪声,改善图像的质量,有利于对目标的提取[4]。直方图均衡化是图像空域增强的一种经典方法,可以改善图像灰度分布,增强图像的整体对比度,方法简单、高效[5]。本文实验使用的预处理是高斯滤波和直方图均衡。
1.2四帧差分法快速检测目标区域
(1)四帧差分
提取视频图像中连续的四帧,经过预处理后为f1(x,y)、f2(x,y)、f3(x,y)、f4(x,y),计算f1(x,y)与f3(x,y)以及f2(x,y)与f4(x,y)的差值图像,差分结果为g1(x,y)与g2(x,y),计算方法如式(1)、(2)所示。g1(x,y)与g2(x,y)中已经包含运动目标的信息,对其进行“与”运算[6],得到结果为H(x,y)。H(x,y)定义如式(3)。
g1(x,y)=|f3(x,y)-f1(x,y)|(1)
g2(x,y)=|f4(x,y)-f2(x,y)|(2)
H(x,y)=|g1(x,y)g2(x,y)|(3)
(2)运动目标域框定
在经过两次差分处理之后,静止的背景基本被去除,但由于外界环境变化复杂,光线不断变化,使得没有移动的物体在水平投影和垂直投影并不为0,因此要使用一个阈值T,分割去除因为光线变化而造成静止物体移动假象的部分。
首先对H(x,y)水平投影得到Hx(x,y),如式(5),然后使用阈值Tm(式(6))对Hx(x,y)阈值分割,数值大于Tm的保持不变,小于Tm的为0,根据阈值分割后的图像可以得到运动物体水平方向的范围(x1,x2)。在垂直方向没有必要全部投影,只需要对水平检测范围(x1,x2)之间进行垂直投影,得到Hy(x,y),如式(4),同样进行阈值分割但阈值为Tn(式(7)),根据阈值分割后的图像可以得到运动物体垂直方向的范围(y1,y2)。从而得到运动物体的区域(x1,x2,y1,y2)。
Hy(x,y)=∑x2x=x1H(x,y)(m为图像总列数,n为图像总行数。y=1,2,3,...,n)(4)
Hx(x,y)=∑ny=1H(x,y)(n为图像总行数,m为图像总列数。x=1,2,3,...,m)(5)
Tm=∑mx=1Hx(x,y)/m(6)
Tn=∑ny=1Hy(x,y)/n(7)
1.3GrabCut图像分割法
近年来许多学者提出基于图论的图像分割,GrabCut[7]算法就是基于图论的一种优秀分割方法。GrabCut算法利用图像中纹理(颜色)信息和边界(反差)信息,只需要少量的用户交互操作,就可以有效地从复杂的背景中分割出前景目标图像。该算法用户只需要提供背景区域的像素及框选目标,方框外的像素全部为背景,即可对GMM进行建模和完成良好的分割。通过使用四帧差分法快速框定目标区域,然后使用GrabCut算法分割,快速取得完整的运动目标。
从整个图像的Gibbs能量可以得到[3]:E(α,k,θ,z)=U(α,k,θ,z)+V(α,z),第一项为数据项(t-link的权值),第二项为平滑项(nlink的权值),最终目标经过不断地迭代计算出最小的能量函数。总共有两个高斯混合模型(背景和前景),每个高斯混合模型有K个分量,每个分量包含3个参数要估计,即权重π、均值u、协方差Σ。
计算数据项:U(α,k,θ,z)=∑nD(αn,kn,θ,zn),参数α={α1....αn},αn=0或1。若αn为0,像素点为背景;若αn为1,则像素点为前景。参数K是一个向量,K={k1,k2....kn},每个kn属于集合{1,2,....k},对应着k个高斯分量[8]。参数θ为图像的背景与前景的灰度直方图。参数z为图像的灰度数组,z={z1....zn},zn是第n个像素的灰度值。
GrabCut算法流程描述[9]:(1)、(2)为初始化步骤,(3)~(6)为迭代最小化步骤。
(1)用户框定目标区域,方框外的全部像素为背景像素TB,方框内的全部像素作为“可能目标”TU。对TB内的每一个像素初始化标签αn=0,对TU内的每一个像素初始化标签αn=1。
(2)通过kmeas算法初始化背景和前景中每一个像素高斯混合模型分量。
(3)对每一个像素分配GMM中的高斯分量:kn=argminknDn(αn,kn,θ,zn)。
(4)对于图像数据Z,学习优化GMM参数:θ=argminθU(α,k,θ,z)。
(5)分析Gibbs能量项,建立一个图,通过最大流最小切割定理算法进行分割。
min{αn:n∈TU}minkE(α,k,θ,z)
(6)重复步骤(3)~步骤(5),直到收敛[10]。
2实验结果
图1经过灰度化之后的图像本实验硬件运行环境为:Intel(R) Core(TM)2 Quad 2.33 GHz CUP和4.00 GB内存,软件运行环境为:Windows 7、Microsoft Visual Studio 2005、opencv1.0。视频中每一帧大小为576×704,每秒处理20帧,基本可以满足视频监控中的实时性。图1为视频中取出的第100帧、101帧、102帧、103帧经过灰度化之后的图像。
图2为使用四帧差分法得到的实验结果。
图3中图(a)对实验结果进行垂直投影,计算出图像像素平均值为Tn=8.720 2,图(b)为经过阈值Tn过滤后的结果,通过计算其中一个运动物体区域的横坐标是(335,420),图(c)为截取原图中横坐标在(335,420)之间的实验结果,图(d)为(c)做水平投影,计算出像素平均图2实验结果值为Tm=11.658 0。图(e)为经过阈值Tm过滤后的结果,并且计算出运动物体区域的纵坐标为(330,420),图(f)为最终切割结果。
图4(a)中的方框为经过投影之后计算出的运动物体的区域,(b)是通过GrabCut算法切割以后提取到的完整运动目标,实验发现虽然目标有一部分区域与背景相似, 但GrabCut算法仍能完整地将其分割出来。
3结论
本文融合四帧差分法与GrabCut算法对运动目标进行检查与提取,首先利用高速滤波和直方图均衡化对每一帧图像进行预处理,然后通过四帧差分法和投影法得到运动目标区域,最后通过GrabCut算法分割提取完整目标。实验结果表明,本文所提出的算法可以快速、精准、完整地检测出运动目标,而且适用性广泛。
参考文献
[1] 袁国武,陈志强,龚健,等. 一种结合光流法与三帧差分法的运动目标检测算法[J]. 小型微型计算机系统,2013,34(3):668671.
[2] 杜晶晶. 智能视频监控中运动目标检测与跟踪算法研究[D].成都:西南交通大学,2009.
[3] 周胜安. 一种基于前景物形态的GrabCut改进算法[J]. 电脑知识与技术,2010,6(33):95179519.
[4] 袁国武. 智能视频监控中的运动目标检测和跟踪算法研究[D].昆明:云南大学,2012.
[5] 彭艳芳. 视频运动目标检测与跟踪算法研究[D].武汉:武汉理工大学,2010.
[6] 张鹏,李思岑,杨燕翔. 融合边缘检测的四帧差分运动目标检测[J]. 电子技术与软件工程,2014(20):106107.
[7] 王钧铭,高立鑫,赵力,等. GrabCut彩色图像分割算法的研究[J]. 电视技术,2008,32(6):1517.