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仿真与实践

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author: Ziheng H. Shen @Tsinghua Univ.
%HybridGaussModel @Digital Image Process Practice
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
cntFrame = 23;
obj = VideoReader('768x576.avi');
numFrames = obj.NumberOfFrames;for k = 1 : cntFrameframe = read(obj,k);imwrite(frame,...strcat('C:\Users\Zi-Heng Shen\Documents\MATLAB\BackGroundModel\混合高斯背景建模\',...num2str(k),'.bmp'),'bmp');end
%% 参数定义及初始化
I = imread('1.bmp');                    %读入第一帧作为背景帧
fr_bw = I;
[height,width] = size(fr_bw);           %求每帧图像大小
width = width/3;                        %排除颜色通道数
fg = zeros(height, width);              %定义前景和背景矩阵
bg_bw = zeros(height, width);C = 3;                                  % 单高斯模型的个数(通常为3-5)
M = 3;                                  % 代表背景的模型个数
D = 2.5;                                % 偏差阈值
alpha = 0.01;                           % 学习率
thresh = 0.25;                          % 前景阈值
sd_init = 15;                           % 初始化标准差
w = zeros(height,width,C);              % 初始化权重矩阵
mean = zeros(height,width,C);           % 像素均值
sd = zeros(height,width,C);             % 像素标准差
u_diff = zeros(height,width,C);         % 像素与某个高斯模型均值的绝对距离
p = alpha/(1/C);                        % 初始化p变量,用来更新均值和标准差
rank = zeros(1,C);                      % 各个高斯分布的优先级(w/sd)pixel_depth = 8;                        % 每个像素8bit分辨率
pixel_range = 2^pixel_depth -1;         % 像素值范围[0,255]for i=1:heightfor j=1:widthfor k=1:Cmean(i,j,k) = rand*pixel_range;     %初始化第k个高斯分布的均值w(i,j,k) = 1/C;                     % 初始化第k个高斯分布的权重sd(i,j,k) = sd_init;                % 初始化第k个高斯分布的标准差           endend
endfor n = 1:cntFrameframe=strcat(num2str(n),'.bmp');I1 = imread(frame);  % 依次读入各帧图像fr_bw = I1;       % 计算新像素与第m个高斯模型均值的绝对距离for m=1:Cu_diff(:,:,m) = abs(double(fr_bw(:,:,m)) - double(mean(:,:,m)));end% 更新高斯模型的参数for i=1:heightfor j=1:widthmatch = 0;                                       %匹配标记;for k=1:C                       if (abs(u_diff(i,j,k)) <= D*sd(i,j,k))       % 像素与第k个高斯模型匹配  match = 1;                               %将匹配标记置为1% 更新权重、均值、标准差、pw(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                                         % 像素与第k个高斯模型不匹配w(i,j,k) = (1-alpha)*w(i,j,k);           %略微减少权重   endend      bg_bw(i,j)=0;for k=1:Cbg_bw(i,j) = bg_bw(i,j)+ mean(i,j,k)*w(i,j,k);end% 像素值与任一高斯模型都不匹配,则创建新的模型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;             %初始化标准差为6endrank = w(i,j,:)./sd(i,j,:);                    % 计算模型优先级rank_ind = [1:1:C];%优先级索引       % 计算前景      fg(i,j) = 0;while ((match == 0)&&(k<=M))         if (abs(u_diff(i,j,rank_ind(k))) <= D*sd(i,j,rank_ind(k)))% 像素与第k个高斯模型匹配fg(i,j) = 0; %该像素为背景,置为黑色        elsefg(i,j) = 255;    %否则为前景,置为白色 end                        k = k+1;endendendfigure(n)subplot(1,3,1),imshow(fr_bw);               %显示最后一帧图像subplot(1,3,2),imshow(uint8(bg_bw))         %显示背景disk = strel('disk',1);disk1 = strel('disk',4);subplot(1,3,3),imshow(imdilate(imerode(uint8(fg),disk),disk1));   %显示前景
end

输出结果:

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

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

  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. 0056-在OpenCV环境下使用混合高斯背景建模提取前景目标

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

  9. 高斯背景建模 matlab,高斯背景建模整理 – 要饭的

    OpenCV 中高斯背景建模相关论文 BackgroundSubtractorMOG: Paper : An Improved Adaptive Background Mixture Model fo ...

最新文章

  1. tcpdump抓包并保存到远程服务器
  2. 2012年企业Web应用安全防范与趋势展望
  3. 评分卡开发方法论scorecard
  4. CNCF 宣布成立应用交付领域小组,正式开启云原生应用时代
  5. java等待页面加载_java selenium (十三) 智能等待页面加载完成
  6. WordPress 插件漏洞被利用,近 20 万站点还没打补丁
  7. TDirectory.IsRelativePath是否相对路径
  8. 23_Shell语言————位置变量($@、$、$#、shift)
  9. 面向对象7:package、MVC设计模式、import
  10. mysql select选择多列_数据库 update select 多列操作
  11. python request.get_Python request.get_data方法代码示例
  12. 国内外云服务器运维面板有哪些?运维面板全面汇总
  13. 标签打印软件如何设计正反面打印模式
  14. 视频会议软件Zoom存在安全隐患,我们是否需要停止使用
  15. 小酌重构系列[12]——去除上帝类
  16. Unreal Engine4人物模板编辑与解析(1)
  17. 浏览器做打假助手,边界在哪里?
  18. 使用PS去水印的方法
  19. 在12306的程序猿面前,没人敢说委屈
  20. python进阶练习之——复读机相加

热门文章

  1. 初学Java对某些问题的理解
  2. rsync的详细配置
  3. 【转】.NET NPOI操作Excel常用函数
  4. Log4net 中输出日志到文件,文件名根据日期生成
  5. SQL SERVER数据导入到EXCEL
  6. 组件开发之ASP.NET中集成资源文件的服务器端控件开发
  7. Python中的split,rsplit,splitlines
  8. python第三十二课——队列
  9. HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)
  10. My Goal For SE