高斯混合模型(Gaussian Mixture Model,简称GMM)是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。通俗点讲,无论观测数据集如何分布以及呈现何种规律,都可以通过多个单一高斯模型的混合进行拟合。


1、对图像背景建立高斯模型的原理:

图像灰度直方图反映的是图像中某个灰度值出现的频次,也可以以为是图像灰度概率密度的估计。如果图像所包含的目标区域和背景区域相差比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。对于复杂的图像,尤其是医学图像,一般是多峰的。通过将直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。在智能监控系统中,对于运动目标的检测是中心内容,而在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。

我们首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。即利用当前帧和视频序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而高斯混合模型(GMM,Gaussian mixture model)是建模最为成功的方法之一,同时GMM可以用在监控视频索引与检索。

混合高斯模型使用K(基本为3到5个) 个高斯模型来表征图像中各个像素点的特征(以第一帧为背景帧),在新一帧图像获得后更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点, 否则为前景点。通观整个高斯模型,他主要是有方差和均值两个参数决定,对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。为提高模型的学习能力,改进方法对均值和方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。

GMM之所以能够将前景和背景分开是基于如下两点事实的:

(1)在长期观测的场景中,背景占大多数时间,更多的数据是支持背景分布的

(2)即使是相对颜色一致的运动物体也会比背景产生更多变化,况且一般情况下物体都是带有不同颜色的。

2.混合高斯背景建模算法流程

1.每个新像素值Xt同当前K个模型按下式进行比较,直接找到匹配新像素值的分布模型,即同该模型的均值偏差在2.5σ内:
2.如果所匹配的模式符合背景要求,则该像素属于背景,否则属于前景。
3.各个模式权值按如下方式进行更新,其中a是学习速率,对于匹配的模式Mk,t=1,否则Mk,t=0,然后各模式的权重进行归一化:
4.未匹配模式的均值μ和标准差σ不变,匹配模式的参数按照如下更新:

5.如果,第一步中没有任何模式匹配,则权重最小的模式被替换,即该模式的均值为当前像素值,标准差为初始较大值,权重为较小值。
6.各模式根据w/a^2按降序排列,权重大、标准差小的模式排列在前。
7.选前B个模式作为背景,B满足下式,参数T表示背景所占的比例:
                                  
参考:
http://blog.csdn.net/shenziheng1/article/details/60883147
http://blog.csdn.net/jinshengtao/article/details/26278725
https://baike.baidu.com/item/高斯混合模型/8878468

