混合高斯背景建模与更新

合集下载

混高斯背景建模.

混高斯背景建模.
ˆ arg max log P(Y | )

(4)
这个问题没有解析解,只有通过迭代的方法求解。EM算法就 是可以用于求解这个问题的一种迭代算法。
2015/1/25
混合高斯模型背景建模
5
EM算法

Байду номын сангаас
算法推导
我们面对一个含有隐变量的概率模型,目标是极大化观测 数据(不完全数据)Y关于参数θ的对数似然函数,即极大 化
L( ) log P(Y | ) log P(Y , Z | )
(5) Z (5)中有未观测变量并有包含和(或积分)的对数,进行(求 导)极大化比较困难。
log( P( Z | ), P(Y | Z , ))
Z
2015/1/25
混合高斯模型背景建模
6
EM算法
EM算法通过逐步迭代近似极大化L(θ)。假设在第i次迭 代后θ的估计值 是 (i ) 。我们希望新估计值θ能使L(θ)增 加,即 L ( ) L (θ (i) ) ,并逐步达到最大值。为此考虑两者的 差:
混合高斯模型背景建模
2015/1/25
3
EM算法
解:三硬币模型可以写作
P( y | ) P( y, z | ) P( z | )P( y | z, )
z z
(1) 这里,随机变量y是观测变量,表示一次试验观测的结果是 1或0;随机变量z是隐变量,表示未观测到的抛硬币A的结果; θ=(π,p,q)是模型参数。其中,y的数据可以观测,z的数据 不可观测。 T Z (Z , Z ,...,Z ) Y ( Y , Y ,..., Y ) 1 2 n ,未观测数据表示为 将观测数据表示为 则观测数据的似然函数为 (2) P(Y | ) P(Z | )P(Y | Z , )

基于高斯混合模型的背景建模球员检测算法

基于高斯混合模型的背景建模球员检测算法

测效果的负面影响。
动态场 景下运动 目标检测 的关键 问题是如何 建立背景
模 型 和 实 时 更 新模 型参 数 以适 应 背 景 变 化 。 目前 , 经 提 出 已
1 引 言
体育视频 中, 球员 的检测作 为整个 体育视频分 析系统的
底层 , 目标 是尽 可能精确地从视频 图像 序列 中将球 员区域提 取 出来 。运动员检测 效果 对后续 的跟 踪、 别 、 战术 分析 识 及 等影 响巨大 。然而 , 由于体育视 频背 景 图像 的频 繁变化 , 如
sa e Ac o dng t h p c a ra,t e Ga sM it r desa e u dae t fee trt s F n l tg . c r i o t e s e ilae h us x u e Mo l r p t d wih di r n ae . i al y,b c g o n a k ru d
第2卷 第9 7 期
文章编号 :0 6— 3 8 2 1 ) 9— 2 8—0 10 9 4 (0 0 0 0 5 5

算机仿源自真 21年9 0 0 月
基 高 混 合模 型 的 背景 建模 球 员检 测 算 法 于 斯
阁 刚 , 国栋 , 崔 于 明
( 河北 工 业 大 学 计 算 机 科 学 与 软件 学 院 , 津 30 3 ) 天 0 10 摘 要 : 研 究 体 育视 频 的 问题 中 , 对 现 有 的 运 动 目标 检 测 方 法 在 体 育 视频 中易 受 场 景 变 化 的影 响不 能 准 确 检 测 出 运 动 员 , 在 针
中 图分 类 号 :P 9 T 31 文献 标 识 码 : B
Ply r De e to g rt m s d n G a sa a e t ci n Al o ih Ba e o usi n

试描述基于高斯混合模型背景建模的步骤

试描述基于高斯混合模型背景建模的步骤

试描述基于高斯混合模型背景建模的步骤背景建模是计算机视觉领域中的一个重要问题,它被广泛应用于目标检测、跟踪、视频分析等领域。

背景建模的目的是从输入的视频序列中估计出场景的背景模型,以便于检测出场景中的前景目标。

在背景建模中,高斯混合模型(Gaussian Mixture Model,GMM)是一种常见的背景建模方法。

基于高斯混合模型背景建模的步骤主要包括以下几个方面:1. 数据预处理在进行背景建模之前,需要对输入的视频数据进行预处理。

预处理的主要目的是去除图像中的噪声和不利于背景建模的影响因素,例如光照条件的变化、相机的移动等。

预处理的方法包括平滑滤波、图像增强、运动补偿等。

2. 模型初始化在建立GMM模型之前,需要对模型进行初始化。

初始化的目的是确定每个高斯分量的初始参数,包括均值、方差和权重。

通常情况下,可以使用先验知识或者简单的聚类算法来初始化模型。

3. 建立GMM模型建立GMM模型是背景建模的核心部分。

在该步骤中,需要使用EM算法来估计高斯混合模型的参数。

EM算法是一种迭代算法,它通过交替进行两个步骤来求解问题,即E步骤和M步骤。

在E步骤中,计算每个像素的后验概率,即该像素属于每个高斯分量的概率;在M步骤中,使用最大似然估计法更新高斯分量的参数。

迭代过程会一直进行,直到收敛为止。

4. 背景模型更新背景模型的更新是指随着时间的推移,背景模型需要不断地进行更新以适应场景的变化。

在模型更新的过程中,需要考虑到前景目标的影响,以避免将前景目标误判为背景。

在更新模型时,可以采用加权平均法、自适应学习率法等方法。

5. 前景检测在背景模型建立完成后,可以通过前景检测来识别场景中的前景目标。

前景检测的方法包括阈值法、基于形态学的方法、基于连通性的方法等。

通过前景检测,可以得到场景中的前景目标的位置信息和形状信息。

基于高斯混合模型的背景建模是一种常见的背景建模方法。

它通过建立高斯混合模型来估计场景的背景模型,从而实现前景目标的检测和跟踪。

自适应高斯混合背景建模算法的改进

自适应高斯混合背景建模算法的改进
成 的混 合 高 斯 模 型来 建 模闸, : 即

. . 一 . .一
1一)1 )∞ 一 1 Gf} l -一+・l 匹 ∞一 l出 船 ( (1 国 1 n ,一 l 【 -

() 6
() 7
/l /
尸 ) ( =
i7 , , :) t7 ・(
1引 言 .
如果 检 验 出该 像 素 混 合 高 斯 模 型 中至 少 有 一 个 高 斯 分 布 与
视 觉 监 控 系 统 通 过 自动 分析 摄 像 机拍 摄 的 序 列 图 像 .实 现 像 素 值 。 匹配 , 么混 合 高斯 模 型 的更 新 规 则 为 : 那 对 动态 场 景 中兴 趣 目标 如 人 、 体 的定 位 、 踪 和 识 别 , 在 此 物 跟 并 1对 于 不 匹 配 的 高 斯 分 布 , 们 的 均 值 和 协 方 差 矩 阵 ∑ ) 它 基 础 上 分 析 和判 断 目标 的 行 为 .进 而 判 断 是 否 有 异 常 或 危 险 情 保 持 不 变 : 况 发 生 检测 并 分 割 出视 频 流 中 的 运 动 物 体 是 智 能 视 觉 监 控 应 2 匹 配 的 高 斯 分 布 G 的 均 值 根 据 公 式 ( ) 新 ; 方 差 ) ; 2更 协 用 的首要 步骤 . 常采 用背 景 图像 减 除法 f 来 实现 。 景 图 像 减 除 矩 阵 ∑ 根据 公 式 ( ) 新 。 - 背 3更 法 首先 要 获 取 场景 的一 帧 参 考 图像 .然 后 把摄 像 机 实 时 拍 摄 X ) . 蠢
终 被 新 赋 值 的高 斯 分 布所 取代 .
∑ =


