混合高斯模型

合集下载

高斯混合模型

高斯混合模型

高斯混合模型(Gaussian Mixture Model, GMM)(2011-12-30 23:50:01)标签:分类:工作篇校园高斯混合模型高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。

对图像背景建立高斯模型的原理及过程:图像灰度直方图反映的是图像中某个灰度值出现的频次,也可以以为是图像灰度概率密度的估计。

如果图像所包含的目标区域和背景区域相比比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。

对于复杂的图像,尤其是医学图像,一般是多峰的。

通过将直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。

在智能监控系统中,对于运动目标的检测是中心内容,而在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。

而建模正是背景目标提取的一个重要环节。

我们首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。

建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。

即利用当前帧和视频序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而高斯混合模型(GMM)是建模最为成功的方法之一。

英文翻译及缩写:Gaussian mixture model (GMM)混合高斯模型使用K(基本为3到5个)个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点, 否则为前景点。

通观整个高斯模型,他主要是有方差和均值两个参数决定,,对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。

由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。

高斯混合模型gmm 3sigma准则

高斯混合模型gmm 3sigma准则

高斯混合模型(Gaussian Mixture Model,GMM)是一种概率模型,常用于聚类分析和密度估计。

GMM在模式识别和机器学习领域有着广泛的应用,其中3sigma准则是一种常用的判别方法,用于确定数据点是否属于某一特定的类别或组。

1、GMM的基本原理GMM是一种灵活的聚类算法,它假设数据是由若干个高斯分布组成的混合体。

具体来说,GMM假设数据点是由多个高斯分布生成的,每个高斯分布对应一个聚类中心。

GMM的目标是通过调整高斯分布的参数来最大化数据的似然函数,从而完成聚类分析或密度估计的任务。

2、GMM的参数估计GMM的参数估计通常使用期望最大化(Expectation-Maximization,EM)算法来实现。

EM算法是一种迭代的优化方法,它通过反复地执行两个步骤来估计GMM的参数:E步骤(Expectation step)和M步骤(Maximization step)。

在E步骤中,计算每个数据点属于每个高斯分布的后验概率;在M步骤中,基于E步骤的结果,更新高斯分布的参数。

3、GMM的应用GMM可以用于聚类分析、异常检测和密度估计等任务。

在聚类分析中,GMM可以有效地识别数据中的不同聚类中心,并将数据点分配到各个聚类中心;在异常检测中,GMM可以通过计算数据点的概率密度来判断数据点是否异常;在密度估计中,GMM可以用于估计数据的概率密度函数。

4、3sigma准则3sigma准则是一种常用的判别方法,用于确定数据点是否属于某一特定的类别或组。

具体来说,3sigma准则假设数据符合正态分布,并利用正态分布的性质来判断数据的异常情况。

根据3sigma准则,大约68的数据位于平均值加减一个标准差的范围内,大约95的数据位于平均值加减两个标准差的范围内,大约99.7的数据位于平均值加减三个标准差的范围内。

如果某个数据点的取值超出了平均值加减三个标准差的范围,就可以认为这个数据点是异常的。

5、GMM与3sigma准则的结合在实际应用中,GMM和3sigma准则常常会结合使用。

高斯混合模型算法

高斯混合模型算法

高斯混合模型算法在GMM中,假设数据的潜在分布是由多个高斯分布组成的,每个高斯分布代表了一个聚类或者类别。

GMM通过将这些高斯分布的混合系数、均值和协方差矩阵进行估计来拟合数据分布。

GMM的数学表达如下:P(x) = ∑(i=1 to k) Πi * N(x, μi, Σi)其中,P(x)表示数据分布的概率,Πi表示第i个高斯分布的混合系数,N(x,μi,Σi)表示第i个高斯分布的概率密度函数,μi和Σi分别表示第i个高斯分布的均值和协方差矩阵。

GMM算法的步骤如下:1.初始化:选择合适的聚类数k,随机初始化各个高斯分布的混合系数Πi、均值μi和协方差矩阵Σi。

