1.混合高斯背景建模理论

混合高斯背景建模是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息(如模式数量、每个模式的均值和标准差)表示背景,然后使用统计差分(如3σ原则)进行目标像素判断,可以对复杂动态背景进行建模,计算量较大。
在混合高斯背景模型中,认为像素之间的颜色信息互不相关,对各像素点的处理都是相互独立的。对于视频图像中的每一个像素点,其值在序列图像中的变化可看作是不断产生像素值的随机过程,即用高斯分布来描述每个像素点的颜色呈现规律{单模态(单峰),多模态(多峰)}。
对于多峰高斯分布模型,图像的每一个像素点按不同权值的多个高斯分布的叠加来建模,每种高斯分布对应一个可能产生像素点所呈现颜色的状态,各个高斯分布的权值和分布参数随时间更新。当处理彩色图像时,假定图像像素点R、G、B三色通道相互独立并具有相同的方差。对于随机变量X的观测数据集{x1,x2,…,xN},xt=(rt,gt,bt)为t时刻像素的样本,则单个采样点xt其服从的混合高斯分布概率密度函数
其中k为分布模式总数,η(xt,μi,t,τi,t)为t时刻第i个高斯分布,μi,t为其均值,τi,t为其协方差矩阵,δi,t为方差,I为三维单位矩阵,ωi,t为t时刻第i个高斯分布的权重。

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表示背景所占的比例:

3.MATLAB仿真与实践

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

输出结果:

代码及结果引用请标注:Ziheng H. Shen @Graduate School of Tsinghua Univ.

转载自:https://blog.csdn.net/shenziheng1/article/details/60883147

运动目标检测混合高斯背景建模相关推荐

  1. 运动目标检测单高斯背景建模

    1.运动目标背景建模 背景建模也称为背景估计,其主要目的是根据当前的背景估计,把对序列图像的运动目标检测问题转化为一个二分类问题,将所有像素划分为背景和运动前景两类,进而对分类结果进行后处理,得到最终 ...

  2. 运动目标检测_混合高斯背景建模

    1.混合高斯背景建模理论 混合高斯背景建模是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息(如模式数量.每个模式的均值和标准差)表示背景,然后使用统计差分(如3 ...

  3. 运动目标的背景建模-混合高斯背景建模和KNN模型建模的OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 运动检测通常用于分析视频序列中的移动目标,如车辆 ...

  4. 【图像处理基础知识】-混合高斯背景建模

    0.高斯模糊原理 转载地址:https://www.cnblogs.com/herenzhiming/articles/5276106.html --------------------------- ...

  5. 混合高斯背景建模算法GMM

    高斯混合模型介绍 高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了**期望最大(Expectatio ...

  6. 混合高斯背景建模原理

    混合高斯背景建模 混合高斯模: 背景图像的每一个像素分别用由K个高斯分布构成的混合高斯模型来建模 P ( I ) = ∑ q = 1 Q w q N q ( I ; μ q , σ q 2 ) N q ...

  7. matlab 混合高斯背景建模的实现

    %根据opencv源代码改编 输入视频 输出一连串的黑白图像帧 clc; clear; %-------混合高斯背景建模 参数 ----------------- gauss_n = 3; %每个像素 ...

  8. 运动目标检测 混合高斯模型

    原理 : 高斯模型就是用高斯概率密度函数( 正态分布 曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型. 对图像背景建立高斯模型的原理及过程:图像灰度 直方图 ...

  9. 0056-在OpenCV环境下使用混合高斯背景建模提取前景目标

    博主注: 已于2022-06-01重写这篇博文,有两个链接,分别如下 https://blog.csdn.net/wenhao_ir/article/details/125010301 https:/ ...

最新文章

  1. cad线加粗怎么设置_原来CAD的线条还可以这样加粗!还能修改初始单位!太实用了...
  2. highcharts第一篇---简介和使用
  3. 如何获取独立项目开发经验
  4. 都说不建议使用递归操作,到底为什么?
  5. 【报告分享】如何嫁给“改变世界的男人”-程序员之理想女友大调查.pdf(附下载链接)...
  6. 计算机网络上机指导,计算机网络上机指导书.pdf
  7. LINUX C#开发教程
  8. Linux CentOS安装增强功能--完整版命令
  9. Baby Sign Language
  10. PS压缩图片文件大小,不失真!!!
  11. DataFrame-删除行列
  12. html数字动画效果,原生JavaScript代码实现数字更新的动画效果
  13. scrapy案例:爬取京东笔记本数据
  14. 用Photoshop制作LOMO风格暗角效果照片
  15. roslyn\csc.exe”的一部分
  16. 一步一步做ListView滚动固定头部并且头部会变化哦
  17. 计算机引领未来的趋势,引领未来网络发展之路,新华三提出确定性网络的第三种技术路径...
  18. iOS15第二个测试版发布!修复大量bug,稳定性提升
  19. 插入新记录时 索引或主关键字不能包含一个 空 (Null) 值
  20. vegas界面对比!

热门文章

  1. Jeecg-Boot上传附件异常问题处理
  2. mysql 优化命令_MySQL优化Explain命令简介(一)
  3. 52个有效方法(1) - 了解Objective-C语言的起源
  4. Docker 部署clickhouse-server及添加用户配置密码
  5. C#LeetCode刷题之#819-最常见的单词(Most Common Word)
  6. C#设计模式之20-状态模式
  7. 【ios】开发者笔记之迈出第一步
  8. 在Raspberry Pi上设置Docker的简单方法
  9. 解决freeswitch ICE 获取RTP地址时间过长的问题
  10. 腾讯云实验之Linux 基础入门