基于卡尔曼滤波的高斯混合模型目标检测算法
2022-05-13郭荣春王燕妮
刘 江, 郭荣春,王燕妮
(1.西安现代控制技术研究所,陕西 西安 710065;2.西安邮电大学数字艺术学院, 陕西 西安 710121;3.西安建筑科技大学信息与控制工程学院,陕西 西安 710055)
0 引言
运动目标检测是计算机视觉和模式识别领域中的一个重要课题,是在基于动态图像分析的基础上结合图像模式识别和图像跟踪方法对图像序列中的目标进行检测、识别的过程,被广泛应用于视频监控等监测和分析系统中。随着计算机技术、高分辨率传感技术与图像处理技术的迅速更新,它在网络安全、智能监控系统、生物医学等国民经济和军事领域的许多方面有着广泛的应用,同时人们对运动目标检测系统的稳定性、鲁棒性提出了更高的要求。
最近几年,许多科研人员对背景建模的目标提取算法[1]进行广泛而深入的研究,取得了非常优秀的成果。文献[2]即是构建背景模型,在此基础上对背景模型的相关参数进行自适应地调节,得到不断更新的背景参考图像。当图像中无运动信息时,可以得到较为准确的初始背景帧,同时选取系统参数等计算的工作量较大。文献[3]研究了行扫描点线的信息聚类多目标提取算法,解决了经典帧差法等算法引起的误差问题。在Codebook模型[4]中,采用的前景目标检测方法相比经典的算法,有更好的准确度和适应性。文献[5]研究了自适应聚类的背景检测方法,解决了人工取阈值引起的各种不足。文献[6]中,采用分水岭方法对目标进行分割检测,得到了很好的提取效果。文献[7]研究了视频图像中运动目标区域检测算法,接收端有较好的视觉感受,可以应用于背景单一的图像目标检测中。文献[8]结合离散矩变换和局部同质性检测传输帧中的种子点,采用区域生长法分割检测区间。根据以上方法的优缺点,结合目标检测的完整性以及计算量等问题,提出基于卡尔曼滤波的高斯混合模型目标检测算法,预期快速且准确地提取目标。
1 卡尔曼滤波背景建模法
采用卡尔曼滤波和高斯混合模型,使它们优势互补,从而克服相互的弱点,提高运动检测的效果。但在实际场景中,由于光线等各种原因造成背景不断变化,若不及时对背景进行更新,错误的检测结果将随时间不断累计、循环,从而造成监控失效。因此在卡尔曼滤波背景建模的基础上,采用高斯混合模型修改不断变化的背景信息,准确检测目标[9-10]。
背景建模的结果与最终目标检测关系密切,所有的视频目标提取算法,皆需要适应各种复杂的背景情况。由于现实中背景图像的不可控因素很多,例如光线的忽变、图像遮挡、位移等的影响,使背景的建模和仿真变得比较困难,因此视频图像的运动矢量,可以采用图像的相邻帧间的像素信息来预测并重构,所以不断地更新背景模型。
卡尔曼滤波是一种递归估计的时域滤波器,通过获知前一帧图像的背景值以及当前帧的测量值就可以推算得到当前帧的背景估计值,不必采集测量和预测之前的图像信息。
fk=Ufk-1+VPk+N1k,
(1)
dk=Hfk+N2k,
(2)
式(1)、式(2)中,fk是k帧图像的背景值,Pk是k帧图像的约束参量,U和V是图像系统参数矩阵,dk是k帧的参考值,H是背景建模系统的参数矩阵,N1k和N2k分别为高斯噪声,表示图像传输过程中遇到的各种干扰信号,对应的相关矩阵是R1,R2。
1.1 预测阶段
在预测阶段,滤波器通过前一帧传输图像的背景估计值,预测当前帧背景的像素信息估计值。
预测k帧的背景估计值
(3)
预测估计协方差矩阵
Ck/k-1=UkCk-1/k-1UkT+R1k,
(4)
1.2 更新阶段
对于在预测阶段获得的预测值,滤波器采用当前像素帧的观测值进行优化,获取下一个更加准确的估计值。在此需要分别计算以下三个变量:
参考差值
d1k=dk-Hfk/k-1,
(5)
参考差值协方差
C1k=HkCk/k-1HkT+R2k,
(6)
最优卡尔曼增益
Kgk=Ck/k-1HkTC1k-1。
(7)
更新的背景像素估计值表示为:
(8)
则更新的协方差估计
Ck/k=(I-KgkHk)Ck/k-1,
(9)
其中I为1的矩阵,对于单模型单输入,I=1。当算法进入k+1帧时,Ck/k就是式(4)的Ck-1/k-1。算法依次循环进行更新运算。
(10)
E[d1k]=0。
(11)
且协方差矩阵准确地反映了估计的协方差:
(12)
(13)
C1k=cov(d1k),
(14)
式中,E[x]表示x的期望值,cov(x)=E[xxT]。
2 混合高斯建模法
在以上卡尔曼滤波背景建模的基础上,采用混合高斯模型对目标进行精确检测[11-12]。使用规定的高斯模型表征图像中各个像素点的特征,在输入下一帧图像后重新计算混合高斯模型,采用当前各个像素点与混合高斯模型进行匹配,若匹配成功表明该像素点为背景点,否则为前景点。背景建模由方差和均值代表的参数决定,采取不同的更新机制,将影响高斯模型的平稳性、准确性和收敛性。由于检测目标为运动目标,在背景提取建模时需要对模型中方差和均值两个参数实时更新。同时为了提高模型的修正能力,引入权值的概念。因此建立背景图像并实时更新,需要结合权值、均值和方差对像素点进行前景和背景的分类。
2.1 计算像素点的均值、标准差以及权重
高斯分布函数的概率密度为:
(15)
式(15)中,数学期望μ确定位置,方差δ2确定函数的幅度。
针对图像像素,如果给定高斯模型的各个参数,预测每个高斯模型的权值:
(16)
式(16)中,μ1、μ2、δ1、δ2、ρ为常数,当ρ=0,δ1=δ2=δ,所取模板中心位置为原点:
(17)
对于样本xi,yj(i,j=1,2,…,N)来说,它由设定的第k个模型生成的概率为:
(18)
(19)
(yj-μk)(yj-μk)T,
(20)
(21)
式(18)—式(21)中,k为模型的个数,ωk为第k个高斯的权重,pxi,yj(k)则为第k个高斯的概率密度函数,其均值为μk,方差为δk。对图像背景像素点的估计就是求ωk、μk和δk各个变量的值。重复上述步骤直到算法收敛,得到每个像素点的均值、方差以及权重。
2.2 更新背景图像
高斯混合模型即是把每一个像素点所表示的色度及亮度值用M(M=3~5)个状态来表示,每个颜色状态用一个高斯分布来计算。用随机变量(xi,yj)表示像素点的颜色,则对于第k个状态(0 (22) 颜色随机变量(xi,yj)的分布可用k个状态分布的加权和来表示: (23) 若满足 (24) 对基于卡尔曼滤波的高斯混合模型目标检测算法进行仿真测试,选择Intel(R) Core(TM) i7-16 G-512 G的PC机,软件为Matlab 7.0以上版本,采用自拍的视频进行验证。输入图像的分辨率为1 600×1 200,具体仿真结果如下所示。 实验1 检测运动小目标 采用新算法对自制录像序列中运动小目标进行检测。首先采用卡尔曼滤波建模方法对输入图像进行滤波,除去前景图像,用低通滤波预测近似不变的背景图像,并持续更新背景信息。通过采集的前一帧背景值和当前帧的输入值可以计算当前帧的背景预测值。接着在卡尔曼滤波背景建模的基础上,结合混合高斯模型对图像目标进行精确定位标定。采用高斯函数模型表示图像各个像素点的均值、方差和权值,根据其颜色值更新背景图像。 设起始点位置为模板原点,对于输入图像,依次提取每一行每一列的(xi,yj)像素信息。根据式(19)计算各个像素均值,图像大小为M×N=1 200×1 600,当k=1时,得到μk=96。同时在Matlab仿真环境下,输入此图像,观察其像素的直方图,根据直方图的波峰和波谷的个数预测该图像的状态集个数。如果波峰和波谷很多,说明图像的状态数目较多;波峰和波谷较少,说明图像的状态数目较少。图1是当前输入图像的直方图。 图1 输入图像的直方图Fig.1 The histogram of the pixels of the image 图2 运动小目标的检测结果Fig.2 Detection results of the small moving targets 实验2 检测多运动目标 采用新算法对自制录像序列中多运动目标进行检测。设起始点为图像原点,根据视频特点选取状态M为4个状态,分别计算各个状态像素的概率p(xi,yj/k),ωk、μk和δk。通过多次实验给定阈值T的大小为30,大于30的像素状态确定为背景模型,其余目标像素。在连续输入多帧后,对背景图像进行更新并重新输入。图3是输入图像以及对应的目标像素,两幅图像的绝对差即为背景图像。在此视频中,每5帧进行一次背景更新。图4是对多目标连续输入视频的第5帧、第20帧和第30帧的目标检测结果。 实验3 MSE曲线的比较 采用背景差分算法(background difference algorithm, BDA)、经典光流算法(optical flow algorithm, OFA)和新算法对自制录像序列中单运动目标进行检测。采用BDA算法与新算法分别对一段200帧的视频流目标进行检测,图5(a)是两种算法产生的均方误差(mean square error, MSE)曲线图;采用OFA算法和新算法分别对另一段300帧的视频流进行目标检测,图5(b) 是两种算法产生的均方误差曲线图;采用BDA算法、OFA算法和新算法分别对另一段500帧的视频流进行目标检测,图5(c) 是两种算法产生的均方误差曲线图。 图4 多运动目标的检测结果Fig.4 Detection results of multi-moving targets 图5 视频流的均方误差曲线图Fig.5 The MSE of video streams 实验4 算法运行时间的比较 采用BDA算法、OFA算法和新算法对自制的200帧、300帧录像序列中特定运动目标进行检测。记录检测时间如表1所示。 表1 各种算法的检测时间对比Tab.1 Comparison of detection time 以上实验是分别采用背景差分算法、经典光流算法和基于卡尔曼滤波的高斯混合模型目标检测算法对采集的各种视频信息进行测试。在实验1中,新算法能够对视频图像中的较小目标进行准确提取;在实验2中,视频图像中有多个运动个体,新算法可以检测到每个运动个体状态并标识;在实验3中,对于一段200帧、一段300帧和一段500帧的视频信息,分别采用新算法与背景差分算法、经典光流算法两种方法相比较,新算法均获得了较小的检测误差。在实验4中,对于输入的200帧和300帧的视频流,新算法的运行时间相对与其他算法较少,实时性较强。通过实验分析,新算法对于小目标、多目标等的移动情况有较好的检测结果。对于复杂场景的输入图像,设置较多的状态数目,可以对图像中各个像素点分别描述,以区别其属于背景或者是不同的前景目标,提高算法鲁棒性。 本文提出基于卡尔曼滤波的高斯混合模型目标检测算法。该算法采用卡尔曼滤波对输入的目标信息进行滤波,得到背景模型并不断更新;根据设置的混合高斯模型计算图像像素的特征指标点,并更新背景模型;同时通过实验获取合适的阈值,比较权值与方差的比例确定目标像素点。仿真结果表明,该算法可以实时准确地检测运动目标,对场景变化、目标移动情况具有较好的鲁棒性。下一步将继续研究,将该算法应用于视频监控等监测和分析系统,期望取得更好的检测效果。2.3 检测像素点
3 仿真分析
4 结论