参考代码(MATLAB、未验证)
  1. %Author: Ziheng H. Shen @Tsinghua Univ.
  2. %HybridGaussModel @Digital Image Process Practice
  3. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. clc;
  5. clear all;
  6. cntFrame = 23;
  7. obj = VideoReader('768x576.avi');
  8. numFrames = obj.NumberOfFrames;
  9. for k = 1 : cntFrame
  10. frame = read(obj,k);
  11. imwrite(frame,...
  12. strcat('C:\Users\Zi-Heng Shen\Documents\MATLAB\BackGroundModel\混合高斯背景建模\',...
  13. num2str(k),'.bmp'),'bmp');
  14. end
  15. %% 参数定义及初始化
  16. I = imread('1.bmp');                    %读入第一帧作为背景帧
  17. fr_bw = I;
  18. [height,width] = size(fr_bw);           %求每帧图像大小
  19. width = width/3;                        %排除颜色通道数
  20. fg = zeros(height, width);              %定义前景和背景矩阵
  21. bg_bw = zeros(height, width);
  22. C = 3;                                  % 单高斯模型的个数(通常为3-5)
  23. M = 3;                                  % 代表背景的模型个数
  24. D = 2.5;                                % 偏差阈值
  25. alpha = 0.01;                           % 学习率
  26. thresh = 0.25;                          % 前景阈值
  27. sd_init = 15;                           % 初始化标准差
  28. w = zeros(height,width,C);              % 初始化权重矩阵
  29. mean = zeros(height,width,C);           % 像素均值
  30. sd = zeros(height,width,C);             % 像素标准差
  31. u_diff = zeros(height,width,C);         % 像素与某个高斯模型均值的绝对距离
  32. p = alpha/(1/C);                        % 初始化p变量,用来更新均值和标准差
  33. rank = zeros(1,C);                      % 各个高斯分布的优先级(w/sd)
  34. pixel_depth = 8;                        % 每个像素8bit分辨率
  35. pixel_range = 2^pixel_depth -1;         % 像素值范围[0,255]
  36. for i=1:height
  37. for j=1:width
  38. for k=1:C
  39. mean(i,j,k) = rand*pixel_range;     %初始化第k个高斯分布的均值
  40. w(i,j,k) = 1/C;                     % 初始化第k个高斯分布的权重
  41. sd(i,j,k) = sd_init;                % 初始化第k个高斯分布的标准差
  42. end
  43. end
  44. end
  45. for n = 1:cntFrame
  46. frame=strcat(num2str(n),'.bmp');
  47. I1 = imread(frame);  % 依次读入各帧图像
  48. fr_bw = I1;
  49. % 计算新像素与第m个高斯模型均值的绝对距离
  50. for m=1:C
  51. u_diff(:,:,m) = abs(double(fr_bw(:,:,m)) - double(mean(:,:,m)));
  52. end
  53. % 更新高斯模型的参数
  54. for i=1:height
  55. for j=1:width
  56. match = 0;                                       %匹配标记;
  57. for k=1:C
  58. if (abs(u_diff(i,j,k)) <= D*sd(i,j,k))       % 像素与第k个高斯模型匹配
  59. match = 1;                               %将匹配标记置为1
  60. % 更新权重、均值、标准差、p
  61. w(i,j,k) = (1-alpha)*w(i,j,k) + alpha;
  62. p = alpha/w(i,j,k);
  63. mean(i,j,k) = (1-p)*mean(i,j,k) + p*double(fr_bw(i,j));
  64. sd(i,j,k) =   sqrt((1-p)*(sd(i,j,k)^2) + p*((double(fr_bw(i,j)) - mean(i,j,k)))^2);
  65. else                                         % 像素与第k个高斯模型不匹配
  66. w(i,j,k) = (1-alpha)*w(i,j,k);           %略微减少权重
  67. end
  68. end
  69. bg_bw(i,j)=0;
  70. for k=1:C
  71. bg_bw(i,j) = bg_bw(i,j)+ mean(i,j,k)*w(i,j,k);
  72. end
  73. % 像素值与任一高斯模型都不匹配,则创建新的模型
  74. if (match == 0)
  75. [min_w, min_w_index] = min(w(i,j,:));      %寻找最小权重
  76. mean(i,j,min_w_index) = double(fr_bw(i,j));%初始化均值为当前观测像素的均值
  77. sd(i,j,min_w_index) = sd_init;             %初始化标准差为6
  78. end
  79. rank = w(i,j,:)./sd(i,j,:);                    % 计算模型优先级
  80. rank_ind = [1:1:C];%优先级索引
  81. % 计算前景
  82. fg(i,j) = 0;
  83. while ((match == 0)&&(k<=M))
  84. if (abs(u_diff(i,j,rank_ind(k))) <= D*sd(i,j,rank_ind(k)))% 像素与第k个高斯模型匹配
  85. fg(i,j) = 0; %该像素为背景,置为黑色
  86. else
  87. fg(i,j) = 255;    %否则为前景,置为白色
  88. end
  89. k = k+1;
  90. end
  91. end
  92. end
  93. figure(n)
  94. subplot(1,3,1),imshow(fr_bw);               %显示最后一帧图像
  95. subplot(1,3,2),imshow(uint8(bg_bw))         %显示背景
  96. disk = strel('disk',1);disk1 = strel('disk',4);
  97. subplot(1,3,3),imshow(imdilate(imerode(uint8(fg),disk),disk1));   %显示前景
  98. end</span>

