高斯混合模型GMM

高斯模型就是用高斯 概率密度函数正态分布 曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。 对图像背景建立高斯模型的原理及过程:图像灰度 直方图反映的是图像中某个 灰度值出现的频次,也可以以为是图像灰度 概率密度的估计。如果图像所包含的目标区域和背景区域相差比较大,且背景区域和目标区域在 灰度上有一定的差异,那么该图像的灰度 直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。对于复杂的图像,尤其是医学图像,一般是多峰的。通过将 直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。 在智能监控系统中,对于运动目标的检测是中心内容,而在 运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景 目标提取的一个重要环节。
我们首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。即利用当前帧和视频序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而高斯混合模型(GMM,Gaussian mixture model)是建模最为成功的方法之一,同时GMM可以用在监控视频索引与检索。
混合高斯模型使用K(基本为3到5个) 个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点, 否则为前景点。通观整个高斯模型,他主要是有 方差均值两个参数决定,,对 均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和 均值两个参数实时更新。为提高模型的学习能力,改进方法对均值和 方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。具体更新公式如下:
μt= (1 - ρ)μt- 1 +ρxt (1)
σ2t = (1 - ρ)σ2t- 1 +ρ( xt -μt ) T ( xt -μt ) (2)
ρ =αη( xt | μκ,σκ ) (3)
| xt -μt - 1 | ≤ 2. 5σt- 1 (4)
w k , t = (1 - α) w k , t - 1 +αMk , t (5)
式中ρ为学习率,即反映当前图像融入背景的速率。
建模过程中,我们需要对混合高斯模型中的 方差、均值、权值等一些参数初始化,并通过这些参数求出建模所需的数据,如马兹距离。在初始化过程中,一般我们将 方差设置的尽量大些(如15),而权值则尽量小些(如0.001)。 这样设置是由于初始化的高斯模型是一个并不准确,可能的模型,我们需要不停的缩小他的范围,更新他的 参数值,从而得到最可能的高斯模型,将 方差设置大些,就是为了将尽可能多的像素包含到一个模型里面,从而获得最有可能的模型。部分代码如下:
for(i=0; i<K_MODELS; i++) //K_MODELS为预先定义的模型数
{
// calculate the vector, v = (X - u)
for(j=0; j<3; j++)
v[j] = pixel[j] - model[i]->mean[j];
// calculate the squared distance, d = |v|^2
model[i]->dist2 = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
// zot: this is only equal to mahalanobis distance
// when covariance matrix = vI
// (v = scalar variance for all channels)
model[i]->mah2 = model[i]->dist2 / model[i]->var;
//即为马兹距离
// see if X is close enough to this model
if (model[i]->mah2 < SFSquared)
break;
// the current pixel matches one of the K models
//SFSquared是预定义的值
}
同时这时又产生了一个疑问,那么如何得知我们的模型是否超过预定义的模型数了呢?这便是我们设置权值的其中一个原因了。根据大量的试验,我们得出当前面几个模型数的权值之和在T值(一般设为0.75)之内时,效果最好,因此当我们将前面的模型权值相加,当超过0.75时便舍去后面的模型。当然其中还有一个重要的问题,我们是如何得知前面的模型是相对来说最有可能的模型,而非被舍去的模型呢?在这里我们首先要对各个模型的 权值进行排序,按照权值与方差的比率的从大到小,对模型进行排序。由于一开始建立的模型肯定是不可靠的,在最后基本会被舍弃,因此我们在初始化的时候将初始模型的方差尽量大,而权值尽量小,从而使最不可能的模型排在比较后面。 到这里为止,混合高斯模型的建模基本完成,我在归纳一下其中的流程,首先初始化预先定义的几个高斯模型,对高斯模型中的参数进行初始化,并求出之后将要用到的参数。其次,对于每一帧中的每一个像素进行处理,看其是否匹配某个模型,若匹配,则将其归入该模型中,并对该模型根据新的像素值进行更新,若不匹配,则以该像素建立一个高斯模型,初始化参数,代理原有模型中最不可能的模型。最后选择前面几个最有可能的模型作为背景模型,为背景 目标提取做铺垫。
 
 
 
EM算法形式上类似于半隐半显解拟线性方程.  
GMM (Gaussian mixture model) 做图像分割时对所分区域边界没有任何约束, 如果不估协方差阵,其退化为kmeans. 利用区域特征函数的全变差等于边界长这一性质,带上边缘约束,利用水平集作计算,就成偏微的levelset 方法。
GMM最好用graphcut解。速度快

转载于:https://www.cnblogs.com/cleiyang/p/4173435.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 高斯混合模型GMM)聚类是一种机器学习方法,它是将数据集分成多个高斯分布的集合的过程。MATLAB中有一个专门用于GMM聚类的函数gmdistribution,可以用来确定数据集中存在的高斯分布的数量。通过使用该函数,可以将数据集分成不同的聚类。当然,可以使用其他聚类方法,例如K均值聚类,但GMM聚类具有以下优点: 1. 在确定聚类的数量时更加灵活,因为可以使用概率模型来估计每个聚类的权重。 2. 可以处理非球形簇,这是K均值聚类无法处理的。 3. 可以估计聚类的不确定性。 为了使用gmdistribution函数进行聚类,需要将待聚类的数据集作为参数传递给函数。还必须指定每个高斯分布的数量。最后,gmdistribution函数需要一个初始值矩阵来初始化每个高斯分布。可以选择从数据集中选取初始值,也可以使用一组随机值来初始化。在运行gmdistribution函数后,将返回一个包含数据点所属聚类的向量。可以使用这些向量来进一步分析和可视化数据。 总之,GMM聚类是一种有用的机器学习技术,可用于将数据集分成不同的聚类。MATLAB中的gmdistribution函数可帮助用户确定聚类的数量和每个高斯分布的初始值,聚类之后可以进一步分析和可视化数据点。 ### 回答2: 高斯混合模型GMM)是一种基于概率分布建立的聚类方法。它假设每个聚类都可以用多个高斯分布来拟合,而这些高斯分布的加权和就形成了整个数据集的概率密度函数。Matlab提供了GMM聚类算法的实现,可以方便地进行聚类操作。 在Matlab中,通过调用gmdistribution函数可以建立一个GMM模型,并用数据集进行初始化。该函数的参数包括聚类数目、协方差类型、初始化方式等。在得到GMM模型后,可以使用fit函数对数据集进行拟合。fit函数会返回每个数据点属于每个聚类的概率值。 在对数据进行聚类后,可以使用gmdistribution对象的其他函数进行分析和可视化,如pdf函数可以计算某个点属于每个聚类的概率密度值,cluster函数可以给出数据集中每个点所属的聚类,plot函数可以绘制聚类的概率密度函数。此外,Matlab还提供了一些有关GMM的其他函数,如gmdistribution.fit和gmdistribution.random,可以用来生成满足GMM模型的数据集和对新数据进行预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值