2. E步(Expectation Step):计算每个数据点属于每个聚类的概率。

使用当前的参数估计值计算每个数据点x属于每个聚类i的后验概率γi:γi = Πi * N(x, μi, Σi) / (∑(j=1 to k) Πj * N(x, μj, Σj))3. M步(Maximization Step):根据E步计算得到的后验概率更新模型参数。

计算每个高斯分布的新混合系数、均值和协方差矩阵:Πi = (∑(n=1 to N) γi) / Nμi = (∑(n=1 to N) γi * x) / (∑(n=1 to N) γi)Σi = (∑(n=1 to N) γi * (x - μi)^T * (x - μi)) / (∑(n=1 to N) γi)其中,N表示数据点的数量。

4.对数似然比较:计算新参数的对数似然值。

若对数似然值相对于上一次迭代的值的提升不大,则停止迭代;否则返回第2步。

GMM算法的优点在于:-GMM可以用于对任意分布的数据进行建模,因为它通过多个高斯分布的组合来表示分布的形状。

-GMM可以获得每个数据点属于每个聚类的概率,而不仅仅是一个硬性分类结果。

-GMM对异常值和噪声具有一定的鲁棒性。

然而,GMM也有一些缺点:-GMM的参数估计是通过迭代求解的,因此对初始参数的选择十分敏感。

高斯混合模型详解

高斯混合模型详解

高斯混合模型详解高斯混合模型(Gaussian Mixture Model,GMM)是一种概率模型,将数据集看作是由多个高斯分布组成的混合体。

每个高斯分布表示一个聚类,通过使用多个高斯分布的线性组合来描述数据的分布。

GMM的基本思想是假设数据是由K个高斯分布组成的混合体,每个高斯分布都有自己的均值和方差。

同时,每个数据点都有一个相应的隐含变量,表示该数据点属于哪个高斯分布。

GMM的参数包括每个高斯分布的均值、方差和混合系数,以及隐含变量的分布。

参数的估计可以通过最大似然估计来完成。

GMM的工作流程如下:1. 初始化模型参数,包括每个高斯分布的均值、方差和混合系数,以及隐含变量的分布。

2. 通过观测数据和当前参数估计每个数据点属于每个高斯分布的概率。

3. 根据估计的数据点属于每个高斯分布的概率,更新模型参数。

4. 重复步骤2和3,直到模型参数收敛或达到指定的迭代次数。

GMM的优点包括:1. 可以灵活地拟合各种形状的数据分布,因为每个高斯分布可以模拟不同的数据簇。

2. 由于采用了概率模型,可以通过计算后验概率来获得样本属于每个簇的概率,从而更好地理解数据。

3. GMM的参数估计可以通过EM算法来实现,相对简单而且具有良好的收敛性。

GMM的应用领域包括聚类分析、异常检测、图像分割等。

在聚类分析中,GMM可以用于识别数据中的聚类,并对数据点进行分类。

在异常检测中,GMM可以通过比较数据点的后验概率来检测异常值。

在图像分割中,GMM可以用于将图像分割为不同的区域,每个区域对应一个高斯分布。

总之,高斯混合模型是一种强大且灵活的概率模型,适用于各种数据分布的建模和分析。

它通过使用多个高斯分布的混合来描述数据的分布,能够更好地捕捉数据的复杂性和多样性。

混合高斯模型在图像处理中的应用

混合高斯模型在图像处理中的应用

混合高斯模型在图像处理中的应用随着数字化技术的不断发展,计算机视觉技术在图像处理中广泛应用。

而混合高斯模型(Mixture of Gaussian, MoG)便是其中的一种重要的数学工具和统计模型。

它不仅可以对图像进行描述和分析,还可以进行模式识别,它已经被应用在许多领域。

一、混合高斯模型的定义混合高斯模型,是指用多个高斯分布的线性组合来近似表示数据分布的一种模型。

