(完整word版)【matlab代做】基于MATLAB的GMM和KDE核估计得目标跟踪仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章课题背景和研究意义
近年来,视频监控系统在各行业得到了广泛应用,生活中有小区、超市等的安全监控,银行系统有柜台监控,交通方面有违章监控等。
这些监控系统是由一个或多个摄像机以及与之相连的一套电视监视器组成的,它们的用途主要是对场景的记录和保存,当异常情况,比如盗窃行为发生后,保安人员才通过记录的结果察看发生的事情,但往往为时已晚。
视觉监视是指在一个繁忙环境中对人和车辆等进行实时的观察,并给出对它们行为和动作的描述。
这一技术包括了运动目标的检测、跟踪、目标分类和行为理解等方面,涉及到计算机视觉、模式识别和人工智能领域的许多核心课题,是一个具有挑战性的困难问题。
近年来随着集成电路和计算机技术的迅猛发展,视觉监视系统所要求的硬件设备成本大大降低,因此它获得了日益广泛的研究与应用。
许多关于视觉监视的大规模研究项目已经在美国、欧洲和日本展开,同时它也成为许多国际学术会议关注的重要主题。
运动目标检测与跟踪处于整个视觉监视系统的最底层,是各种后续高级处理如目标分类、行为理解等的基础。
运动目标检测系指从视频流中实时提取目标,一般是确定目标所在区域和颜色特征等。
目标检测的结果是一种“静态”目标——前景目标,由一些静态特征所描述。
运动目标跟踪则指对目标进行连续的跟踪以确定其运动轨迹。
我们通过为静止背景建模来检测前景点。
具体的背景模型以 Stauffer 等提出的自适应混合高斯模型为蓝本,并对其作了部分改进以更好地处理实际背景发生变化的情形。
算法中采用一种可靠的连通区域检测算法完成前景目标的分割。
目标跟踪时则通过匹配目标的位置、大小、形状和颜色等特征,建立运动目标与前景目标间的对应关系。
算法中考虑了跟踪中多个目标相互遮挡的问题,分析了几种可能结果并分别加以处理。
我们还为运动目标引入了可靠性度量以使目标跟踪过程更加稳定和可靠。
在实际应用中,不包括运动物体的纯背景图像通常无法得到。
而且,由于场景光照变化、摄像机抖动等因素,背景不可能完全静止。
因此,背景减法的难点主要不在于减运算,而在于背景动态模型的维护与更新,即如何从获得的包含运动物体的视频序列中提取出背景。
现有的以高斯分布为代表的单模态背景模型通常不能很好地描述室外场景,而混合高斯分布的多模态参数模型由于需要事先假定背景分布模型及需要进行模型参数估计和优化,也不适用于密度分布未知的计算机视觉等应用系统。
本文根据核密度估计理论,提出了—种基于多样性采样原理的背景核密度估计模型。
通过多样性原理提取的样本保留了训练图像序列中的重要信息,在背景的动态维护中不再需要保存和使用训练序列的全部数据。
另外,由于非参数模型不需要假设背景的分布形式,可应用于更普遍的情形。
第二章 GMM 和KDE 介绍
2.1 GMM 简介
GMM 是一种利用一定数量的小高斯函数混合逼近某变量的概率密度函数的方法,是在概率估计中常用的参数化模型,今年被广泛应用于模式识别领域。
一有限的GMM 的描述非常简单,即由高新分布函数的任何凸组合形成一混合模型。
对于n 维实空间的随机变量x ,利用GMM 可以近似的表示其概率密度函数:
1()(|,)k
m m m m p x h N x u ==∑∑
其中,0m h ≥,且;(|,)m m N x u ∑∑k
m m=1h =1是均值为m u ,协方差维m ∑;k 为高斯混合项个数。
2.1.1 高斯模型原理
高斯分布,也称为正态分布。
是伟大的数学家高斯(Gauss )与 1809 年在研究误差理论 时推导出来的。
对于随机变量x ,其概率密度为:
22()2
(,,)x u p x u σσ--=
其中 μ为高斯分布的期望,σ为高斯分布的方差。
如果一组数据符合高斯分布,那么这种数据中的大多数会集中在以 μ 为中心的-2σ 到 2σ 范围内的这段区间里。
在实际中,尤其是对于室外的场景,由于各种噪声的干扰,其背景变化是比较大的,会出现树枝摇动,光线变化等不同情况。
因此用一个高斯分布就不能来完全描述实际的背景情况。
这种情况下就需要采用多个高斯模型来描述动态的背景,为不同的状态建立不同的高斯模型。
将k 定义为建立的高斯模型的数目,那么当前观测点的像素值的概率密度为:
,,,1,,1,1()(,,)k
i t i t i t k i t k i p xt w p x u σ--==∙∑
在采集的视频图像中是包含彩色分量的,使用协方差的方法来进行计算,这种方法计算量大但效果提升不高,不适合实时性的要求。
因此,本算法中直接简化了这一过程,将彩色图像转为灰度图的方法来进行高斯混合建模。
根据场景的复杂程度,高斯模型的数量 k 可以取值为 3~7个,k 值越大,其能表征的场景就越复杂,但相应的计算量也增大。
因此本算法中取k 值为 3。
采用GMM 进行背景建模主要包含3个步骤:背景训练,模板匹配及背景更新的过程。
首先对一段帧数的视频进行训练,通过训练帧中所得到模型计算出均值,方差和权重等
各参数来从作为背景模型的参数。
在训练过程中,不必对每个高斯模型都进行确定,如果对于某一像素点来说,在训练时间内其灰度值变化不大,即其一个到两个高斯模型内就已经能包含图像中 90%以上的像素值,那么可直接将有较大的方差和较小的权值的参数赋予其他模型。
本算法中将方差设为30,权值设为 0.001。
通过对背景的训练,可以消除背景中的扰动因素,以避免将运动物体视为背景模型,训练帧数越长,所得到的背景模型越精确,但一般训练时间不超过50帧,否则会影响整个系统的启动时间。
得到了背景模型后,通过模板匹配来进行前景分割。
在进行模板匹配前,首先要对混 合高斯模型中的三个单高斯模型进行排序,判断那个高斯模型最有可能与背景图像进行匹 配。
由于静态区域的点会比动态区域点的方差小,且运动物体出现会导致模型更新后该单 高斯模型的权值降低,因此权值越大,方差越小,匹配度越高。
通过公式 e=w/σ 对混合模 型中的各单个高斯模型进行优先级高低的排序后在进行匹配。
匹配条件应满足:
||*z u m σ-<
由于场景中环境的不断变化, 通过训练建立好的背景模型不可能适应新的背景的需要,因此,需要对背景进行实时更新,以保证前景提取的正确性。
在背景模型更新过程中,引入了学习率 alpha 这一概率。
当学习率取值比较小,其适应环境变化的能力就低,需要给足够的时间才能更新背景模型。
相反,当 alpha 取值较大时,其对场景的适应性较强,能很快的变化背景模型,但是对于一段时间内停留的场景中的目标,却很容易学入背景中去。
针对这种情况,算法对学习率进行调整,在图像中的不同处设定不同的学习速率,以保证场景变化的需要。
学习率的变化范围应该在0~1之间。
对 k 个高斯模型进行更新,也就是对混合高斯模型中的三个参数,即权值,均值和方差进行调整。
其权值的更新算法如下:
,,(1)1k t k t w alpha w alpha M =-∙-+∙
M 为匹配度,对于匹配的模型取值为1,否则取值为0。
可见当像素点与高斯模型不匹配时,其权值会降低。
对于匹配上的i 个高斯模型,需对均值和方差进行更新。
更新算法如下:
alpha p ρ=∙
,,(1)1i t i t t u u z ρρ=-∙-+∙
2
2
2,,1,(1)()i t i t t i t z u σρσρ-=-∙+∙-
未匹配的模型,其均值和方差都保持不变。
如果对于当前点的像素值,其与所有的高斯分布模型都不匹配, 则新建立一个高斯分布将混合高斯模型中排序最后一个的高斯模型替换
掉,同样该分布应选取较大的方差和较小的权值,而其均值则设为当前像素点的值。
通过混合高斯建模而分割出的二值图像, 往往会包含很多噪声点。
对于这种问题的处理,大多都是采用膨胀,腐蚀的方法进行消除。
本文中直接采用连通性分析的方法来对小区域噪声点进行消除,并对运动前景进行提取。
所谓连通性分析,即在高斯模型所得到的二值图像中找到各个运动前景块,并对各前景块赋予不同的标号,并返回各连通区域的区域信息。
其中每个前景块存在着4连通或者8连通的关系。
对于位于(x,y )坐标的像素点r ,4-连通和 8-连通区域。
2.1.2 背景建模
视觉监视的第一步工作是将前景目标所在的区域从背景中分割提取出来,即完成前景和背景的分离。
这一工作一般有三种实现方法:背景消减、帧间运动分析和光流计算。
后两种方法都可以用于运动摄像机的情形,对动态环境的适应能力比较强,但帧间运动分析的结果精度不高,难以获得目标所在区域的精确描述;光流计算的复杂度则非常高,难以符合视觉监视系统实时处理的要求,背景消减适用于摄像机静止的情形。
它为静止背景建立背景模型,通过将当前图像帧和背景模型进行比较,确定出亮度变化较大的区域,即认为是前景区域。
这种方法的计算速度很快,可以获得关于运动目标区域的完整精确的描述,但对场景中光照条件、大面积运动和噪声比较敏感,在实际应用中需采用一定的算法进行背景模型的动态更新,以适应环境的变化。
出于处理速度和算法性能及应用场合的考虑,本文和大部分视觉监视系统一样,选择了建立背景模型作为检测前景区域的方法。
按照所处理背景的自身特性,背景模型可分为单模态和多模态两种。
前者在每个背景点上的颜色分布比较集中,可以用单个概率分布模型来描述(即只有一个模态),后者的分布则比较分散,需要多个分布模型来共同描述(具有多个模态)。
自然界中的许多景物和很多人造物体,如水面的波纹、摇摆的树枝、飘扬的旗帜、监视器荧屏等,都呈现出多模态的特性。
最常用的描述背景点颜色分布的概率分布是高斯分布(正态分布),下面就单模态和多模态两种情形下的背景模型分别加以说明和讨论。
为叙述方便,我们用 ),( Σ µ η x 来表示均值为µ 、协方差矩阵为Σ的高斯分布的概率密度函数。
由于背景模型中对各个图像点的处理是完全独立的,所以若不作特殊说明,本文所有关于背景模型的描述都系针对同一图像点位置而言。
2.1.2.1单高斯分布背景模型
单高斯分布背景模型适用于单模态背景情形,它为每个图像点的颜色分布建立了用单个高斯分布表示的模型(,,)t t x u η∑,其中下标 t 表示时间。
设图像点的当前颜色度量为t X
(,,)t t t p X u T η≤∑(这里p T 为概率阈值),则该点被判定为前景点,否则为背景点(这时又称
t X η∑t t 与(x,u ,)
相匹配)。
在实际应用中,可以用等价的阈值替代概率阈值。
如记t t t d x u =-则可以根据1T t t t d d -∑的值设置相应的前景检测阈值。
2.1.3GMM 的参数估计
为每个像素建立混合高斯模型后,当输入但前采样值xt 的时候。
我们必须估计M 个分布中哪一个最有可能导致该像素值的产生。
更具贝叶斯理论,后验概率(|,)t p k x φ代表了该像素值由状态K 产生的可能性。
()(|,)(|,)(|)
k t k t t p k p k x p k x p x φφφ= 我们可以得到M 个分布中最有可能产生当前采样值的分布K ,只要我们知道该分布是代表前景还是背景物体,就可以划分当前像素是前景还是背景像素。
当前的输入可能不是由M 个表面中的任何一个产生的。
典型的情形是,一个以前为出现过的前景物出现在该像素的位置。
可以通过在M 个高斯分布的基础上再增加一个扁平的第M+1个分布接收一个以前没出现过的输入值。
赋予该分布一个较小的但非0的先验概率值和一个很大的方差。
在实际应用中,一般选择M 等于3。
三个分布中两个用来描述背景表面,一个描述前景表面。
实际上这是应用GMM 模型最小的选择,如果少于两个背景表面的话,就没必要用这个算法了,用一个平均背景图像做简单的减除会更简单些。
在M=3的情况下,算法只用一个高斯分布表示前景就可以工作,是应为能够用它来粗略的表示任何前景。
对于M 个分布,必须估计出其中哪些代表背景模型。
在实际应用中,处理完当前帧后,模型的参数要进行必要的更新,所以每一帧都要进行背景模型的重新估计。
一般的,我们会对有较多数据支持且方差较小的高斯分布感兴趣,因为它们代表背景模型的可能性较大。
考虑两种情况,一是当背景物体是持久静止的时候,这时该物体表面产生的高斯分布代表着背景分布,那么支持这个分布的数据会持续积累,而且它的方差也会越来越小。
第二种情况,当一个新的物体遮挡了原来的背景物体时,一般会导致两种结果:要么产生一个新的分布,要么把一个已存在的分布的方差增大。
另外,当新的物体是一个运动物体的时候,它一般也会比背景像素保持更大的变化直到它停下来。
从以上两种情况可以看出,影响一个分布时候背景分布的重要因素有两个:一,该分布产生的数据所占的比例大小;二该分布的方差大小。
GMM 的参数估计是根据已知的样本序列,估计出模型的混合系数、各个高斯分布的均值
矢量和协方差矩阵等参数,使得模型能够最佳的表示已知的样本序列。
EM 算法是一种正对概率模型的迭代优化技术,在解决最大释然估计问题中引起了极大的关注。
采用EM 算法来估计表示条件概率密度的GMM 参数,EM 算法能保证迭代的稳定收敛。
进行EM 算法参数估计的过程为:
·首先初始化参数m h ∑m m 、u 、
·E-步
1
(|,)
(|,)m n m m nm k m n m m m h N x u H h
N x u ==∑∑∑ ·M-步
*
1
/N m nm n h H N ==∑ *
11/N
N
i nm n nm n n u H x H ===∑∑ *
11[()()]/N N
t
i m n i n i nm n n H x u x u H ===--∑∑∑ ·循环到条件满足。
GMM 的参数估计是利用了EM 算法,可以较好地估计出变量的概率密度函数。
2.2 KDE 简介
2.2.1 核密度估计简介
从样本集估计概率密度函数是很多基于统计的机器学习方法的基础。
核密度估计KDE 算法是一种的非参数密度沽计方法, 其有代表性的应用包括判别分析然而由于传统KDE 算法的计算复杂度很高,使其只能用于处理小规模和低维的数据集,从而极大地限制了其在实际问题中的应用。
密度估计算法大体分为三类: 参数方法、半参数方法和非参数方法。
核密度估计算法是当前最有效和应用最广泛的一种非参数密度估计算法。
KDE 不引入对数据分布的先验假设, 只从训练样本本身出发获取数据分布特征,可以用来估计任意形状的密度函数与参数方法和半参数方法相比有着明显的优势。
定义1 设X1,X2,X3,X4…..Xn 为单元变量X 的独立同分布的一个样本,则X 所服从的密度函数f(X)的核密度估计为:
11()()n
i i X K f X K nh h
=-=∑ 其中h 是控制估计光滑性的参数,也称为窗宽K 是以训练样本点为中心的对称的单峰核函数。
2.2.2背景建模
在室外监控系统中,场景不可能完全静止,而固定安装的摄像机也会存在一定的抖动,此时背景不可能再用图像序列中的一幅图像来完全表示。
因此,要利用背景帧差值法准确地检测到运动物体,需要动态地维护一个背景模型并对之进行实时更新。
非参数背景模型利用核函数密度估计方法从一组样本中得到未知的背景密度分布函数。
从理论上讲,核估计渐近收敛于任何形式的密度函数,因此具有一般性和通用性,非常适用于视觉分析中密度分布不可预知的情形。
设x1,x2,……, xn 为某一像素特征值的n 个采样,那么t 时刻观测到特征值为xt 的概率用核估计计算为:
1()()n
t h t i i p x K x x α==-∑
在实际应用中,核估计中窗宽h 的选择非常关键,甚至比核函数的选择更为重要。
如果h 取得太小,会使密度分布曲线具有毛刺不光滑,而h 太大则会产生过度光滑现象。
在背景模型估计中,h 需要表示特征量值由于图像局部噪声引起的变化。
由于样本中位数不易受到异常值的影响,故采用连续两帧图的样本绝对差中位数来计算。
假设某一像素灰度值的局部
分布为(,)N h μ,则1()i i x x +-服从2(0,2)N h 。
值得一提的是,采用高斯核估计得到的背景模型比混合高斯和表示的参数模型更具一般性,得到的背景特征密度分布更准确,而且避免了参数估计中由于大量数据中存在的不精确和偏差带来的不可避免的误差。
核估计首先需要得到待估计量的一个训练样本集。
将视频序列中像每一帧的灰度或色彩值作为样本,并采用均一权值。
这也就是说,将不同的采样值对模型的贡献视为同等,对相同或差别不大的采样值需要重复计算。
而事实上,训练序列中大部分像素点的变化是有限的,n 个采样中存在一些相似甚至相同的值,可用L 个具有代表性的值来表征。
另外,背景模型中如果包含太宽的灰度分布值会覆盖前景的灰度取值,从而导致检测效果变差。
因此,本文提出一种基于多样性原理的采样方法,目标是保留灰度取值的主要信息,并将次要的信息用一些具有代表性的值来表示。
这样可以用较少的灰度值来表征图像的关键信息。
场景的不断变化需要背景模型及时地进行更新以快速反映这些变化。
给定一个新观测值,采用选择性更新机制,不将前景物体用于背景模型的更新:首先判定一个像素是属于背景还是前景,一般采用前一时刻的检测作为更新前的判定依据。
如果当前像素点在前一时刻分割二值掩码中的值为1,则表示在当前帧中此坐标点的像素属于前景物体,不参与模型参数更新。
对于当前帧中属于背景的点,如果其与当前背景模型中样本点的欧氏距离小于2h ,则不更新模型;否则,用当前值作为一个新的采样来更新背景模型。
建立了背景的动态模型后,用背景帧差值法来检测运动物体就可以通过阈值化来实现。
如果式中估计得到的概率小于某一阈值th ,则该像素归为前景点;否则归为背景点。
阈值通常需要在实验中选定。
2.2.3 快速核密度估计算法
KDE 的计算复杂度问题,自算法本身提出时起,就已经引起了研究人员的关注。
早期针对单元变量KDE ,提出了一些有效的加快计算速度的算法,但是它们不能切实可行地推广到多元变量KDE 中。
近年来,随着计算饥技术的飞速发展和海量高维数据的大量出现,使得人们越来越迫切地需要快速地从数据中挖掘有用的信息。
因为密度估计是很多机器学习任务中重要的一环,所以寻求适用范围更广且更快速地进行KDE 计算的算法已成为机器学习领域研究的热点问题。
对于一个具有r N 价个样本的测试样本集T ,定义它的全局对数似然为:
lg ()r
N r j j i L f t ==∑
双树递归算法的基本思想如下:分别对训练样本和测试样本构造一棵mrkd-tree ,分别
称为Stree 和Ttree,然后从两树的树根结点对开始同时对这两棵树进行遍历。
确定优先选取结点对的准则,依州逐个考察当前最优先的结点对。
在遍历的过程中,根据所需的计算精度, 只需要在其中某些结点对之间进行核函数的计算,而其他一些结点对之间不发生关系,这样就大大降低了KDE 的计算复杂度。
在Ttree 的每一层,都估计全局变量Lr 的一个上界和一个下界,当遍历在Ttree 的某一层满足了:
||||
u
l
l L L s L τττ-< 时,算法终止,其中e 为一个预定的小的正数。
2.2.4 核密度估计运动检测方法
视频帧中有M 个像素点,每个像素点有N 个背景样本,则在t 时刻视频帧中第i 个像素的像素值为()i x t ,该像素对应的第j 个背景样本的像素值为()i x t ,则t 时刻像素i 的概率(())i p x t 可以通过下式进行估计:
11(())(()
())N i i ij j p x t K x t x t N ==-∑
其中K 为核估计子,假设K 服从正态分布,对于RGB 图像可以取R 、G 、B 分量做为特征值,如果它们相互独立,则N 个样本的概率之和为
:
,21,(()())21(())2d N
im im j i j i m m x t x t p x t N σ==-=∏-∑
其中d 为像素的特征维数,x(t)im 是第i 个像素的第m 个特征值,σi,m 为第m 个特征的核宽。
采用单阈值进行分类,会带来如下问题:如果要降低误报率必定会导致漏报率的增加;反之如果要降低漏报率会导致误报率的增加;因此用单阈值很难协调这对矛盾。
根据误报率调整阈值,需要场景的先验知识,当场景改变时,需要人工干预。
本文从像素概率直方图分析出发给出了一种自适应前景、背景阈值的双阈值选择方法,用于像素的分类。
在更新背景模型时采用Long-term 模型和Short-term 模型,在Long-term 模型中采用盲目更新机制,即不管分类的结果,以速率W/N 把采样直接更新到该模型中去,W 为时间窗口的大小,N 为背景样本的采样数目。
在Short-term 模型中采用选择更新机制,即只有分类为背景的样本才包括在该模型中。
采用Short-term ,如果检测结果不正确,会导致负样本被模型预测为正样本(false positives)。
采用Long-term 模型,由于不是最近的背景模型,会导致负样本被模型预测为正样本,会导致正样本被模型预测为负样本(false negatives)。
第三章 MATLAB简介
Matlab,Matrix Laboratory的简称,是美国Mathworks公司于1984年推出的数值计算机仿真软件,经过不断的发展和完善,如今已成为覆盖多个学科、具有超强数值计算能力和仿真分析能力的软件。
Matlab应用较为简单,用大家非常熟悉的数学表达式来表达问题和求解方法。
它把计算、图示和编程集成到一个环境中,用起来非常方便。
同时,Matlab具有很强的开放性和适应性,在保持内核不变的情况下,Matlab推出了适合不同学科的工具箱,如图像处理工具箱,小波分析工具箱、信号处理工具箱、神经网络工具箱等,极大地方便了不同学科的研究工作。
Matlab强大的绘图功能,简单的命令形式,使其越来越受到国内外科技人员的青睐,得到越来越广泛的应用。
一. MATLAB的特点
一种语言之所以如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其它语言的特点。
正如同Fortran和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称为第4代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。
1.功能强大
MATLAB具有功能强劲的工具箱,其包含两个部分:核心部分和各种可选的工具箱。
核心部分中,有数百个核心内部函数。
其工具箱又可分为两类:功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互功能。
功能性工具箱能用于多种学科,而学科性工具箱是专业性比较强的,例如control toolbox,image processing toolbox,signal processing toolbox等。
这些工具箱都是由该领域内的学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,就能够直接进行高、精、尖的研究。
2.界面友好,编程效率高
MATLAB突出的特点就是简洁。
它用更直观的、符合人类思维习惯的代码代替了C和Fortran语言的冗长代码,给用户带来的是最直观、最简洁的程序开发环境。
MATLAB语言简洁紧凑,使用方便灵活,库函数极其丰富,程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。
由于库函数都是由本领域的专家编写的,因此用户不必担心函数的可靠性。
可以说,用MATLAB进行科学开发是站在专家的肩膀上来完成的。
3.开放性强。