混合高斯模型

上传人:re****.1 文档编号:507753705 上传时间:2023-10-14 格式:DOCX 页数:3 大小:11.57KB
返回 下载 相关 举报
混合高斯模型_第1页
第1页 / 共3页
混合高斯模型_第2页
第2页 / 共3页
混合高斯模型_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《混合高斯模型》由会员分享,可在线阅读,更多相关《混合高斯模型(3页珍藏版)》请在金锄头文库上搜索。

1、混合高斯模型跟高斯变量之和看起来有一点像,注意不要把它们弄混淆了.混合高斯模型给出的概率密度 函数实际上是几个高斯概率密度函数的加权和:计算均值和方差的公式不仅适用于几个(多维)高斯分布混合的情况,还适用于非高斯分布的情况.高斯变量之和就没什么好说的了,几个高斯变量之和是一个新的高斯变量.原理:高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干 的基于高斯概率密度函数(正态分布曲线)形成的模型。对图像背景建立高斯模型的原理及过程:图像灰度直方图反映的是图像中某个灰度值出现的频次,也可 以认为是图像灰度概率密度的估计。如果图像所包含的目标区域和背景区域相比比较大,

2、且背景区域和目 标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一 个峰对应于背景的中心灰度。对于复杂的图像,尤其是医学图像,一般是多峰的。通过将直方图的多峰特 性看作是多个高斯分布的叠加,可以解决图像的分割问题。在智能监控系统中,对于运动目标的检测是中心内容,而在运动目标检测提取中,背景目标对于目标的 识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。我们首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为 前景。建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。即利用当前帧 和视频

3、序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的 建模后的背景并非十分干净清晰,而高斯混合模型是是建模最为成功的方法之一。混合高斯模型使用K (基本为3到5个)个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后 更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点,否则 为前景点。通观整个高斯模型,主要是有方差和均值两个参数决定,对均值和方差的学习,采取不同的学 习机制,将直接影响到模型的稳定性、精确性和收敛性。由于我们是对运动目标的背景提取建模,因此需 要对高斯模型中方差和均值两个参数实时更新。为提高模型的学

4、习能力,改进方法对均值和方差的更新采用 不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并 实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。到这里为止,混合高斯模型的建模基本完成,我在归纳一下其中的流程,首先初始化预先定义的几个 高斯模型,对高斯模型中的参数进行初始化,并求出之后将要用到的参数。其次,对于每一帧中的每一个 像素进行处理,看其是否匹配某个模型,若匹配,则将其归入该模型中,并对该模型根据新的像素值进行 更新,若不匹配,则以该像素建立一个高斯模型,初始化参数,代理原有模型中最不可能的模型。最后选 择前面几个最有可

5、能的模型作为背景模型,为背景目标提取做铺垫。目前,运动物体检测的问题主要分为两类,摄像机固定和摄像机运动。对于摄像机运动的运动物体检测问 题,比较著名的解决方案是光流法,通过求解偏微分方程求的图像序列的光流场,从而预测摄像机的运动 状态。对于摄像机固定的情形,当然也可以用光流法,但是由于光流法的复杂性,往往难以实时的计算, 所以我采用高斯背景模型。因为,在摄像机固定的情况下,背景的变化是缓慢的,而且大都是光照,风等 等的影响,通过对背景建模,对一幅给定图像分离前景和背景,一般来说,前景就是运动物体,从而达到 运动物体检测的目的。单分布高斯背景模型单分布高斯背景模型认为,对一个背景图像,特定像素

6、亮度的分布满足高斯分布,即对背景图像B,(x,y) 点的亮度满足:旧(x,y) N(u,d)这样我们的背景模型的每个象素属性包括两个参数:平均值u和方差d。对于一幅给定的图像G,如果Exp(-(IG (x,y)-u(x,y2/(2*dA2) T,认为(x,y)是背景点,反之是前景点。同时,随着时间的变化,背景图像也会发生缓慢的变化,这时我们要不断更新每个象素点的参数u(t+1,x,y) = a*u(t,x,y) + (1-a)*I(x,y)这里,a称为更新参数,表示背景变化的速度,一般情况下,我们不更新d (实验中发现更不更新d, 效果变化不大)。高斯混合模型是用于背景提取的方法,OpenCV

7、的cvaux中cvbgfg_gaussmix.cpp文件根据文献”An improved adaptive background mixture model for real-time tracking with shadow 中提供的方法编写了高 斯混合模型函数。其中定义了 CvGaussBGModel类用于存放高斯混合模型的各个参数。我用OpenCV使 用高斯混合模型函数分以下几步:1。需要用到 icvUpdateGaussianBGModel,icvReleaseGaussianBGModel 两个函数,但是源程序中 将这两个函数定义为内部函数,需要做一些修改,首先将cvbgfg_gau

8、ssmix.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。最后在 cvau

9、x.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 );程序修改完毕

10、,点rebuild all,全部重新编译。2。在程序初始化部分定义高斯混合模型参数CvGaussBGModel* bg_model=NULL;在读取第一帧图像 (背景图像)时,进行高斯背景建模 bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(image,0);image可以是灰度图象也可以是彩色图像。接下来再读取当前帧时,更新高斯模型regioncount=icvUpdateGaussianBGModel(currframe, bg_model );regioncount 的含义我不确定,我 理解是代表背景中不同颜色区域的个数,这个参数我

11、没有用到,它只是icvUpdateGaussianBGModel函数 的返回值。3。现在bg_model已经保存了经过高斯混合模型分类后的结果,bg_model-background保存了背景 图像,bg_model-foreground保存了前景图像。include #include #include #include int main( int argc, char* argv )( IplImage* pFrame = NULL; IplImage* pFrImg = NULL;IplImage* pBkImg = NULL; CvCapture* pCapture = NULL; cv

12、NamedWindow(fore ground,1); cvMoveWindow(background, 360, 0); cvMoveWindow(foreground, 690, 0);( fprintf(stderr, Usage: bkgrd video_file_namen); if( !(pCapture = cvCap tureFromFile(argv1) ( fprintf(stderr, Can not open video file %sn, argv1);if( !(pCapture = cvCaptureFromCAM(-1) ( fprintf(stderr, Ca

13、n not open camera.n ); CvGaussBGModel* bg_model=NULL; while(pFrame = cvQueryFrame( pCapture )( nFrmNum+;( pBkImg = cvCreateImage(cvSize(pFrame-width, pFrame-height), IPL_DEPTH_8U,3); pFrImg = cvCreateImage(cvSize(pFrame-width, pFra me-height), IPL_DEPTH_8U,1); bg_model = (CvGaussBGModel*)cvCreateGau

14、ssianBGModel (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); cvDestroyWindow(foreground); cvReleaseImage(&pFrImg); cvReleaseImage(&pBkImg); c vReleaseCapture(&pCapture);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号