基于自适应混合高斯的改进三帧差分算法
2021-06-28杨嘉琪韩晓红
杨嘉琪,韩晓红
(太原理工大学 大数据学院,山西 晋中030600)
0 引 言
目前,运动目标检测常用算法有背景差分法、帧间差分法及光流法[1-4]。背景差分法简单、算法复杂度低,但对光照引起的动态环境敏感,需要依靠稳定的背景模型来获得完整的目标特征[5]。文献[6]提出一种可自动更新速率的混合高斯背景模型,该方法减弱了噪声对模型建立的干扰,但目标边缘信息缺失,算法复杂度仍较高。帧间差分法实时性好,对动态环境的适应性强,但易出现空洞和误检现象[7]。文献[8]中采用三帧差分法与鲁棒主成分分析(RPCA)相结合的方法。该算法简单易行,能准确提取运动目标轮廓,但目标信息提取不完整。文献[9,10]提出三帧差分与边缘提取相结合的运动目标检测算法,提高了目标检测的准确性,但空洞问题仍然存在。光流法可在未知场景信息的情况下检测出运动目标,但其计算量大、算法复杂度高,导致可用性和实时性差[11-13]。而背景差分法与帧间差分法因其实时性较好、算法复杂度低,在现实生活中的应用范围更广[14]。
本文提出基于自适应混合高斯的改进三帧差分运动目标检测算法,解决了三帧差分法在对运动缓慢的物体进行检测时无法完整获取运动目标,容易出现空洞及误检现象,以及背景差分法对光照引起的动态环境敏感,需要依靠稳定的背景模型来获得完整目标特征的问题。
1 基于自适应混合高斯的改进三帧差分算法
本文提出基于自适应混合高斯的改进三帧差分运动目标检测算法,算法的改进如下:
(1)该算法为了弥补传统三帧差分中相邻帧间进行差分所产生的空洞问题,改进了图像帧的差分方式,采用任意两帧进行差分,由此丰富差分图像所包含的目标信息,提高目标获取的可行性。
(2)提出自适应学习率的混合高斯背景建模,引入帧数阈值TH,在前TH帧与后TH帧采用不同的学习率,当帧数小于阈值时,由于初始帧中通常存在运动物体,应采用较大的更新率以去除初始帧中的干扰像素,在一定程度上减少算法因物体发生“忽然”运动而造成的误判;当背景模型趋于稳定之后,以像素点与背景模型间的比配度为依据对模型学习率进行更新,从而实现背景模型的自适应选择。
(3)为解决目标边缘间断、不连续的问题,采用Canny算子提取边缘信息,并与三帧差分结合,由此丰富目标的边缘信息,使得目标轮廓的提取更加准确。最后对所得图像进行形态学膨胀与腐蚀操作,获得前景信息,即为运动目标。
1.1 融合边缘提取的三帧差分算法
传统的三帧差分算法相比较帧间差分算法,有效丰富了所提取的前景信息,增加了检测的准确性,在一定程度减小了帧间差分算法所造成的空洞现象[15]。但是所提取的运动目标边缘模糊、不连续,而且在3帧差分中阈值的选取尤为重要,固定的阈值在提取目标时容易造成缺失,使信息不完整,同时,空洞现象仍然存在。因此本文对传统的三帧差分进行改进,在原算法只有相邻帧间进行差分的基础上,增加存在间隔的两帧图像的差分运算,可使差分图像所包含的目标信息更加丰富,从而减小因物体运动缓慢所造成的空洞问题。同时采用自适应阈值——最大类间方差法(OTSU)对差分图像二值化,实现对图像中像素点的准确分类。并针对三帧差分后目标边缘像素不清晰的问题,通过Canny算子弥补不足,使得物体的边缘连续且平滑,丰富所需的目标信息。
算法描述如下:
(1)首先从经过预处理后的视频序列中提取连续的3帧图像Ik-2、Ik-1、Ik,对相邻帧进行差分运算,如式(1)所示
Dk1(x,y)=|Ik-1(x,y)-Ik-2(x,y)|Dk2(x,y)=|Ik(x,y)-Ik-1(x,y)|Dk3(x,y)=|Ik(x,y)-Ik-2(x,y)|
(1)
式中:Ik-2(x,y)为前一帧的灰度图,Ik-1(x,y)为中间帧的灰度图,Ik(x,y)为当前帧的灰度图,Dk1(x,y)为Ik-1与Ik-2的差分图像,Dk2(x,y)为Ik与Ik-1的差分图像,Dk3(x,y)为Ik与Ik-2的差分图像。
(2)随机初始化一个阈值T,对差分图像进行分割,计算图像中目标像素点的占比及平均灰度w0、μ0;背景像素点的占比及平均灰度w1、μ1,图像的总平均灰度记为μ,g为类间方差。如式(2)所示
(2)
不断改变阈值T的值,从0-255进行遍历,方差g代表了前景与背景之间的差异,故当g最大时,其灰度值T为最佳阈值。
(3)将差分后的图像Dk1(x,y)、Dk2(x,y)、Dk3(x,y)分别与自适应阈值T进行比较来确定背景区域和前景区域。当某一像素点的值大于阈值T时,说明该像素点发生了变化,可确定其为目标像素;当某一像素点的值小于阈值T时,说明像素点未变化,则确定其为背景像素。如式(3)所示
(3)
(4)使用Canny算子提取当前帧的边缘信息C,先将边缘图像与二值图像Rk2进行“或”运算,补充其目标轮廓,再将剩余二值图像“或”运算得到较为丰富的目标内容,最后确定两者的相交区域,得到目标图像O,以精确目标内容。差分结果与边缘信息的融合方式为
O=(Rk1orRk3)&(Rk2orC)
(4)
1.2 基于自适应学习率的混合高斯背景建模
改进后的三帧差分算法虽然一定程度上减少了传统三帧差分造成的目标缺失,但仍然存在“空洞”问题。而背景差分能够有效提取图像的前景信息,保证所获取目标的完整性,因此将背景差分与三帧差分相结合尤为必要,从而解决三帧差分算法中的“空洞”问题[16]。背景差分法是将当前帧与所建立的背景模型进行差分运算,以此来检测运动目标。
设视频帧序列建立的背景模型为Ib(x,y),当前帧为Ik(x,y),将Ik(x,y)与Ib(x,y)按式(5)进行差分运算
Dk(x,y)=|Ik(x,y)-Ib(x,y)|
(5)
将得到的差分图像按式(6)进行二值化,二值化后的图像进行形态学处理即可得到运动目标
(6)
式中:Dk(x,y)为差分图像,Rk(x,y)为二值图像,T2为选取的阈值。
背景差分的关键点是背景模型的建立,传统的方法是选用最初的、无运动目标的视频图像作为背景模型,此方法只适用于静态环境下的目标检测,在动态环境中无法有效提取目标,且容易受到环境噪音的影响。因此本文采用混合高斯背景建模法,它可以根据视频环境,动态建立背景模型,并随着目标图像的变换,不断更新所建立的模型,将不属于运动目标的背景变化过滤,有效减少了视频图像中噪音对目标提取的干扰。
同时,为解决混合高斯背景建模中学习率α较低时,模型更新不及时,容易出现“鬼影”现象及适应动态环境的能力较弱的问题;α取值过大时,容易出现误检的问题。本文采用自适应学习率的背景建模方法,引入帧数阈值TH,在阈值前后采用不同的学习率,在模型在初期创建时,由于初始背景通常存在运动物体,需要通过加快模型的学习率,通过背景模型的不断更新去除物体运动状态转换带来的干扰及模型中存在的无关因素;在背景模型逐步稳定后,为适应动态背景,选择目标像素点与背景模型间的匹配次数作为学习率设定的依据,实现自适应更新。模型学习率如式(7)所示
(7)
式中:λ1,λ2为常数,f为帧数,ΔF为学习率更新的参考量,ΔF如式(8)所示
ΔF=(2n-t)
(8)
式中:n为不匹配次数,t为匹配次数。当检测效果不佳时,像素点的不匹配次数增多,模型的学习率将得到提升,从而增加对环境的适应性;当检测结果较好时,像素点的匹配次数增多,模型学习率降低,从而减少模型快速更新造成的目标漏检,保证了算法的可靠性。
算法描述如下:
混合高斯模型是通过建立多个高斯函数来对某一像素点的分布进行表示,从而准确反映整幅图像的变化。在图像中应用多个高斯分布函数可以有效抑制动态环境所产生的细微噪声,减弱背景的影响。
对于随机变量x,x的数据集{x1,x2,x3…xn},xt={rt,gt,bt}为t时刻像素的样本,则单个采样点xt其服从的混合高斯分布概率密度函数为
(9)
τi,t=δi,tI
式中:K为高斯模型总数,η为t时刻第i个高斯分布,wi,t为t时刻第i个高斯分布的权重,μi,t为其均值,τi,t为其协方差矩阵,δi,t为方差。
模型的匹配与更新:
用当前帧中的像素点与所建立的K个高斯分布进行匹配,直到找到与像素点相匹配的高斯分布,如式(10)所示
|xt-μi,t-1|≤D·σi,t-1
(10)
式中:D为置信参数,一般取2.5,σi,t-1为t-1时刻第i个高斯分布的标准差。
如果某一高斯分布满足上述要求,则对该高斯分布的参数进行更新,如式(11)所示
wi,t=(1-α)wi,t-1+αMi,t
μi,t=(1-ρ)μi,t-1+ρxt
(11)
式中:α为学习速率,ρ=α·η为参数的更新速率,Mi,t取1。
背景模型的建立:
当像素点与K个高斯分布都不匹配时,需要创建新的高斯分布,用以取代权值较小的高斯分布,新高斯分布的均值为当前像素的像素值,并进行参数的归一化处理。
之后,按照公式λi,t=wi,t/σi,t计算各个高斯分布的优先级,均值大,标准差小的高斯分布排列在前。在其中将前B个高斯分布组成背景模型,并将xt与其匹配,当其中任意一个高斯模型满足特定条件时,则判定当前像素点为背景点,否则判定其为前景点。高斯分布的选择如式(12)所示
(12)
式中:b为初始参数,T3为预先设定的阈值。
1.3 算法的模块构建
本文算法由3个模块构成,分别为三帧差分模块、背景差分模块、边缘提取模块,如图1所示为算法的模块构建。其中,三帧差分模块采用任意两帧视频图像进行差分运算并二值化,由此丰富差分结果,一定程度上弥补由于物体运动缓慢所造成的空洞问题,避免漏检现象;边缘提取模块采用Canny算子提取当前帧的目标边缘,抑制噪声引起的伪边缘,使得边缘细化,呈现出完整的目标轮廓;背景差分模块中选用混合高斯背景建模的方法实现背景模型的自适应更新,通过对不同时期的高斯模型设定相匹配的学习速率,加快模型的收敛速度,使获得的目标信息更加完整,消除物体运动造成的“鬼影”。针对三帧差分模块所提取的目标轮廓不连续,且不完整的问题,采用三帧差分模块与边缘提取模块相结合的方式,依靠边缘提取模块所获得的边缘信息,完善目标轮廓,丰富边缘图像,提高算法的实时性。同时,为了进一步解决三帧差分模块中所存在的“空洞”现象,将其与背景差分模块结合,通过背景差分模块对前景图像提取的完整性,弥补三帧差分模块目标信息提取不完整的弊端,完善目标信息,增加算法在动态环境中的提取效率,有效提高对运动目标的检测精度。由于目标图像中存在噪声干扰的问题,将所得结果再采用形态学滤波进行处理。先通过膨胀将前景区域进行扩充,使目标区域中断裂的部分连接起来,再采用腐蚀将前景区域(白色区域)进行缩减,消除目标区域中不相关的细节,使得被处理后的图像可以将运动目标信息完整呈现出来。
图1 模块构建
2 实验结果及分析
本文实验在配置为CPU类型corei5-8300H,内存容量8 GB,显存容量4 GB,显卡类型1050Ti,固态硬盘512 G的Windows操作系统上实现,使用了matlab2018b和Visio等软件开发工具,算法的初始参数中λ1=15,λ2=0.03,TH=18。
2.1 验证基于自适应学习率的混合高斯背景建模
为验证基于自适应学习率的混合高斯背景建模的可行性,本文选用CDW-2014数据集中的视频作为实验数据,分别用文献[5]、文献[6]及本文算法对视频中的第40、第60、第80帧图像进行处理,实验结果如图2所示。
图2 算法对比
由上述实验可知,文献[5]所用算法可以有效消除背景噪声的干扰(晃动的灯),且目标特征提取较为完整,但边缘信息缺失严重;文献[6]提取的运动目标较文献[5]更为完整,目标边缘较为平滑,但仍存在部分信息缺失的问题;本文算法在提高检测精度的同时,通过与边缘提取的结合,所得目标轮廓清晰、完整。
为验证算法的有效性,本文用目标完整度来评价算法的检测效果,即所检测到的目标像素点占总目标像素的比例,其结果见表1。
表1 目标完整度
表1为不同帧数下各算法的目标完整度,由表1可知,文献[5]所得目标完整度较低,没有充分提取目标特征。文献[6]的目标完整度较文献[5]有所提升,但仍存在不足。本文算法所得目标更为完整,与实际目标相符。
2.2 验证基于边缘提取的三帧差分算法
为验证基于边缘提取的三帧差分的可行性,选用CDW-2014数据集中的视频作为实验数据,分别用传统三帧差分、Canny算子及本文算法对视频中的第30、第40、第50帧图像进行处理,实验结果如图3所示。
图3 算法对比
由上述实验可知,传统三帧差分算法由于相邻帧间差分,所得运动目标空洞现象严重,且部分目标轮廓获取不完整;Canny算子较为完整的提取了目标边缘,但存在部分干扰像素点;本文算法在完整获取目标边缘的同时一定程度上减少了空洞现象的影响。
2.3 运动目标检测的多场景验证
为验证本文算法的性能,选取了不同背景的视频图像作为检测数据,分别文献[6]、文献[7]及本文算法对检测数据进行处理并分析实验结果。
2.3.1 静态背景的运动目标检测
本实验选用静态背景下同一视频图像的不同帧作为实验数据,分别使用3种算法进行检测并对比结果,验证本文算法在静态环境中有更好的检测准确度,更高的目标完整度。
实验1结果如图4所示,在对背景稳定的视频图像提取运动目标时,采用文献[6]算法获取了目标图像的大部分信息,但其边缘信息不完整,出现间断与丢失现象;采用文献[7]算法对于目标边缘的获取更为有效,减少了内部信息的丢失,但由于邻近帧间位移较小,仍有部分信息未充分获取;使用本文算法,目标的完整度得到提升,“空洞”问题得到有效解决,且物体的边缘信息完整。
图4 静态背景算法对比
2.3.2 动态背景的运动目标检测
本实验选用动态背景下同一视频图像的不同帧作为实验数据,分别使用3种算法进行检测并对比结果,以此验证本文算法在复杂环境的检测中可以有效消除背景噪音对检测结果的影响,保证所提取目标的完整性。
实验2结果如图5所示,文献[6]算法所提取的运动目标较为完整,由于采用了混合高斯背景建模的方法,对于图像中出现的细微噪声有较好的去除能力(如:摇晃的树叶),但目标细节处理不准确,边缘粗糙,同时在目标与背景颜色相近时,会丢失部分信息。文献[7]算法获取的目标轮廓更为清晰,并且通过与边缘信息的结合,使得目标边缘连续且完整,但在目标内部出现了空洞问题。通过本文算法处理后的视频信息,更为充分提取图像中的目标信息,在消除背景噪音的同时较大程度缓解了边缘粗糙与内部缺失的问题,得到了完整的运动目标。
图5 动态背景算法对比
表2为3种算法在实验1及实验2中检测结果的完整度对比。
表2 3种算法目标完整度
由表2可知,不同背景下本文算法所得目标的完整度明显高于文献[6]及文献[7],表明本文算法的检测准确率更高,能很好地适应不同环境下的目标检测。
为进一步验证本文算法的优越性,本文选用精准率(precision)、召回率(recall)、F-Measure作为算法的评价指标,两者的定义如式(13)所示
(13)
式中:TP为准确检测到的目标数,FP为错误检测的目标人数,FN为未检测出的目标人数,F-Measure为精确率与召回率的加权调和平均,其值越大代表算法越可靠。
表3为各算法在实验1及实验2中每隔10帧获取各算法的查全率、查准率、F值,并求平均值。从表3中可知,由于视频中检测物体的相对位移较小,文献[7]算法相比文献[6]算法在检测过程中丢失的目标数更少,漏检率降低,召回率较高;文献[6]算法检测精确度较文献[7]算法有所提高,但在目标与背景间的色差度降低时,仍存在一定程度的漏检率;本文算法结合两者的优势,在检测率方面得到有效提升,并能完整获得目标轮廓,保证了目标的完整性。
表3 算法评价结果
综合以上实验,将文献[6]、文献[7]及本文所提算法在统一实验条件下检测运动目标消耗时间进行对比,如图6所示。由于文献[7]算法复杂度低,计算简单,在实际检测过程中效率高,平均检测速率为12.32帧/s;文献[6]算法,采用改进后的背景差分方法,复杂度有所下降,但仍保持较繁琐的检测步骤,模型更新速度慢,检测所用时间最多,平均检测速率为6.76帧/s;本文算法实现了三帧差分与混合高斯背景建模的结合,一定程度上增加了算法的检测时间,复杂度较文献[7]算法有所增加,但检测所需时间明显低于文献[6]算法,且检测准确度与实用性得到提升,检测速率为10.32帧/s。
图6 算法检测时间
3 结束语
本文提出了基于自适应混合高斯的改进三帧差分目标检测算法,该算法对传统三帧差分中相邻帧间进行差分的方式予以调整,转变为任意两帧间进行差分,由此增加差分图像所包含的目标内容,减少“空洞”,并采用最大类间方差法(OTSU)实现阈值的自动选取,从而使得二值图像达到最佳。所得结果通过与Canny算子边缘信息的结合,细化目标边缘,使目标信息更加完整;同时为了进一步消除三帧差分算法中的“空洞”问题,采用自适应学习率的混合高斯背景建模,由此丰富图像中的目标信息,保证所提取前景的完整性。该算法将三帧差分高效性、快速性等优势与混合高斯背景建模对复杂环境的高适应性、对运动目标提取的完整性结合,实验结果表明,本文算法能够在背景复杂、噪音强度高的环境下较为完整获取目标内容,准确度与完整性都得到了保证。