基于MATLAB的运动目标检测
- 课题背景和研究意义
近年来,视频监控系统在各行业得到了广泛应用,生活中有小区、超市等的 安全监控,银行系统有柜台监控,交通方面有违章监控等。这些监控系统是由一 个或多个摄像机以及与之相连的一套电视监视器组成的,它们的用途主要是对场 景的记录和保存,当异常情况,比如盗窃行为发生后,保安人员才通过记录的结 果察看发生的事情,但往往为时已晚。
视觉监视是指在一个繁忙环境中对人和车辆等进行实时的观察, 并给出对它们行为和动作的描述。这一技术包括了运动目标的检测、跟踪、目标分类和行为理解等方面,涉及到计算机视觉、模式识别和人工智能领域的许多核心课题,是一个具有挑战性的困难问题。
近年来随着集成电路和计算机技术的迅猛发展,视觉监视系统所要求的硬件设备成本大大降低,因此它获得了日益广泛的研究与应用。许多关于视觉监视的大规模研究项目已经在美国、欧洲和日本展开,同时它也成为许多国际学术会议关注的重要主题。运动目标检测与跟踪处于整个视觉监视系统的最底层,是各种后续高级处理如目标分类、行为理解等的基础。运动目标检测系指从视频流中实时提取目标,一般是确定目标所在区域和颜色特征等。目标检测的结果是一种“静态”目标——前景目标,由一些静态特征所描述。运动目标跟踪则指对目标进行连续的跟踪以确定其运动轨迹。我们通过为静止背景建模来检测前景点。具体的背景模型以 Stauffer 等提出的自适应混合高斯模型为蓝本,并对其作了部分改进以更好地处理实际背景发生变化的情形。算法中采用一种可靠的连通区域检测算法完成前景目标的分割。目标跟踪时则通过匹配目标的位置、大小、形状和颜色等特征,建立运动目标与前景目标间的对应关系。算法中考虑了跟踪中多个目标相互遮挡的问题,分析了几种可能结果并分别加以处理。我们还为运动目标引入了可靠性度量以使目标跟踪过程更加稳定和可靠。
在实际应用中,不包括运动物体的纯背景图像通常无法得到。而且,由于场景光照变化、摄像机抖动等因素,背景不可能完全静止。因此,背景减法的难点主要不在于减运算,而在于背景动态模型的维护与更新,即如何从获得的包含运动物体的视频序列中提取出背景。现有的以高斯分布为代表的单模态背景模型通常不能很好地描述室外场景,而混合高斯分布的多模态参数模型由于需要事先假定背景分布模型及需要进行模型参数估计和优化,也不适用于密度分布未知的计算机视觉等应用系统。本文根据核密度估计理论,提出了—种基于多样性采样原理的背景核密度估计模型。通过多样性原理提取的样本保留了训练图像序列中的重要信息,在背景的动态维护中不再需要保存和使用训练序列的全部数据。另外,由于非参数模型不需要假设背景的分布形式,可应用于更普遍的情形。
- 算法介绍介绍
GMM是一种利用一定数量的小高斯函数混合逼近某变量的概率密度函数的方法,是在概率估计中常用的参数化模型,今年被广泛应用于模式识别领域。
一有限的GMM的描述非常简单,即由高新分布函数的任何凸组合形成一混合模型。对于n维实空间的随机变量x,利用GMM可以近似的表示其概率密度函数:
高斯分布,也称为正态分布。是伟大的数学家高斯(Gauss)与 1809 年在研究误差理论
时推导出来的。对于随机变量x,其概率密度为:
其中 μ为高斯分布的期望,σ为高斯分布的方差。如果一组数据符合高斯分布,那么这种数据中的大多数会集中在以 μ 为中心的-2σ 到 2σ 范围内的这段区间里。
在实际中,尤其是对于室外的场景,由于各种噪声的干扰,其背景变化是比较大的,会出现树枝摇动,光线变化等不同情况。因此用一个高斯分布就不能来完全描述实际的背景情况。这种情况下就需要采用多个高斯模型来描述动态的背景,为不同的状态建立不同的高斯模型。将k 定义为建立的高斯模型的数目,那么当前观测点的像素值的概率密度为:
在采集的视频图像中是包含彩色分量的,使用协方差的方法来进行计算,这种方法计算量大但效果提升不高,不适合实时性的要求。因此,本算法中直接简化了这一过程,将彩色图像转为灰度图的方法来进行高斯混合建模。根据场景的复杂程度,高斯模型的数量 k可以取值为 3~7个,k值越大,其能表征的场景就越复杂,但相应的计算量也增大。因此本算法中取k 值为 3。
采用GMM进行背景建模主要包含3个步骤:背景训练,模板匹配及背景更新的过程。
首先对一段帧数的视频进行训练,通过训练帧中所得到模型计算出均值,方差和权重等各参数来从作为背景模型的参数。在训练过程中,不必对每个高斯模型都进行确定,如果对于某一像素点来说,在训练时间内其灰度值变化不大,即其一个到两个高斯模型内就已经能包含图像中 90%以上的像素值,那么可直接将有较大的方差和较小的权值的参数赋予其他模型。本算法中将方差设为30,权值设为 0.001。通过对背景的训练,可以消除背景中的扰动因素,以避免将运动物体视为背景模型,训练帧数越长,所得到的背景模型越精确,但一般训练时间不超过50帧,否则会影响整个系统的启动时间。
得到了背景模型后,通过模板匹配来进行前景分割。在进行模板匹配前,首先要对混
合高斯模型中的三个单高斯模型进行排序,判断那个高斯模型最有可能与背景图像进行匹
配。由于静态区域的点会比动态区域点的方差小,且运动物体出现会导致模型更新后该单
高斯模型的权值降低,因此权值越大,方差越小,匹配度越高。通过公式 e=w/σ 对混合模
型中的各单个高斯模型进行优先级高低的排序后在进行匹配。匹配条件应满足:
由于场景中环境的不断变化, 通过训练建立好的背景模型不可能适应新的背景的需要,因此,需要对背景进行实时更新,以保证前景提取的正确性。 在背景模型更新过程中,引入了学习率 alpha 这一概率。当学习率取值比较小,其适应环境变化的能力就低,需要给足够的时间才能更新背景模型。相反,当 alpha 取值较大时,其对场景的适应性较强,能很快的变化背景模型,但是对于一段时间内停留的场景中的目标,却很容易学入背景中去。针对这种情况,算法对学习率进行调整,在图像中的不同处设定不同的学习速率,以保证场景变化的需要。学习率的变化范围应该在0~1之间。 对 k 个高斯模型进行更新,也就是对混合高斯模型中的三个参数,即权值,均值和方差进行调整。
其权值的更新算法如下:
M为匹配度,对于匹配的模型取值为1,否则取值为0。可见当像素点与高斯模型不匹配时,其权值会降低。对于匹配上的i个高斯模型,需对均值和方差进行更新。更新算法如下:
未匹配的模型,其均值和方差都保持不变。如果对于当前点的像素值,其与所有的高斯分布模型都不匹配, 则新建立一个高斯分布将混合高斯模型中排序最后一个的高斯模型替换掉,同样该分布应选取较大的方差和较小的权值,而其均值则设为当前像素点的值。
通过混合高斯建模而分割出的二值图像, 往往会包含很多噪声点。 对于这种问题的处理,大多都是采用膨胀,腐蚀的方法进行消除。本文中直接采用连通性分析的方法来对小区域噪声点进行消除,并对运动前景进行提取。 所谓连通性分析,即在高斯模型所得到的二值图像中找到各个运动前景块,并对各前景块赋予不同的标号,并返回各连通区域的区域信息。其中每个前景块存在着4连通或者8连通的关系。对于位于(x,y)坐标的像素点r,4-连通和 8-连通区域。
三、 仿真结果以及分析
以上我们基本了解了GMM的基本工作流程,下面我们将GMM的仿真结果做具体的分析。所谓的动态图像跟踪,就是将图片变成黑白像素的图像,然后动态的物体做为白色物体而静态的物体作为黑色图像。从而实现了物体的动态跟踪过程。
·动态树叶的分辨
图4-1 | 图4-2 |
图4-3 | 图4-4 |
图4-1 | 图4-2 |
图4-3 | 图4-4 |
图4-1 | 图4-2 |
图4-3 | 图4-4 |
图4-1 | 图4-2 |
图4-3 | 图4-4 |
事实上,动态树叶的变动范围是非常小的,而对于系统的检测,树叶不应该被检测出来,这可能就是该系统的不足之处。
·汽车的跟踪
视屏中出现多次的汽车,我们以其中一个汽车做为例子来说明。
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
图4-5 | 图4-6 |
图4-7 | 图4-8 |
图4-9 | 图4-10 |
图4-11 | 图4-12 |
从图中我们可以看到右端一个白色的物体移动过来,这个白色的物体就是所谓的汽车了,只是由于GMM系统自身的不稳定性,导致略微运动的树叶也被检测出来了,但是总体可以看到汽车已经被检测出来了。
·行人的跟踪
图1 | 图2 |
图3 | 图4 |
图5 | 图6 |
图1 | 图2 |
图3 | 图4 |
图5 | 图6 |
图1 | 图2 |
图3 | 图4 |
图5 | 图6 |
图1 | 图2 |
图3 | 图4 |
图5 | 图6 |
图1 | 图2 |
图3 | 图4 |
图5 | 图6 |
图1 | 图2 |
图3 | 图4 |
图5 | 图6 |
通过观察这几张图片,我们可以看到中间有一个行人走了过来,说明对于行人,我们也检测成功了,可见GMM算法的正确性。
图1 | 图2 |
通过这个程序,我们可以看到,只有动的人物被检测出来了,但是背景的树叶没有被检测出来,完好的解决了GMM算法中存在的问题。
图5-3 | 图5-4 |
图5-3 | 图5-4 |
通过这个程序,我们可以看到,只有动的汽车被检测出来了,但是背景的树叶没有被检测出来,完好的解决了GMM算法中存在的问题。
图5-5 | 图5-6 |
图5-5 | 图5-6 |
通过这个程序,我们可以看到,只有动的人物被检测出来了,但是背景环境物体没有被检测出来,完好的解决了GMM算法中存在的问题。
通过以上的对比,很显然KDE的效果比GMM效果更加理想,所以在大多数的情况下,我们一般采用KDE算法作为移动物体的动态检测算法。