运动目标检测_混合高斯背景建模
生活随笔
收集整理的這篇文章主要介紹了
运动目标检测_混合高斯背景建模
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.混合高斯背景建模理論
混合高斯背景建模是基于像素樣本統(tǒng)計(jì)信息的背景表示方法,利用像素在較長(zhǎng)時(shí)間內(nèi)大量樣本值的概率密度等統(tǒng)計(jì)信息(如模式數(shù)量、每個(gè)模式的均值和標(biāo)準(zhǔn)差)表示背景,然后使用統(tǒng)計(jì)差分(如3σ原則)進(jìn)行目標(biāo)像素判斷,可以對(duì)復(fù)雜動(dòng)態(tài)背景進(jìn)行建模,計(jì)算量較大。在混合高斯背景模型中,認(rèn)為像素之間的顏色信息互不相關(guān),對(duì)各像素點(diǎn)的處理都是相互獨(dú)立的。對(duì)于視頻圖像中的每一個(gè)像素點(diǎn),其值在序列圖像中的變化可看作是不斷產(chǎn)生像素值的隨機(jī)過(guò)程,即用高斯分布來(lái)描述每個(gè)像素點(diǎn)的顏色呈現(xiàn)規(guī)律{單模態(tài)(單峰),多模態(tài)(多峰)}。
對(duì)于多峰高斯分布模型,圖像的每一個(gè)像素點(diǎn)按不同權(quán)值的多個(gè)高斯分布的疊加來(lái)建模,每種高斯分布對(duì)應(yīng)一個(gè)可能產(chǎn)生像素點(diǎn)所呈現(xiàn)顏色的狀態(tài),各個(gè)高斯分布的權(quán)值和分布參數(shù)隨時(shí)間更新。當(dāng)處理彩色圖像時(shí),假定圖像像素點(diǎn)R、G、B三色通道相互獨(dú)立并具有相同的方差。對(duì)于隨機(jī)變量X的觀測(cè)數(shù)據(jù)集{x1,x2,…,xN},xt=(rt,gt,bt)為t時(shí)刻像素的樣本,則單個(gè)采樣點(diǎn)xt其服從的混合高斯分布概率密度函數(shù):
其中k為分布模式總數(shù),η(xt,μi,t,τi,t)為t時(shí)刻第i個(gè)高斯分布,μi,t為其均值,τi,t為其協(xié)方差矩陣,δi,t為方差,I為三維單位矩陣,ωi,t為t時(shí)刻第i個(gè)高斯分布的權(quán)重。
2.混合高斯背景建模算法流程
1.每個(gè)新像素值Xt同當(dāng)前K個(gè)模型按下式進(jìn)行比較,直接找到匹配新像素值的分布模型,即同該模型的均值偏差在2.5σ內(nèi):2.如果所匹配的模式符合背景要求,則該像素屬于背景,否則屬于前景。 3.各個(gè)模式權(quán)值按如下方式進(jìn)行更新,其中a是學(xué)習(xí)速率,對(duì)于匹配的模式Mk,t=1,否則Mk,t=0,然后各模式的權(quán)重進(jìn)行歸一化:
4.未匹配模式的均值μ和標(biāo)準(zhǔn)差σ不變,匹配模式的參數(shù)按照如下更新:
5.如果,第一步中沒(méi)有任何模式匹配,則權(quán)重最小的模式被替換,即該模式的均值為當(dāng)前像素值,標(biāo)準(zhǔn)差為初始較大值,權(quán)重為較小值。 6.各模式根據(jù)w/a^2按降序排列,權(quán)重大、標(biāo)準(zhǔn)差小的模式排列在前。 7.選前B個(gè)模式作為背景,B滿(mǎn)足下式,參數(shù)T表示背景所占的比例:
3.MATLAB仿真與實(shí)踐
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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 %% 參數(shù)定義及初始化 I = imread('1.bmp'); %讀入第一幀作為背景幀 fr_bw = I; [height,width] = size(fr_bw); %求每幀圖像大小 width = width/3; %排除顏色通道數(shù) fg = zeros(height, width); %定義前景和背景矩陣 bg_bw = zeros(height, width);C = 3; % 單高斯模型的個(gè)數(shù)(通常為3-5) M = 3; % 代表背景的模型個(gè)數(shù) D = 2.5; % 偏差閾值 alpha = 0.01; % 學(xué)習(xí)率 thresh = 0.25; % 前景閾值 sd_init = 15; % 初始化標(biāo)準(zhǔn)差 w = zeros(height,width,C); % 初始化權(quán)重矩陣 mean = zeros(height,width,C); % 像素均值 sd = zeros(height,width,C); % 像素標(biāo)準(zhǔn)差 u_diff = zeros(height,width,C); % 像素與某個(gè)高斯模型均值的絕對(duì)距離 p = alpha/(1/C); % 初始化p變量,用來(lái)更新均值和標(biāo)準(zhǔn)差 rank = zeros(1,C); % 各個(gè)高斯分布的優(yōu)先級(jí)(w/sd)pixel_depth = 8; % 每個(gè)像素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個(gè)高斯分布的均值w(i,j,k) = 1/C; % 初始化第k個(gè)高斯分布的權(quán)重sd(i,j,k) = sd_init; % 初始化第k個(gè)高斯分布的標(biāo)準(zhǔn)差 endend endfor n = 1:cntFrameframe=strcat(num2str(n),'.bmp');I1 = imread(frame); % 依次讀入各幀圖像fr_bw = I1; % 計(jì)算新像素與第m個(gè)高斯模型均值的絕對(duì)距離for m=1:Cu_diff(:,:,m) = abs(double(fr_bw(:,:,m)) - double(mean(:,:,m)));end% 更新高斯模型的參數(shù)for i=1:heightfor j=1:widthmatch = 0; %匹配標(biāo)記;for k=1:C if (abs(u_diff(i,j,k)) <= D*sd(i,j,k)) % 像素與第k個(gè)高斯模型匹配 match = 1; %將匹配標(biāo)記置為1% 更新權(quán)重、均值、標(biāo)準(zhǔn)差、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個(gè)高斯模型不匹配w(i,j,k) = (1-alpha)*w(i,j,k); %略微減少權(quán)重 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% 像素值與任一高斯模型都不匹配,則創(chuàng)建新的模型if (match == 0)[min_w, min_w_index] = min(w(i,j,:)); %尋找最小權(quán)重mean(i,j,min_w_index) = double(fr_bw(i,j));%初始化均值為當(dāng)前觀測(cè)像素的均值sd(i,j,min_w_index) = sd_init; %初始化標(biāo)準(zhǔn)差為6endrank = w(i,j,:)./sd(i,j,:); % 計(jì)算模型優(yōu)先級(jí)rank_ind = [1:1:C];%優(yōu)先級(jí)索引 % 計(jì)算前景 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個(gè)高斯模型匹配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輸出結(jié)果:??
代碼及結(jié)果引用請(qǐng)標(biāo)注:Ziheng H. Shen @Graduate School of Tsinghua Univ.
總結(jié)
以上是生活随笔為你收集整理的运动目标检测_混合高斯背景建模的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 飞秋-程序的找工作之苦
- 下一篇: 目标检测方法简介:RPN(Region