这些高斯分布的均值、标准差和权重均不相同。

可以把这里的高斯分布看作是"越窄越高"的簇,而模型则是将若干个簇进行组合形成的。

二、混合高斯模型在图像分割中的应用在图像分割中,常常需要将图像进行区域划分,将图像中的不同区域分开。

而混合高斯模型正好可以对不同区域的图像进行描述。

混合高斯模型可以计算得到不同区域像素的概率密度函数,通过对密度函数进行阈值分割,将图像进行分割。

对于混合高斯模型的应用,主要分为以下两个步骤:1. 计算高斯分布参数首先,需要将整个图像从RGB空间转换为灰度空间,并预处理图像。

然后,使用混合高斯模型拟合图像数据,计算高斯分布的参数,即像素点的均值,方差和权值。

2. 基于高斯分布阈值进行分割确定一个合适的阈值是十分重要的。

一种常见的方法是使用OTSU阈值定位方法,这种方法可以自动选择分割的最佳阈值,从而使分割的区域达到最好的分割效果。

三、混合高斯模型在图像去噪中的应用除了在图像分割中的应用,混合高斯模型也可以用于图像去噪。

对于被污染的图像,可以将其看作是受到不同噪声类型的混合,每种噪声可以使用高斯模型进行描述。

具体实现方式为,将图像转换为灰度空间,并对其进行初步处理,例如中值滤波等。

然后使用混合高斯模型将不同类型的噪声进行建模,通过对噪声的建模,可以得到不同噪声参数的概率密度函数。

最后,将这些概率密度函数进行加权平均,得到的结果是一幅去噪后的图像。

四、结语混合高斯模型不仅可以对图像进行分割和去噪,还可以应用于其他领域,例如视频处理、运动跟踪和人脸识别等。

高斯混合模型平方差和均值

高斯混合模型平方差和均值

高斯混合模型平方差和均值高斯混合模型,听起来是不是有点拗口?这玩意儿就像一场美味的冰淇淋聚会,里面混合了各种口味,大家都能找到自己喜欢的。

想象一下,夏天的午后,阳光照得人心里暖暖的,手里捧着一大杯冰淇淋,里面有巧克力、香草、草莓,甚至还有薄荷。

每一种口味都各自独立,但当它们混在一起,就形成了一种全新的体验,嘴里满是不同的味道,真是爽!高斯混合模型的核心就是这样的一个概念,它把多个高斯分布(简单说就是一堆钟形曲线)混在一起,得出一个复杂的分布,给人一种“哦,原来可以这样”的感觉。

我们来聊聊平方差吧,这可是个老朋友。

听名字就知道,这个东西的差距有关,简单说就是量一量各个数据点和它们平均值之间的距离。

你可以把平方差想象成一种“发泄”方式,像是在告诉每一个数据点:“嘿,别担心,我知道你有多远离我们的平均水平。

”每个数据点的“失落感”都被平方之后放大了,最后加在一起形成一个整体的失落值,这就叫做总平方差。

想想看,参加聚会的朋友们,大家的状态都不一样,有的人在狂欢,有的人在角落里默默观察,最后统计一下,发现有些人真的有点偏离“欢乐的平均水平”,这就是平方差的感觉。

说到均值,真是个百搭的角色。

均值就像聚会上的DJ,调和着大家的情绪。

它把所有人的表现都平均了一下,让每个人都在某种程度上融入这个整体。

想象一下,均值就是在说:“来吧,大家一起摇摆,别太显眼。

”不过,有时候均值也会显得有些无奈,比如如果某个朋友喝得烂醉,瞬间拉低了大家的平均状态,那就有点尴尬了。

均值的计算方法也很简单,把所有的数字加起来,然后除以总数,这就能得到一个代表大家共同状态的数字。

高斯混合模型则让这个过程变得更有趣。

它不仅考虑了整体的均值,还能识别出不同“群体”的存在。

