• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: Matlab
  • 标签: matlab  北京减除  GMM  

资源简介

实现了基于混合高斯模型的运动目标检测,并针对经典模型对突发运动和光线突变响应速... u关键词t背景减除法;混合高斯模型:预处理;运动目标检测:阴影抑制

资源截图

代码片段和文件信息

clear all
close all
clc
% ----------------------- 使用第一帧获取图片大小 -----------------------

addpath(‘./data‘);
img_dir = dir(‘./data/*.bmp‘);
fr = imread(img_dir(220).name);           % 读第一幅图片
fr_bw = rgb2gray(fr);            % 灰度变换
[height width] = size(fr_bw); 
fg = zeros(height width);
bg_bw = zeros(height width);

% ----------------------- 变量初始化 -----------------------------------

C = 4;                       % 组成混合高斯模型的单高斯数目
M = 4;                       % 组成背景的数目
D = 2.5;                     % 阀值(一般为2.5个标准差)
alpha = 0.005;               % 学习速率(一般为0到1)
thresh = 0.75;               % 前景阀值(0.25到0.47)
sd_init = 6;                 % 初始化标准差
update_rate = alpha*C;       % 参数学习速率
rank = zeros(1C);           % 优先权
w = zeros(heightwidthC);   % 初始化权值数组,预先分配内存
mean = zeros(heightwidthC);     % 像素均值,预先分配内存
pixel_sd = zeros(heightwidthC); % 像素标准差,先分配内存
u_diff = zeros(heightwidthC);    % 当前像素与均值的差
B = 0;                                  % 权值累加值

% -------------------------初始化均值和权值----------------------------

pixel_depth = 8;                        %  像素深度为8位
pixel_range = 2^pixel_depth - 1;         %  灰度范围
for i = 1:height
    for j = 1:width
        for k = 1:C
            mean(ijk) = pixel_range * rand();     %均值   
            w(ijk) = 1/C;                       
            pixel_sd(i j k) = sd_init;  %标准差                
            
        end
    end
end

%--------------------- 处理每一帧 -----------------------------------
  figure()
%for n = 1:numel(img_dir)
for n = 220:265
    
    fr = imread(img_dir(n).name);       
    fr_bw = rgb2gray(fr);        
    
    % 计算每个像素与均值差
    for m = 1:C
        u_diff(::m) = abs(double(fr_bw) - double(mean(::m)));
    end
     
   % 对于相应条件,更新参数
    for i=1:height
        for j=1:width 
            
            weight = w(ij:);
            match = 0;
            match_index = 0;       %设置匹配模型的位置
            
            for k = 1:C                       
                if (abs(u_diff(ijk)) <= D*pixel_sd(ijk) )       %满足条件 
                    match = 1;                          
                    
                    % 更新均值、标准差等
                    w(ijk) = (1-alpha)*w(ijk) + alpha;
                    p = alpha/w(ijk);                  
                    mean(ijk) = (1-p)*mean(ijk) + p*double(fr_bw(ij));
                    pixel_sd(ijk) =sqrt((1-p)*(pixel_sd(ijk)^2) + p*((double(fr_bw(ij)) - mean(ijk)))^2);
                else                                     
                    w(ijk) = (1-alpha)*w(ijk);      
                end
            end  
            
            bg_bw(ij)=0;   %背景看做各个分量的加权平均
            for k=1:C
                bg_bw(ij) = bg_bw(ij)+ mean(ijk)*w(ijk);
            end
            
            % 没有一个分量满足当前像素,创建一个新的分量
            if (match == 0)
                [min_w min_w_index] = min(w(ij:));  
                mean(ijmin_w_index) 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-02-05 18:34  实现了基于混合高斯模型的背景减除,在matlab下运行\
     文件        5766  2015-11-09 18:23  实现了基于混合高斯模型的背景减除,在matlab下运行\run.m

评论

共有 条评论