高斯混合模型GMM的理解相关推荐

  1. EM算法应用:k均值聚类(k-means)和高斯混合模型(GMM)

    文章目录 k-means聚类 EM角度的理解 算法流程 特点 k值选择 局限性 高斯混合模型 GMM的问题描述 1,明确隐变量 2.EM算法的E步:确定Q函数 3. EM算法的E步 4. 停止条件 上 ...

  2. 混合高斯模型_大数据小白入门高斯混合模型(GMM)聚类算法

    导读 高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,属于生成式模型,它假设所有的数据样本都是由某一个给定参数的 多元高斯分布 所生成的.从中 ...

  3. 高斯混合模型的终极理解

    高斯混合模型GMM是一个非常基础并且应用很广的模型.对于它的透彻理解非常重要.网上的关于GMM的大多资料介绍都是大段公式,而且符号表述不太清楚,或者文笔非常生硬.本文尝试用通俗的语言全面介绍一下GMM ...

  4. 一维(多维)高斯模型(One(Multi)-dimensional Gaussian Model) 高斯混合模型GMM(Gaussian Mixture Model)

    一维高斯模型(One-dimensional Gaussian Model) 若随机变量X服从一个数学期望为,标准方差为的高斯分布,记为: x~N(,). 则概率密度函数为: 高斯分布的期望值决定了其 ...

  5. ITK学习笔记(八) ITK高斯混合模型 GMM EM

    ITK学习笔记(八) ITK高斯混合模型 GMM EM 1.高斯混合模型 2.变分贝叶斯高斯混合 3.ITK中的GMM.EM 1.高斯混合模型 sklearn.mixture是一个能够学习高斯混合模型 ...

  6. 高斯混合模型GMM、核心参数、高斯混合模型GMM的数学形式

    高斯混合模型GMM.核心参数.高斯混合模型GMM的数学形式 高斯混合模型GMM 混合模型是一个可以用来表示在总体分布(distribution)中含有 K 个子分布的概率模型,换句话说,混合模型表示了 ...

  7. 高斯混合模型--GMM(Gaussian Mixture Model)

    参考:http://blog.sina.com.cn/s/blog_54d460e40101ec00.html 概率指事件随机发生的机率,对于均匀分布函数,概率密度等于一段区间(事件的取值范围)的概率 ...

  8. 高斯混合模型--GMM

    原文:http://blog.sina.com.cn/s/blog_54d460e40101ec00.html   高斯混合模型--GMM(Gaussian Mixture Model)     统计 ...

  9. 单高斯分布模型GSM,高斯混合模型GMM

    本文就高斯混合模型(GMM,Gaussian Mixture Model)参数如何确立这个问题,详细讲解期望最大化(EM,Expectation Maximization)算法的实施过程. 单高斯分布 ...

最新文章

  1. jQuery超炫酷按钮插件及源码
  2. vant图标怎么显示不出来_U盘插进电脑但不显示怎么解决
  3. 系统重装 如何转换GPT的磁盘格式为MBR或者反过来
  4. phpstrtotime()对于31日求上个月有问题
  5. 1、CSS 框模型概述(盒模型)
  6. A.2.3-猜数字游戏
  7. 贪吃蛇javascript代码_源于Jquery开发贪吃蛇游戏——简单思路分析总结
  8. docker容器网络通讯——外部访问内部
  9. 华为云 git 托管代码 教程
  10. 【驱动安装及keil使用】win10 stm32 stlink驱动安装,检测不到芯片,下载不了程序
  11. Lync 2010升级到Lync 2013 之Lync 2010 planning tool 的使用!
  12. python 将微信聊天记录生成词云
  13. 基于Python语言豆瓣电影数据挖掘与分析
  14. 无盘服务器固态硬盘做什么盘,哪个固态硬盘无盘服务器上最好?固态硬盘无盘服务器上详细介绍。...
  15. 手机数字雨_cmd命令如何实现数字雨的效果
  16. Unity Shader入门学习(1):基础shader
  17. Chino with Equation
  18. 植王分享:养兰花的十大好处
  19. k8s部署wordpress应用
  20. Neo4j 全网最详细教程

热门文章

  1. (二)流--递归算法
  2. configure: error: Cannot find php-config. Please use --with-php-config=PATH
  3. MYSQL--事务处理
  4. Ajax Toolkit 控件学习系列(5) ——CalendarExtender使用
  5. 不需要人际交往的计算机系,计算机对大学生人际交往影响.doc
  6. 机械制图符号_《机械制图》试卷
  7. 计算机网络多元化媒体传达,【多媒体技术论文】视觉传达设计多媒体技术的应用(共4007字)...
  8. android 页面过渡动画,Activity过渡动画的实现方法
  9. 企鹅java游戏下载安装_企鹅企鹅生活安卓版游戏下载|企鹅企鹅生活手游下载v1.6.1-乐游网安卓下载...
  10. 正则不以什么开头_python基础 | 正则扫盲