就像在一场派对上,大家分成了不同的小圈子,有的在聊工作,有的在聊电影,还有的在角落里默默吃零食。

每个小圈子都有自己的特点和风格,而高斯混合模型就是把这些小圈子融合在一起,形成一个丰富多彩的整体。

高斯混合模型详解

高斯混合模型详解

高斯混合模型详解摘要:1.高斯混合模型的基本概念2.高斯混合模型的组成部分3.高斯混合模型的求解方法4.高斯混合模型的应用实例5.总结正文:一、高斯混合模型的基本概念高斯混合模型(Gaussian Mixture Model,简称GMM)是一种概率模型,用于对由多个高斯分布组成的数据集进行建模。

它是一个多元高斯分布,由多个一元高斯分布组合而成,每个一元高斯分布表示数据集中的一个子集。

高斯混合模型可以看作是多个高斯分布的加权和,其中每个高斯分布的权重表示该高斯分布在数据集中的重要性。

二、高斯混合模型的组成部分高斯混合模型包含三个主要组成部分:1.样本向量:样本向量是数据集中的一个观测值,通常表示为一个列向量。

2.期望:期望是每个高斯分布的均值,表示数据集中所有样本向量的平均值。

3.协方差矩阵:协方差矩阵表示数据集中各个样本向量之间的相关性。

它由多个一元高斯分布的协方差矩阵组成,每个协方差矩阵描述了一个子集内样本向量的相关性。

三、高斯混合模型的求解方法高斯混合模型的求解方法主要有两种:1.极大似然估计(Maximum Likelihood Estimation,简称MLE):MLE 是通过最大化似然函数来确定高斯混合模型的参数,即期望和协方差矩阵。

具体方法是使用EM 算法(Expectation-Maximization)迭代求解。

2.贝叶斯信息准则(Bayesian Information Criterion,简称BIC):BIC 是一种模型选择方法,用于比较不同模型的拟合效果。

它通过计算模型的复杂度和拟合优度来选择最佳模型。

四、高斯混合模型的应用实例高斯混合模型在许多领域都有广泛应用,例如:1.语音识别:高斯混合模型可以用来对语音信号进行建模,从而实现语音识别。

2.聚类分析:高斯混合模型可以用来对数据进行聚类,每个聚类对应一个高斯分布。

3.异常检测:高斯混合模型可以用来检测数据中的异常值,因为异常值通常不符合高斯分布。

高斯混合模型详解

高斯混合模型详解

高斯混合模型详解摘要:一、高斯混合模型简介1.模型背景2.模型结构二、高斯混合模型原理1.硬聚类与软聚类2.概率模型3.参数估计三、高斯混合模型的应用1.数据降维2.异常检测3.密度估计四、高斯混合模型在实际场景中的应用案例1.图像分割2.文本分类3.生物信息学五、高斯混合模型的优缺点及改进方法1.优点2.缺点3.改进方法六、总结与展望1.模型发展历程2.当前研究热点3.未来发展方向正文:一、高斯混合模型简介1.模型背景高斯混合模型(Gaussian Mixture Model,简称GMM)起源于20世纪60年代,是一种用于聚类和密度估计的统计模型。

它通过对数据进行软聚类,将不同类别的数据分布用高斯分布进行建模,从而实现对数据特征的描述和分类。

2.模型结构高斯混合模型由多个高斯分布组成,每个高斯分布表示数据集中的一个子集。

各个高斯分布的参数(均值、协方差矩阵和权重)决定了其在混合模型中的贡献程度。

通过优化这些参数,我们可以得到一个最佳的高斯混合模型。

二、高斯混合模型原理1.硬聚类与软聚类高斯混合模型属于软聚类方法,与硬聚类方法(如K-means)相比,软聚类方法允许每个数据点以不同的概率属于多个类别。

这使得高斯混合模型在处理复杂数据分布时具有优势。

2.概率模型高斯混合模型是一种概率模型,它描述了数据分布的概率密度函数。