0 0


B=ag mi{ r  ̄ n

opencv mog2 原理

opencv mog2 原理

opencv mog2 原理OpenCV MOG2(Mixture of Gaussians)是一种常用的背景建模算法,用于视频中的移动目标检测。

MOG2算法基于高斯混合模型,能够自动学习和更新背景模型,从而准确地提取前景目标。

本文将介绍MOG2算法的原理和应用。

一、背景建模算法介绍背景建模是计算机视觉中的一项重要任务,广泛应用于视频监控、智能交通等领域。

其主要目的是从视频中提取出静态背景,以便于后续的目标检测和跟踪。

MOG2算法是背景建模算法中的一种,相比于传统的MOG算法,它具有更好的适应性和鲁棒性。

二、MOG2算法原理MOG2算法使用高斯混合模型来对每个像素的颜色进行建模,即假设每个像素的颜色值来自于多个高斯分布的混合。

通过学习像素颜色的分布,MOG2算法能够自动地建立起背景模型,并根据新的观测数据进行模型的更新。

MOG2算法的具体步骤如下:1. 初始化背景模型:对于每个像素,初始化一个包含K个高斯分布的混合模型,其中K是一个预先设定的常数。

2. 前景检测:对于每一帧输入图像,计算每个像素与其对应的背景模型之间的匹配度。

如果像素的颜色与背景模型的某个高斯分布的匹配度低于一个阈值,那么该像素被认为是前景。

3. 模型更新:对于被认为是前景的像素,更新其对应的高斯分布的参数;对于被认为是背景的像素,不进行更新。

通过这种方式,MOG2算法能够自动地适应场景变化,减少误检率。

4. 背景更新:定期对背景模型进行更新,以适应长时间运行中的光照变化和场景变化。

三、MOG2算法的优点MOG2算法相比于传统的背景建模算法具有以下优点:1. 自适应性:MOG2算法能够自动地学习和适应场景的变化,减少了手动调参的工作量。

2. 鲁棒性:MOG2算法能够处理光照变化、动态背景等复杂场景,具有更好的鲁棒性。

3. 低延迟:MOG2算法使用了基于高斯分布的建模方法,计算效率高,能够实时处理视频流。

四、MOG2算法的应用MOG2算法在视频监控、智能交通等领域得到了广泛的应用。

复杂条件下高斯混合模型的自适应背景更新

复杂条件下高斯混合模型的自适应背景更新
第 3 卷 第 7期 1
21 0 1年 7月
计 算 机 应 用
J u a fC mp trAp l Nhomakorabeaai n o r l o o ue pi t s n c o
Vo . . 1 31 No 7
J l 0 1 uy2 1
文章编号 :0 1— 0 1 2 1 )7—13 — 4 10 9 8 (0 1 0 8 1 0
di1.7 4 S ..0 7 2 1 . 13 o:0 3 2 / P J 18 .0 0 8 1 1
复 杂条 件 下 高 斯 混合 模 型 的 自适 应 背 景更 新
李明之 , 马志强 , 单 勇, 张晓燕
( 空军工程大学 电讯工程学院 , 西安 7 07 1 07)
(iin28 @ 16 em) 1 ag 87 2 .o x
Abtat nv w o ebc g u d u dt po l sb sd o asi x r Moe G M) uh a u dn s c:I i ft akr n p ae rbe ae n G us n Miue dl( M ,sc ssd e r e h o m a t
dsusd n em to a ajs dt akru du dt rt o et gtei codn et gt h atr t i se,adt e dt t dut eb cgon p a e fh e rg nacrigt t e’ca c i i c h h h e h ea t a o r o h a S r e sc r
在保证 了 目标检 测完整性的 同时, 高 了模 型对背景 变化 的适应 能力。 提
关 键 词 : 斯 混 合 模 型 ; 景 更 新 ; 动 目标 检 测 高 背 运 中图 分 类 号 : P9 . 1 T 3 14 文 献标 志 码 : A

混合高斯背景建模原理及实现

混合高斯背景建模原理及实现

一、理论混合高斯背景建模是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息(如模式数量、每个模式的均值和标准差)表示背景,然后使用统计差分(如3σ原则)进行目标像素判断,可以对复杂动态背景进行建模,计算量较大。

在混合高斯背景模型中,认为像素之间的颜色信息互不相关,对各像素点的处理都是相互独立的。

对于视频图像中的每一个像素点,其值在序列图像中的变化可看作是不断产生像素值的随机过程,即用高斯分布来描述每个像素点的颜色呈现规律【单模态(单峰),多模态(多峰)】。

对于多峰高斯分布模型,图像的每一个像素点按不同权值的多个高斯分布的叠加来建模,每种高斯分布对应一个可能产生像素点所呈现颜色的状态,各个高斯分布的权值和分布参数随时间更新。

当处理彩色图像时,假定图像像素点R、G、B三色通道相互独立并具有相同的方差。

对于随机变量X的观测数据集{x1,x2,…,x N},x t=(r t,g t,b t)为t时刻像素的样本,则单个采样点x t其服从的混合高斯分布概率密度函数:其中k为分布模式总数,η(x t,μi,t,τi,t)为t时刻第i个高斯分布,μi,t为其均值,τi,t为其协方差矩阵,δi,t 为方差,I为三维单位矩阵,ωi,t为t时刻第i个高斯分布的权重。

详细算法流程:高斯背景模型是由Stauffer等人提出的经典的自适应混合高斯背景提取方法,是一种基于背景建模的方法,它是根据视频中的每个像素在时域上的分布情况来构建各个像素的颜色分布模型,依次来达到背景建模的目的。

混合高斯背景模型是有限个高斯函数的加权和,它能描述像素的多峰状态,适用于对光照渐变、树木摇摆等复杂背景进行准确建模。

此后经过很多研究人员的不断改进,该方法目前已经成为比较常用的背景提取方法。

高斯混合背景模型参数时空领域更新方法-revised by zhou

高斯混合背景模型参数时空领域更新方法-revised by zhou
帧差法[2]使用帧间的灰度或梯度等信息进行对比,这种方法对于动态的场景具有较强的 适应性,时间较快,但是在运动较慢或者存在相邻帧重叠的情况下,一般不能提取出完整的 运动前景;光流法[3]结合了运动目标的时间和空间信息,检测的准确性较高,即使在摄像头
一基金项目:国家自然科学基金资助:60975015;重庆市科技攻关项目资助:CSTC2009AB2230 作者简介:赵红(1986-) 男,重庆人,研究生,研究方向:图像处理,计算机视觉,软件工程等。张小洪(1973-), 男,四川人,副教授,主要研究方向:数字图像处理、模式识别、人工智能、科学与工程计算、软件工程 及应用等。
图 2 像素点在空间和时间邻域系统中的联系 Fig2 The relation between pixels in the spatial and temporal neighborhoodthe relationPixel neighborhood in
space and time, the link system system
u = I (x, y, t) = {(1−ρ )ut−1+ρ Xt if ( Mi,t =1)
t
ut−1 else
σ = { 2
(1−
ρ

2 t −1
+
ρ
(
X
t
−ut

(
X
t
−ut
)
if ( M i,t =1)
t
σ
2 t −1
else
(6) (7)
ρ = αη (xt | uk ,σ k )
(8)
对于前后两帧检测出来的运动物体,由于忽视了空间像素之间的联系,常常会有很多孤 立的噪声点被当成了运动前景,或者说部分前景点被当成了背景,为了修正这样的错误,防 止其错误的累积,本文采用空间的像素信息进行修正。在高斯混合建模过程中,若某一像素 点和任何一个分布均不匹配,那么本文就把它当成一个前景点,而匹配的就称为背景点,并

高斯背景建模报告

高斯背景建模报告

每个高斯模型的所占权重 每个高斯模型的均值和标准差
混合高斯背景模型初始化
K个高斯模型的均值u: 第一个高斯模型的均值等于输入视频的第一帧对应的的像素值 或处理单位的平均值,即:
I ( x, y, l ,1) k ( x, y, l ,1) 0
其中
k 1 k 1
0 k K
其余的高斯模型只改变( x, y, f ) (1 )* wk ( x, y, f 1)
其中
kB
( I ( x, y,:, f ) | B , B )
检测结果是野点时的高斯模型参数的更新
野点指的是该像素值不符合任何一个高斯分布,此时我们把该像 素点看成是视频中出现的新情况,用这种新情况来代替第K个高 斯分布,其权重和均值以及方差都按照初始化思路确定,也就是 分配一个较小的权重,和一个较大的方差,即:
权重的初始化就是对背景的分布进行先验概率的估值,在初始化 的时候,一般将第一个高斯模型的权重取较大,其他就相应的取 值较小,即:
W k ( x, y,1) (1 W ) / ( K 1)
k 1 k 1
混合高斯背景模型初始化分析
各个高斯模型的均值由输入视频的第一帧决定,那么如果当前 像素点位置是运动对象所在区域,这是运动对象的像素值参与高 斯模型初始化过程,所以也就导致了常规的高斯模型稳定下来需 要一定的帧数;
由于视频的多模态特性,背景的像素值会在多个像素值处波动, 而这些多个像素值一帮情况下都是比较接近的,所以初始化高斯 模型时,把K-1个高斯模型的均值定义成0是不太合理的,这样的 话,由于学习速率不能太高,所以要经过很多帧之后,这K-1个 高斯分布才能趋近于背景或前景像素的分布,这段时间很有可能 就漏掉了一些运动对象。

利用混合高斯模型建立背景模型

利用混合高斯模型建立背景模型

在OpenCV 1.0中,利用混合高斯模型建立背景模型,进而实现运动目标检测的大致过程如下:CvGaussBGModel *bg_model_gauss=NULL;bg_model_gauss = (CvGaussBGModel*)cvCreateGaussianBGModel(pFrame, NULL); cvUpdateBGStatModel( pFrame, (CvBGStatModel *)bg_model_gauss );cvCopy(bg_model_gauss->background,pBkImg,0);//pBkImg为背景图像*cvCopy(bg_model_gauss->foreground,pFrImg,0);//pFrImg为前景图像*CvGaussBGModel结构体的定义如下(详细见cvaux.h):typedef struct CvGaussBGModel{CV_BG_STAT_MODEL_FIELDS();CvGaussBGStatModelParams params;CvGaussBGPoint* g_point;int countFrames;}CvGaussBGModel;#define CV_BG_STAT_MODEL_FIELDS() \int type; /*type of BG model*/ \CvReleaseBGStatModel release; \CvUpdateBGStatModel update; \IplImage* background; /*8UC3 reference background image*/ \IplImage* foreground; /*8UC1 foreground image*/ \IplImage** layers; /*8UC3 reference background image, can be null */ \int layer_count; /* can be zero */ \CvMemStorage* storage; /*storage for 揻oreground_regions?/ \CvSeq* foreground_regions /*foreground object contours*/typedef struct CvBGStatModel{CV_BG_STAT_MODEL_FIELDS();}CvBGStatModel;视频目标检测与跟踪实现代码:#include "stdafx.h"#include "cv.h"#include "highgui.h"#include <time.h>#include <math.h>#include <stdio.h>#include <string.h>// various tracking parameters (in seconds) //跟踪的参数(单位为秒)const double MHI_DURA TION = 1;//0.5s为运动跟踪的最大持续时间const double MAX_TIME_DELTA = 0.5; //最大时间增量为0.5sconst double MIN_TIME_DELTA = 0.05; //最小时间增量0.05sconst int N = 3;//const int CONTOUR_MAX_AERA = 1000;// ring image buffer 圈出图像缓冲IplImage **buf = 0;//指针的指针int last = 0;// temporary images临时图像IplImage *mhi = 0; // MHI: motion history image 运动历史图像CvFilter filter = CV_GAUSSIAN_5x5;CvConnectedComp *cur_comp, min_comp; //连接部件CvConnectedComp comp;CvMemStorage *storage; //内存存储器CvPoint pt[4]; //二维坐标系下的点,类型为整型,通常以0点为原点,有x坐标和y坐标int nCurFrameIndex = 0;// 参数:// img –输入视频帧// dst –检测结果void update_mhi( IplImage* img, IplImage* dst, int diff_threshold ){double timestamp = clock()/100.; // get current time in seconds 时间戳CvSize size = cvSize(img->width,img->height);// get current frame size,得到当前帧的尺寸int i, idx1, idx2;IplImage* silh;IplImage* pyr = cvCreateImage( cvSize((size.width & -2)/2, (size.height & -2)/2), 8, 1 ); CvMemStorage *stor;CvSeq *cont;/*先进行数据的初始化*/if( !mhi || mhi->width != size.width || mhi->height != size.height ){if( buf == 0 ) //若尚没有初始化则分配内存给他{buf = (IplImage**)malloc(N*sizeof(buf[0]));memset( buf, 0, N*sizeof(buf[0]));}for( i = 0; i < N; i++ ){cvReleaseImage( &buf[i] );buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );cvZero( buf[i] );// clear Buffer Frame at the beginning}cvReleaseImage( &mhi );mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 );cvZero( mhi ); // clear MHI at the beginning} // end of if(mhi)/*将当前要处理的帧转化为灰度放到buffer的最后一帧中*/cvCvtColor( img, buf[last], CV_BGR2GRAY ); // convert frame to grayscale/*设定帧的序号*//*last---->idx1^|||idx2<-----(last+1)%3*/idx1 = last;idx2 = (last + 1) % N; // index of (last - (N-1))th framelast = idx2;// 做帧差silh = buf[idx2];//差值的指向idx2 |idx2-idx1|-->idx2(<-silh)cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames// 对差图像做二值化cvThreshold( silh, silh, 50, 255, CV_THRESH_BINARY ); //threshold it,二值化cvUpdateMotionHistory( silh, mhi, timestamp, MHI_DURATION ); // update MHIcvConvert( mhi, dst );//将mhi转化为dst,dst=mhi// 中值滤波,消除小的噪声cvSmooth( dst, dst, CV_MEDIAN, 3, 0, 0, 0 );cvPyrDown( dst, pyr, CV_GAUSSIAN_5x5 );// 向下采样,去掉噪声,图像是原图像的四分之一cvDilate( pyr, pyr, 0, 1 ); // 做膨胀操作,消除目标的不连续空洞cvPyrUp( pyr, dst, CV_GAUSSIAN_5x5 );// 向上采样,恢复图像,图像是原图像的四倍//// 下面的程序段用来找到轮廓//// Create dynamic structure and sequence.stor = cvCreateMemStorage(0);cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor);// 找到所有轮廓cvFindContours( dst, stor, &cont, sizeof(CvContour),CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));// 直接使用CONTOUR中的矩形来画轮廓for(;cont;cont = cont->h_next){CvRect r = ((CvContour*)cont)->rect;if(r.height * r.width > CONTOUR_MAX_AERA) // 面积小的方形抛弃掉{cvRectangle( img, cvPoint(r.x,r.y),cvPoint(r.x + r.width, r.y + r.height),CV_RGB(255,0,0), 1, CV_AA,0);}}// free memorycvReleaseMemStorage(&stor);cvReleaseImage( &pyr );}int main(int argc, char** argv){//保存视频文件char szVideoSaveName[] = "F:\\VideoSave.avi"; //!将保存视频文件的名字设置成"C:\\VideoSave.avi" CvVideoWriter * pVideoWriter = NULL; //用于保存视频文件IplImage * pFrame = NULL;IplImage * pImage = NULL;IplImage* motion = 0;CvCapture* capture = 0;//if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))//capture = cvCaptureFromCAM( argc == 2 ? argv[1][0] - '0' : 0 );//摄像头为视频来源if( argc == 1)capture = cvCaptureFromA VI("1.avi" );//A VI为视频来源if( capture ){cvNamedWindow( "Motion", 1 );//建立窗口for(;;){IplImage* image;if( !cvGrabFrame( capture ))//捕捉一桢break;image = cvRetrieveFrame( capture );//取出这个帧if( image )//若取到则判断motion是否为空{if( !motion ){motion = cvCreateImage( cvSize(image->width,image->height), 8, 1 );//创建motion帧,八位,一通道cvZero( motion );//零填充motionmotion->origin = image->origin;//内存存储的顺序和取出的帧相同}}update_mhi( image, motion, 60 );//更新历史图像cvShowImage( "Motion", image );//显示处理过的图像pVideoWriter = cvCreateVideoWriter("VideoSave.avi",CV_FOURCC('M', 'J', 'P', 'G') ,10,cvSize(640,480),1); cvWriteFrame(pVideoWriter,image);//nCurFrameIndex++;//strFrameString.Format("Current Frame: %d",nCurFrameIndex);//cvPutText( image,strFrameString,cvPoint( 5,pFrame->height-15 ),&font,cvScalar( 0,255,0 ) ); cvReleaseVideoWriter(&pVideoWriter);if( cvWaitKey(10) >= 0 )//10ms中按任意键退出break;}cvReleaseCapture( &capture );//释放设备cvDestroyWindow( "Motion" );//销毁窗口}return 0;}模板匹配使用(含源码)二原理:1 函数cvMatchTemplate//功能:比较模板和重叠的图像区域//原型:void cvMatchTemplate(const CvArr* image, //欲搜索的图像。

基于高斯混合模型的视频背景建模算法优化研究

基于高斯混合模型的视频背景建模算法优化研究

基于高斯混合模型的视频背景建模算法优化研究视频背景建模算法是计算机视觉领域中的一个重要研究方向,其主要目的是对视频中的背景进行建模以便后续处理。

这种算法在许多应用场景中都有广泛的应用,例如视频监控、视频处理和图像修复等。

其中,基于高斯混合模型(GMM)的背景建模算法是一种非常常见且有效的技术。

GMM是一种用于描述数据分布的概率模型,它假设样本数据是由多个高斯分布混合而成的。

在背景建模中,GMM可以用来对背景模型进行建模,识别出前景物体并进行分割。

不过,GMM算法在实际应用中会存在一些问题,其中最主要的问题就是对于复杂场景中的背景模型建模会比较困难,且需要消耗大量的计算资源和时间。

这导致了该算法无法进行实时处理,这在一些应用场景中是不可接受的。

针对这个问题,近年来出现了许多对GMM算法进行优化的研究。

下面将介绍一些值得关注的优化研究。

1. 基于自适应学习率的算法优化自适应学习率(Adaptive Learning Rate)首先是在神经网络训练中提出的一种自适应学习方式,它可以使算法在训练过程中的收敛速度更快。

将这种学习方式应用于GMM算法中,可以有效地提高对复杂场景中的背景模型建模的准确性,并且能够更好地适应场景中的变化。

2. 基于可重构的多核处理器的算法优化可重构的多核处理器在计算机视觉中的应用越来越广泛,因为它提供了高效的计算资源。

一个团队的研究者提出了一种基于可重构的多核处理器加速GMM算法的方法,该方法充分利用了处理器的计算能力,将算法的运行时间从几秒减少到几毫秒。

3. 基于多特征图的算法优化多特征图是指从视频中提取多个角度或通道的特征图像素,例如颜色、形状、纹理等等。

这种方法可以用于优化背景建模的准确性和鲁棒性。

研究者发现,将不同的特征图像素组合在一起,可以大大提高GMM算法的准确性。

4. 基于深度神经网络的算法优化深度神经网络(Deep Neural Network,DNN)已成为计算机视觉中一个很重要的研究方向。

高斯混合背景建模程序

高斯混合背景建模程序
if(nFrmNum == 1)
{
pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,3);
pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);
cvReleaseBGStatModel((CvBGStatModel**)&bg_model);
cvDestroyWindow("video");
cvDestroyWindow("background");
cvDestroyWindow("foreground");
cvMoveWindow("foreground", 690, 0);
if( argc > 2 )
{
fprintf(stderr, "Usage: bkgrd [video_file_name]/n");
return -1;
}
return -2;
}
//初始化高斯混合模型参数
CvGaussBGModel* bg_model=NULL;
while(pFrame = cvQueryFrame( pCapture ))
{
nFrmNum++;
cvCopy(bg_model->foreground,pFrImg,0);
cvCopy(bg_model->background,pBkImg,0);

混合高斯背景建模matlab代码

混合高斯背景建模matlab代码

clear all% source = aviread('C:\Video\Source\traffic\san_fran_traffic_30sec_QVGA');source = mmreader('SampleVideo.avi');frameQYT=get(source,'NumberOfFrames');% ----------------------- frame size variables -----------------------fr = read(source,1); % 读取第一帧作为背景fr_bw = rgb2gray(fr); % 将背景转换为灰度图像fr_size = size(fr); %取帧大小width = fr_size(2);height = fr_size(1);fg = zeros(height, width);bg_bw = zeros(height, width);% --------------------- mog variables -----------------------------------C = 4; % 组成混合高斯的单高斯数目(一般3-5)M = 0; % 组成背景的数目D = 2.5; % 阈值(一般2.5个标准差)alpha = 0.01; % learning rate 学习率决定更新速度(between 0 and 1) (from paper 0.01)thresh = 0.75; % foreground threshold 前景阈值(0.25 or 0.75 in paper)sd_init = 6; % initial standard deviation 初始化标准差(for new components) var = 36 in paperw = zeros(height,width,C); % initialize weights array 初始化权值数组mean = zeros(height,width,C); % pixel means 像素均值sd = zeros(height,width,C); % pixel standard deviations 像素标准差u_diff = zeros(height,width,C); % difference of each pixel from mean 与均值的差p = alpha/(1/C); % initial p variable 参数学习率(used to update mean and sd)rank = zeros(1,C); % rank of components (w/sd)% ------initialize component means and weights 初始化均值和权值----------pixel_depth = 8; % 8-bit resolution 像素深度为8位pixel_range = 2^pixel_depth -1; % pixel range 像素范围2的7次方0—255(# of possible values)for i=1:heightfor j=1:widthfor k=1:Cmean(i,j,k) = rand*pixel_range; % means random (0-255之间的随机数)w(i,j,k) = 1/C; % weights uniformly distsd(i,j,k) = sd_init; % initialize to sd_initendendend%----- process frames -处理帧--,这里去第八帧n = 8;fr = read(source,n); % read in frame 读取帧fr_bw = rgb2gray(fr); % convert frame to grayscale 转换为灰度图像% calculate difference of pixel values from mean 计算像素差值for m=1:Cu_diff(:,:,m) = abs(double(fr_bw) - double(mean(:,:,m)));end% update gaussian components for each pixel 更新每个像素的背景模型for i=1:heightfor j=1:widthmatch = 0;for k=1:Cif (abs(u_diff(i,j,k)) <= D*sd(i,j,k)) % pixel matches component像素匹配了模型match = 1; % variable to signal component match 设置匹配记号% update weights, mean, sd, p 更新权值,均值,标准差和参数学习率w(i,j,k) = (1-alpha)*w(i,j,k) + alpha;p = alpha/w(i,j,k);mean(i,j,k) = (1-p)*mean(i,j,k) + p*double(fr_bw(i,j));sd(i,j,k) = sqrt((1-p)*(sd(i,j,k)^2) + p*((double(fr_bw(i,j)) - mean(i,j,k)))^2);else % pixel doesn't match component 几个模型中都没有匹配的w(i,j,k) = (1-alpha)*w(i,j,k); % weight slighly decreases 权值减小endendbg_bw(i,j)=0;for k=1:Cbg_bw(i,j) = bg_bw(i,j)+ mean(i,j,k)*w(i,j,k); %更新背景if(bg_bw(i,j)>thresh)k=k-1;M=k;end% 这里有问题,背景权值和大于阈值时,背景建模的数目M取k-1,end% if no components match, create new component 如果没有匹配的模型则创建新模型if (match == 0)[min_w, min_w_index] = min(w(i,j,:));mean(i,j,min_w_index) = double(fr_bw(i,j));sd(i,j,min_w_index) = sd_init;endrank = w(i,j,:)./sd(i,j,:); % calculate component rank 计算模型优先级rank_ind = [1:1:C];% calculate foreground 计算前景while ((match == 0)&&(k>M))% 这里用于前景计算的高斯模型应该是C-M,所以这里k>Mif (abs(u_diff(i,j,rank_ind(k))) <= D*sd(i,j,rank_ind(k)))fg(i,j) = 0; %black = 0elsefg(i,j) = fr_bw(i,j);endk = k+1;if(k==5)k=k-1;breakendendendendfigure(1),subplot(3,1,1),imshow(fr) %显示输入图像subplot(3,1,2),imshow(uint8(bg_bw)) %显示背景图像subplot(3,1,3),imshow(uint8(fg)) %显示前景图像。

混合高斯法和背景建模方法远景对比...

混合高斯法和背景建模方法远景对比...

并行环境下的人体行为识别和事件发现技术的研究
直方图时会将颜色空间等距离分组取值以减少计算量。

如24位的RGB图像以16000种颜色为一个区间。

本文在进行颜色直方图匹配的时候使用的是欧式距离作为相似性的度量。

计算公式如下:
ⅨⅣ,加=(3-16)
其中Ⅳ是待匹配图像,M图像模型。

则当双Ⅳ'加<丁,T为一个阈值的时候,表明Ⅳ与M的颜色直方图相匹配。

由于在视频中,人体由于动作的变化,轮廓、纹理等特征会不断地变化,然而对于同一个人体,在相邻的帧之间,其颜色的分布情况是不会有太大的变化的,因此本文在跟踪算法中引入颜色直方图的匹配。

3.5.3跟踪算法具体描述与流程
本文所应用的跟踪算法的具体描述如下:
1在第一帧时进行背景初始化,并进行背景减除,得到前景图像,检测
出运动目标。

2当图像不是第1帧的时候对于第一个进入画面的目标连通域进行目标模型的初始化,记录下它的质心位置,进行颜色直方图特征的提取,并赋予它目标标号0。

3检测目标,对检测到的目标进行如下处理:计算当前目标的质心位置和颜色直方图,与之前保存的目标模型进行匹配。

4当目标与某个模型满足质心路径连贯,那么匹配颜色直方图,如果匹配的话赋予当前目标这个模型的目标标号,并以当前目标为模板进行这个模型的更新和保存,如果不匹配的话,继续与之前保存的模型进行匹配,直到找到具有路径连贯性且颜色直方图匹配的模型并进行更新。

5如果当前的模型与之前所保存的目标模型均无法匹配,则判定此目标为新的目标,赋予这个目标此前最大目标标号加一的目标标号,并进行新目标的模型初始化并保存。

6如果某个保存的模型30帧内一直都没有检测到目标与之匹配,则将其删除。

混合高斯背景建模理解(原创)

混合高斯背景建模理解(原创)

混合⾼斯背景建模理解(原创)⽬前,基于⼆值化图像提取运动⽬标仍具有⼴泛的应⽤。

但是,在提取运动⽬标之前必须进⾏背景建模。

背景建模的⽅法很多,如平均法,最⼤值最⼩值统计法,单⾼斯建模法,加权平均法等,⽽混合⾼斯背景建模应该来说是⽐较成功的⼀种。

为什么这么说呢?机器视觉算法提取运动⽬标⾯临的基本问题:图像抖动,噪声⼲扰,光线变化,云飘动,阴影(包括⽬标阴影和区域外物体阴影),区域内部反光(如⽔⾯,显⽰器),运动⽬标缓慢移动等。

那我们来看看,混合⾼斯背景建模是怎么解决这些问题的?从混合⾼斯模型的原理⼀看便知。

混合⾼斯模型的原理 图像中每个像素点的值(或特征)短时间内都是围绕与某⼀中⼼值⼀定距离内分布,通常,中⼼值可以⽤均值来代替,距离呢可以⽤⽅差来代替。

这种分布呢是有规律的,根据统计定律,如果数据点⾜够多的话,是可以说这些点呈正态分布,也称为⾼斯分布(取名⾼斯,⼤概是因为很多地⽅都⽤这个名字吧)。

根据这个特点,如果像素点的值偏离中⼼值较远,那么,这个像素值属于前景,如果像素点的值偏离中⼼值很近(在⼀定⽅差范围内),那么可以说这个点属于背景。

理论上,如果不存在任何⼲扰的话,是可以准确区分前景和背景的。

但是,现实往往不尽如⼈意,如果画⾯中光线变化的话,这个⾼斯分布的中⼼位置是会改变的。

如果光线强度改变的话,在原来那个位置并没有⽆数个点供统计,因此,不符合⼤数定理,也就不能说那个点的分布满⾜正态分布了,只能说是近似为⾼斯分布。

混合⾼斯模型指这个像素点值存在多个中⼼位置,如来回摆动的树叶,波光粼粼的⽔⾯,闪烁的显⽰器,图像中特征边缘位置的抖动等,这些都会引起某个像素点会在多个中⼼位置聚集⼤量的点,每个位置便会产⽣⼀个⾼斯分布,四个以上的⾼斯分布其实并不常见,这便是混合⾼斯模型的由来。

混合⾼斯背景建模主要⽤来解决背景像素点具有多峰特性的场合,如在智能交通场景中,解决视频画⾯抖动带来的⼲扰。

针对光线变化的问题,混合⾼斯模型通过⽐较当前像素点的值与⾼斯分布中⼼位置,选择⼀定的加权系数对当前⾼斯分布的中⼼位置进⾏更新,以便于适应缓慢的光线变化。

一种新的背景模型建立及更新方法

一种新的背景模型建立及更新方法

一种新的背景模型建立及更新方法背景模型是计算机视觉和图像处理中的重要概念,它用于分离图像或视频中的前景对象和背景。

传统的背景模型建立方法主要基于统计特征,比如背景像素强度平均值和方差。

然而,这些方法在面对复杂的场景或环境变化时效果有限。

近年来,学者们提出了一种新的背景模型建立及更新方法,基于自适应混合高斯模型(Gaussian Mixture Model,GMM)的方法。

这个方法通过对图像中的每个像素建立一个高斯分布模型来描述背景,然后使用最大似然估计方法更新模型参数。

具体而言,该方法在每一帧图像中对每个像素的像素值进行建模,并在模型过程中对像素值进行分类。

根据像素值与模型参数的差异将像素分为前景和背景两类,从而得到最佳背景模型。

同时,为了适应动态背景或者光照变化等情况,该方法使用指数加权移动平均的方式进行背景模型的更新,使得模型可以自适应地适应环境变化。

这种新的背景模型建立及更新方法相比传统方法具有以下优势:首先,该方法能够自适应地建立背景模型,适应复杂的场景或环境变化。

在传统方法中,背景模型通常使用背景像素的平均值和方差来描述,这样无法处理非静态的背景或者光照变化等情况。

而基于GMM的方法能够根据每个像素的实际情况进行建模和更新,更加准确地描述背景的统计特征。

其次,该方法具有较高的鲁棒性和稳定性。

由于模型是实时更新的,能够通过对当前观测进行统计学习和自适应调整,使得模型更加准确和稳定。

这在复杂的场景中尤为重要,传统的背景建模方法常常难以应对复杂的场景变化,导致误检和误报。

此外,该方法还能够自动分割图像或视频中的前景和背景,并提供高精度的前景目标检测结果。

通过将像素进行分类,可以很容易地提取前景对象,并进行进一步的图像处理和分析。

总之,基于GMM的背景模型建立及更新方法是一种有效且可靠的机器视觉方法,具有适应性强、鲁棒性高和分割效果好等优点。

这种方法在许多应用中已经得到了广泛的应用,比如智能监控、行人检测、交通流量统计等。

基于混合高斯模型的Mean-Shift模板更新算法

基于混合高斯模型的Mean-Shift模板更新算法

基于混合高斯模型的Mean-Shift模板更新算法
肖思兴;洪景新;谢小竹
【期刊名称】《计算机应用与软件》
【年(卷),期】2009(26)3
【摘要】针对基于Mean-Shift目标跟踪算法中遇到的不能对模板进行实时更新的问题,提出一个基于混合高斯背景建模的目标模板更新算法.该算法将目标视为背景,对目标中的每一个像素点利用三个高斯函数对它进行建模,利用每次Mean-Shift跟踪到的目标区域来对先前建立的混合高斯模型进行实时更新,将混合高斯模型得到的目标模板作为下一帧跟踪的目标模板.该算法较好地解决了基于Mean-Shift算法的模板更新问题,实验证明该算法是有效的.
【总页数】4页(P234-236,271)
【作者】肖思兴;洪景新;谢小竹
【作者单位】厦门大学计算机科学系,福建,厦门,361005;厦门大学计算机科学系,福建,厦门,361005;厦门大学计算机科学系,福建,厦门,361005
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于模板更新的自适应Mean-shift跟踪算法 [J], 李勇勇;谭毅华;田金文
2.基于Mean-shift与Kalman算法相结合的动态目标跟踪算法研究 [J], 梁广颖
3.复杂背景下基于自适应模板更新的目标跟踪算法研究 [J], 韩锐;邓惠俊;徐静
4.基于自适应模板更新的改进孪生卷积网络目标跟踪算法 [J], 柳赟;孙淑艳
5.基于自适应模板更新与多特征融合的视频目标分割算法 [J], 汪水源;侯志强;王囡;李富成;蒲磊;马素刚
因版权原因,仅展示原文概要,查看原文内容请购买。

一种基于混合高斯的快速背景更新方法

一种基于混合高斯的快速背景更新方法

一种基于混合高斯的快速背景更新方法
徐伟;谢正光;张辉;马文萱
【期刊名称】《电视技术》
【年(卷),期】2014(38)15
【摘要】针对传统混合高斯模型对场景的突然变化不能实时更新和RunningAvg 更新算法中容易产生拖影的问题,提出了一种快速背景更新方法.首先建立混合高斯和RunningAvg两幅背景,基于它们的二值化差分图像DB获取变化区域;将DB与前景二值化图像FB进行逻辑“与”以准确提取变化区域,消除拖影对目标提取的影响.然后根据变化区域的变化情况,用状态表中所记录的变化区域信息对背景模型的变化区域进行有选择的更新,减少了背景模型对变化区域的更新时间.实验结果表明,该方法不仅能对场景的突然变化具有很强的适应性,而且避免了拖影现象和物体短暂停留所造成的干扰.
【总页数】5页(P240-243,276)
【作者】徐伟;谢正光;张辉;马文萱
【作者单位】南通大学电子信息学院,江苏南通226019;南通大学电子信息学院,江苏南通226019;南通大学电子信息学院,江苏南通226019;南通大学电子信息学院,江苏南通226019
【正文语种】中文
【中图分类】TN911.73
【相关文献】
1.一种基于标准混合高斯模型的快速人脸检测方法 [J], 胡春华;马旭东;戴先中;钱堃
2.一种基于高斯混合模型的快速水平集图像分割方法 [J], 程相康;朱宏擎
3.一种基于历史背景的混合高斯背景建模算法∗ [J], 肖进胜;刘婷婷;张亚琪;彭红;鄢煜尘
4.基于风险决策与混合高斯背景模型的前景目标突变快速检测 [J], 闫英战;杨勇
5.一种改进的基于码本和高斯混合模型的视频背景分离 [J], 詹敏;邹小波
因版权原因,仅展示原文概要,查看原文内容请购买。

混合高斯模型算法原理

混合高斯模型算法原理

混合高斯模型算法原理混合高斯模型是一种经典的背景建模算法,用于背景相对稳定情况下的运动目标检测。

它由单高斯模型发展而来,对于多模态的背景有一定的鲁棒性,如:树叶晃动、水纹波动等。

在介绍混合高斯模型前,首先介绍单高斯模型。

1. 单高斯背景模型:单高斯模型将图像中每一个像素点的颜色值看成是一个随机过程,并假设该点的像素值出现的概率服从高斯分布。

该算法的基本原理就是对每一个像素位置建立一个高斯模型,模型中保存该处像素的均值和方差。

如,可设),(y x 处像素的均值为),(y x u ,方差为),(2y x σ,标准差为),(y x σ。

由于随着视频图像序列的输入,模型参数不断更新,所以不同时刻模型参数有不同的值,故可将模型参数表示为三个变量t y x ,,的函数:均值),,(t y x u 、方差),,(2t y x σ、标准差),,(t y x σ。

用单高斯模型进行运动检测的基本过程包括:模型的初始化、更新参数并检测两个步骤。

1)模型初始化模型的初始化即对每个像素位置上对应的高斯模型参数进行初始化,初始化采用如下公式完成:⎪⎩⎪⎨⎧===init std y x init std y x y x I y x u _)0,,(_)0,,()0,,()0,,(22σσ (1)其中,)0,,(y x I 表示视频图像序列中的第一张图像),(y x 位置处的像素值,init std _为一个自己设的常数,如可设20_=init std 。

2)更新参数并检测每读入一张新的图片,判断新图片中对应点像素是否在高斯模型描述的范围中,如是,则判断该点处为背景,否则,判断该点处为前景。

假设前景检测的结果图为output ,其中在t 时刻),(y x 位置处的像素值表示为),,(t y x output ,),,(t y x output 的计算公式如下:⎩⎨⎧-⨯<--=otherwise t y x t y x u t y x I t y x output ,1)1,,()1,,(),,(,0),,(σλ (2)其中,λ是自己设的一个常数,如可设5.2=λ。

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

计算机学院专业实习报告专业名称计算机科学与技术实习题目基于多摄像机协同的运动对象分割与三维重建系统之背景建模与运动前景分割姓名李林班级10010804 学号2008302499实习时间指导教师杨涛Northwestern Polytechnical University2010年7月14日目录摘要 (1)第一章基本原理 (2)1.1高斯模型原理 (2)1.2 混合高斯背景建模与更新 (3)1.2.1 背景训练 (4)1.2.2 模板匹配 (4)1.2.3背景更新 (5)第二章运动物体提取 (6)2.1目标提取概述 (6)2.2 提取过程 (6)2.2.1 参数设置 (6)2.2.2 模型建立 (7)2.2.3 背景学习 (7)2.2.4 模板匹配与背景更新 (9)第3章其他增强效果算法 (10)3.1阴影的检测和去除 (10)3.1.1 阴影简介 (10)3.1.2 阴影检测法 (11)3.1.2 阴影去除 (13)3.2形态学滤波 (14)3.2.1 图像腐蚀与膨胀 (15)3.2.2 开运算和闭运算 (16)第四章最终成品 (18)4.1 成品说明 (18)4.1.1性能说明 (18)4.1.2成品样式 (19)4.1.3使用说明 (19)第五章实习心得 (19)摘要背景建模与运动前景分割是指从视频或者连续的图像序列中将运动的区域分割出来,本次实行所需的运动物体提取只是用来为后面的形成3维图形提供图像数据,日常生活中视频监控系统已广泛应用于各大公共场所,如公司,机场,酒店等都备有监控系统。

但对于大多数监控系统来说,都需要监控者保持对监控录像的观测。

如何实现视频监控系统的自动监控,是近年来比较关注的问题。

自动视频监控技术其主要内容之一就是能监视某一特定场景中的新目标的出现,首先检测视频序列图像中是否有变化,如图像变化,说明有新目标出现,则把这个目标从视频图像序列中分割提取出来,为下一步的目标识别和跟踪提取数据提供基础。

因此,一个视频监控系统的好坏,运动目标能否良好的提取是非常关键的。

目前运动目标的提取已经取得很多成果,并且不断有新技术、新方法出现。

但是,在实际应用中,由于自然环境复杂,目标机动性高,使得提取与跟踪时干扰因素多,提取不准确且匹配效率不高。

要提高跟踪的精度需要对复杂环境下的目标提取和跟踪进行研究,但到目前为止,仍没有一种普遍适用、比较完善的方法,因此对这两方面作进一步研究仍有很大空间。

针对本次实习的特殊场景,经分析决定采用混合高斯模型对运动图像进行提取,弥补单高斯模型不能适应背景微变化的这一缺陷,例如光照明暗、阴影等变化。

利用混合高斯模型对输入的视频进行学习,之后再对运动物体进行前景提取,形成二值图像,运动物体置为白色,背景值为黑色,由于在提取过程中会存在这一些噪声点,所以最后运用腐蚀与膨胀运算对图像进行去噪处理。

最终设计完形成的图像预计效果为能基本提取出运动物体,可能遇到较为复杂的背景会存在一定的噪声。

目前,从现有的测试数据来看程序能基本提取出运动物体,基本达到了预定的效果,在设计之中起初运用了帧间差分法,测试数据背景较为简单时能基本提取前景,但换成了光照发生变化的背景后运动物体的提取有明显难以改善的噪声,之后考虑更改算法,现有的算法中,光流法效果较为明显,但其算法较为复杂,不适合本次实习的开发,其次较为合适的还有单高斯模型,但其由于在变化的场景中表现不是很好,所以最终确定为采用混合高斯模型,GMM(Gaussian Mixture Model),高斯混合模型,是由Chris Stauffer 等人提出将其作为背景的统计模型,为同一场景中不同状态建立不同的高斯模型。

该算法较其它的算法(如光流法,帧差法等)有良好的自适应性。

本文采用了简化的GMM 对视频图像序列进行建模,并实现了对视频中的运动前景进行提取的效果。

本次实习的难点在于对于混合高斯模型算法的理解以及其参数的调试,不过经过两周的实习已对其有了一定的了解,总了来说较为圆满的完成了实习的任务。

第一章基本原理1.1高斯模型原理高斯分布,也称为正态分布。

是伟大的数学家高斯(Gauss)与1809 年在研究误差理论时推导出来的。

对于随机变量x,其概率密度为(1)其中μ 为高斯分布的期望,σ 为高斯分布的方差。

如果一组数据符合高斯分布,那么这种数据中的大多数会集中在以μ 为中心的-2σ 到2σ 范围内的这段区间里。

其函数分布曲线如图1 所示。

图1 高斯分布示意图在日常生活中,很多事件都是符合高斯分布的。

对于某一场景中的视频图像,如果其背景相对静止,没有扰动因素,那么背景中的每个像素点在一段时间序列中的排列就可以用一个高斯分布来描述。

但是在实际中,尤其是对于室外的场景,由于各种噪声的干扰,其背景变化是比较大的,会出现树枝摇动,光线变化等不同情况。

因此用一个高斯分布就不能来完全描述实际的背景情况。

这种情况下就需要采用多个高斯模型来描述动态的背景,为不同的状态建立不同的高斯模型。

将k 定义为建立的高斯模型的数目,那么当前观测点的像素值的概率密度为:(2)其中, i t w, 是每个单高斯模型的权值, i,t−1,k μ为第i个单高斯模型的均值, i,t −1,k σ为第i个单高斯模型的方差。

1.2 混合高斯背景建模与更新在采集的视频图像中是包含彩色分量的,一些应用中则使用了协方差的方法来进行计算,这种方法计算量大但效果提升不高,不适合实时性的要求。

因此,本算法中直接简化了这一过程,将彩色图像转为灰度图的方法来进行高斯混合建模。

根据场景的复杂程度,高斯模型的数量k 可以取值为3~7 个,k 值越大,其能表征的场景就越复杂,但相应的计算量也增大。

因此本算法中取k 值为3。

采用GMM 进行背景建模主要包含3 个步骤:背景训练,模板匹配及背景更新的过程。

1.2.1 背景训练首先对一段帧数的视频进行训练,通过训练帧中所得到模型计算出均值,方差和权重等各参数来从作为背景模型的参数。

在训练过程中,不必对每个高斯模型都进行确定,如果对于某一像素点来说,在训练时间内其灰度值变化不大,即其一个到两个高斯模型内就已经能包含图像中90%以上的像素值,那么可直接将有较大的方差和较小的权值的参数赋予其他模型。

本算法中将方差设为11,权值初始设置设为1。

通过对背景的训练,可以消除背景中的扰动因素,以避免将运动物体视为背景模型,训练帧数越长,所得到的背景模型越精确,但一般训练时间不超过50 帧,否则会影响整系统的启动时间。

1.2.2 模板匹配得到了背景模型后,通过模板匹配来进行前景分割。

在进行模板匹配前,首先要对混合高斯模型中的三个单高斯模型进行降序排序,判断那个高斯模型最有可能与背景图像进行匹配。

由于静态区域的点会比动态区域点的方差小,且运动物体出现会导致模型更新后该单高斯模型的权值降低,因此权值越大,方差越小,匹配度越高。

通过公式:dist<fTb*var (3)对混合模型中的各单个高斯模型进行优先级高低的排序后在进行匹配,其中dist 为马氏距离、fTb表示一阀值,var为模板中的方差。

如果当前帧的像素值与所有的高斯分布模型都不匹配,则可以判断该点为前景点,但找到匹配的高斯模型后,还不能就将其判断为背景点。

因为背景模型中还是可能包含一定的噪声和干扰因素,并不是所有的高斯模型能完全代表背景。

但由于噪声等干扰因素不会在图像中长时间停留在某一位置,其相对应的权值就应该很小。

在对高斯模型排序的过程中,需设定一个权值阀值T。

如果排序后所得到的第一个高斯模型的权值大于该阀值,则 B 为1,否则,按顺序累加各高斯模型的权值,只到其权值大于该阀值,并将该高斯模型序号赋给B。

其中 B 的定义如下:(4)T为为一阀值,这里设为0.9。

在上面进行匹配成功的模型中,如果该匹配模型号小于B 值为背景,否则为前景。

1.2.3背景更新由于场景中环境的不断变化,通过训练建立好的背景模型不可能适应新的背景的需要,因此,需要对背景进行实时更新,以保证前景提取的正确性。

在背景模型更新过程中,引入了学习率alpha 这一概率。

当学习率取值比较小,其适应环境变化的能力就低,需要给足够的时间才能更新背景模型。

相反,当alpha 取值较大时,其对场景的适应性较强,能很快的变化背景模型,但是对于一段时间内停留的场景中的目标,却很容易学入背景中去。

针对这种情况,算法对学习率进行调整,在图像中的不同处设定不同的学习速率,以保证场景变化的需要。

学习率的变化范围应该在0~1 之间。

对k 个高斯模型进行更新,也就是对混合高斯模型中的三个参数,即权值,均值和方差进行调整。

其权值的更新算法如下:weight=(1-alpha)*weight+alpha*fCT+alpha*MfCT为一参数,M 为匹配度,对于匹配上的模型取值为1,否则取值为0。

可见当像素点与高斯模型不匹配时,其权值会降低。

对于匹配上的i 个高斯模型,需对均值和方差进行更新。

更新算法如下:未匹配的模型,其均值和方差都保持不变。

如果对于当前点的像素值,其与所有的高斯分布模型都不匹配,则新建立一个高斯分布将混合高斯模型中排序最后一个的高斯模型替换掉,同样该分布应选取较大的方差和较小的权值,而其均值则设为当前像素点的值。

第二章运动物体提取2.1目标提取概述目标提取方法分为两种:一种是静态背景下的目标提取,另一种动态背景下的目标提取。

前一种情况通常发生在摄像头相对静止状态,后一种情况是摄像头发生相对运动的状态。

这里只讨论静态背景下的目标提取技术。

目前,运动提取算法主要有图像帧间差分法、光流法、背景减除法等。

尽管在针对不同的场景采用的算法可能存在差别,但其基本过程都如下图:2.2 提取过程2.2.1 参数设置在程序中有关混合高斯模型的参数有以下需要设置:图像的宽度:Width图像的高度:Height每个像素点最大高斯数目:nM每个新高斯模型的初始方差:Sigma高斯模型更新的学习率:Alpha公式(4)中的阀值:fCT用来更新和生成新高斯模型的阀值:fTg2.2.2 模型建立图像为24位色,其中的每个像素点都是由RGB颜色控件表示,所以每个高斯模型设置如下的数据存储结构:其中sigma表示为方差,muR、muG、muB分别表示RGB三色值的均值,weight表示每个模型在混合模型中权数。

在建立模型时首先获得图像的尺寸,为数据申请内存,之后先为每个像素点创建一个高斯模型,期中sigma的赋值为以初始化值,这里设置为11,muR、muG、muB均为第一张图像中每像素点的RGB值,由于每个像素点均只建立了一个模型,所以每个模型的weight都设为1.2.2.3 背景学习学习过程即为每个像素点更新高斯模型或者建立新的高斯模型,确定其参数,学习的好坏直接影响到后面运动物体提取的好坏,一般设置学习帧数不超于50帧,否则影响到程序启动的速度,在本次实习中,设置学习帧数为9帧,学习函数如下:void GMMForeground::Train(IplImage* Frame)输入一帧图像,以更新模型数据。

相关文档
最新文档