给定数据集X,高斯混合模型可以表示为:p(x) = ∑[w_i * N(x; μ_i, Σ_i)],其中w_i为第i个高斯分布的权重,N(x; μ_i, Σ_i)表示均值为μ_i、协方差矩阵为Σ_i的高斯分布。

3.参数估计高斯混合模型的参数估计采用最大似然估计(MLE)方法。

通过对数据进行建模,并使观测到的数据概率最大,我们可以得到模型参数的估计值。

三、高斯混合模型的应用1.数据降维高斯混合模型可以用于对高维数据进行降维,通过软聚类将数据划分为几个子集,再对每个子集进行降维处理,从而提取出关键特征。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

混合高斯模型跟高斯变量之和看起来有一点像, 注意不要把它们弄混淆了. 混合高斯模型给出的概率密度函数实际上是几个高斯概率密度函数的加权和:计算均值和方差的公式不仅适用于几个(多维)高斯分布混合的情况, 还适用于非高斯分布的情况.高斯变量之和就没什么好说的了, 几个高斯变量之和是一个新的高斯变量.原理: 高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。

对图像背景建立高斯模型的原理及过程:图像灰度直方图反映的是图像中某个灰度值出现的频次,也可以认为是图像灰度概率密度的估计。

如果图像所包含的目标区域和背景区域相比比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。

对于复杂的图像,尤其是医学图像,一般是多峰的。

通过将直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。

在智能监控系统中,对于运动目标的检测是中心内容,而在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。

而建模正是背景目标提取的一个重要环节。

我们首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。

建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。

即利用当前帧和视频序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而高斯混合模型是是建模最为成功的方法之一。

混合高斯模型使用K(基本为3到5个)个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型, 用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点, 否则为前景点。

通观整个高斯模型,主要是有方差和均值两个参数决定,对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。

由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。

为提高模型的学习能力,改进方法对均值和方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。

到这里为止,混合高斯模型的建模基本完成,我在归纳一下其中的流程,首先初始化预先定义的几个高斯模型,对高斯模型中的参数进行初始化,并求出之后将要用到的参数。

其次,对于每一帧中的每一个像素进行处理,看其是否匹配某个模型,若匹配,则将其归入该模型中,并对该模型根据新的像素值进行更新,若不匹配,则以该像素建立一个高斯模型,初始化参数,代理原有模型中最不可能的模型。

最后选择前面几个最有可能的模型作为背景模型,为背景目标提取做铺垫。

目前,运动物体检测的问题主要分为两类,摄像机固定和摄像机运动。

对于摄像机运动的运动物体检测问题,比较著名的解决方案是光流法,通过求解偏微分方程求的图像序列的光流场,从而预测摄像机的运动状态。

对于摄像机固定的情形,当然也可以用光流法,但是由于光流法的复杂性,往往难以实时的计算,所以我采用高斯背景模型。

因为,在摄像机固定的情况下,背景的变化是缓慢的,而且大都是光照,风等等的影响,通过对背景建模,对一幅给定图像分离前景和背景,一般来说,前景就是运动物体,从而达到运动物体检测的目的。

单分布高斯背景模型单分布高斯背景模型认为,对一个背景图像,特定像素亮度的分布满足高斯分布,即对背景图像B,(x,y)点的亮度满足:IB (x,y) ~ N(u,d)这样我们的背景模型的每个象素属性包括两个参数:平均值u 和方差d。

对于一幅给定的图像G,如果Exp(-(IG (x,y)-u(x,y))^2/(2*d^2)) > T,认为(x,y)是背景点,反之是前景点。

同时,随着时间的变化,背景图像也会发生缓慢的变化,这时我们要不断更新每个象素点的参数u(t+1,x,y) = a*u(t,x,y) + (1-a)*I(x,y)这里,a称为更新参数,表示背景变化的速度,一般情况下,我们不更新d(实验中发现更不更新d,效果变化不大)。

高斯混合模型是用于背景提取的方法,OpenCV的cvaux中cvbgfg_gaussmix.cpp文件根据文献"An improved adaptive background mixture model for real-time tracking with shadow"中提供的方法编写了高斯混合模型函数。

其中定义了CvGaussBGModel类用于存放高斯混合模型的各个参数。

我用OpenCV使用高斯混合模型函数分以下几步:1。

需要用到icvUpdateGaussianBGModel,icvReleaseGaussianBGModel两个函数,但是源程序中将这两个函数定义为内部函数,需要做一些修改,首先将cvbgfg_gaussmix.cpp中前面两个函数的声明static void CV_CDECL icvReleaseGaussianBGModel( CvGaussBGModel** bg_model );static int CV_CDECL icvUpdateGaussianBGModel( IplImage* curr_frame, CvGaussBGModel* bg_model );两行代码注释掉。

然后在cvbgfg_gaussmix.cpp中间部分两个函数的定义部分,函数头static int 和static void改成CV_IMPL int 和CV_IMPL void。

最后在cvaux.h文件中CVAPI(CvBGStatModel*) cvCreateGaussianBGModel( IplImage* first_frame,CvGaussBGStatModelParams* parameters CV_DEFAULT(NULL));这句后面加上以下两句CVAPI(void) icvReleaseGaussianBGModel( CvGaussBGModel** bg_model );CVAPI(int) icvUpdateGaussianBGModel( IplImage* curr_frame, CvGaussBGModel* bg_model );程序修改完毕,点rebuild all,全部重新编译。

2。

在程序初始化部分定义高斯混合模型参数CvGaussBGModel* bg_model=NULL;在读取第一帧图像(背景图像)时,进行高斯背景建模bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(image, 0);image可以是灰度图象也可以是彩色图像。

接下来再读取当前帧时,更新高斯模型regioncount=icvUpdateGaussianBGModel(currframe, bg_model );regioncount的含义我不确定,我理解是代表背景中不同颜色区域的个数,这个参数我没有用到,它只是icvUpdateGaussianBGModel函数的返回值。

3。

现在bg_model已经保存了经过高斯混合模型分类后的结果,bg_model->background保存了背景图像,bg_model->foreground保存了前景图像。

include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h> int main( int argc, char** argv ) { IplImage* pFrame = NULL; IplImage* pFrImg = NULL;IplImage* pBkImg = NULL; CvCapture* pCapture = NULL; cvNamedWindow("fore ground",1); cvMoveWindow("background", 360, 0); cvMoveWindow("foreground", 690, 0);{ fprintf(stderr, "Usage: bkgrd [video_file_name]\n"); } if( !(pCapture = cvCap tureFromFile(argv[1]))) { fprintf(stderr, "Can not open video file %s\n", argv[1]); } if( !(pCapture = cvCaptureFromCAM(-1))) { fprintf(stderr, "Can not open camera.\n" ); } CvGaussBGModel* bg_model=NULL; while(pFrame = cvQueryFrame( pCaptur e )) { nFrmNum++; { pBkImg = cvCreateImage(cvSize(pFrame->widt h, pFrame->height), IPL_DEPTH_8U,3); pFrImg = cvCreateImage(cvSize(pFrame->width, pFra me->height), IPL_DEPTH_8U,1); bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel (pFrame, 0); } { cvUpdateBGStatModel(pFrame, (CvBGStatModel *)bg_model );cvCopy(bg_model->foreground,pFrImg,0); cvCopy(bg_model->background,pBkImg,0);pBkImg->origin=1; pFrImg->origin=1; cvShowImage("video", pFrame); cvShowIma ge("background", pBkImg); cvShowImage("foreground", pFrImg); if( cvWaitKey(2) >= 0 ) } } cvReleaseBGStatModel((CvBGStatModel**)&bg_model); cvDestro yWindow("foreground"); cvReleaseImage(&pFrImg); cvReleaseImage(&pBkImg); c vReleaseCapture(&pCapture); }。

相关文档
最新文档