生活随笔
收集整理的這篇文章主要介紹了
高斯混合模型GMM的理解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
高斯混合模型(Gaussian Mixture Model,簡稱GMM)是用高斯概率密度函數(shù)(正態(tài)分布曲線)精確地量化事物,將一個(gè)事物分解為若干的基于高斯概率密度函數(shù)(正態(tài)分布曲線)形成的模型。通俗點(diǎn)講,無論觀測數(shù)據(jù)集如何分布以及呈現(xiàn)何種規(guī)律,都可以通過多個(gè)單一高斯模型的混合進(jìn)行擬合。
1、對(duì)圖像背景建立高斯模型的原理:
圖像灰度直方圖反映的是圖像中某個(gè)灰度值出現(xiàn)的頻次,也可以以為是圖像灰度概率密度的估計(jì)。如果圖像所包含的目標(biāo)區(qū)域和背景區(qū)域相差比較大,且背景區(qū)域和目標(biāo)區(qū)域在灰度上有一定的差異,那么該圖像的灰度直方圖呈現(xiàn)雙峰-谷形狀,其中一個(gè)峰對(duì)應(yīng)于目標(biāo),另一個(gè)峰對(duì)應(yīng)于背景的中心灰度。對(duì)于復(fù)雜的圖像,尤其是醫(yī)學(xué)圖像,一般是多峰的。通過將直方圖的多峰特性看作是多個(gè)高斯分布的疊加,可以解決圖像的分割問題。在智能監(jiān)控系統(tǒng)中,對(duì)于運(yùn)動(dòng)目標(biāo)的檢測是中心內(nèi)容,而在運(yùn)動(dòng)目標(biāo)檢測提取中,背景目標(biāo)對(duì)于目標(biāo)的識(shí)別和跟蹤至關(guān)重要。而建模正是背景目標(biāo)提取的一個(gè)重要環(huán)節(jié)。
我們首先要提起背景和前景的概念,前景是指在假設(shè)背景為靜止的情況下,任何有意義的運(yùn)動(dòng)物體即為前景。建模的基本思想是從當(dāng)前幀中提取前景,其目的是使背景更接近當(dāng)前視頻幀的背景。即利用當(dāng)前幀和視頻序列中的當(dāng)前背景幀進(jìn)行加權(quán)平均來更新背景,但是由于光照突變以及其他外界環(huán)境的影響,一般的建模后的背景并非十分干凈清晰,而高斯混合模型(GMM,Gaussian mixture model)是建模最為成功的方法之一,同時(shí)GMM可以用在監(jiān)控視頻索引與檢索。
混合高斯模型使用K(基本為3到5個(gè)) 個(gè)高斯模型來表征圖像中各個(gè)像素點(diǎn)的特征(以第一幀為背景幀),在新一幀圖像獲得后更新混合高斯模型,用當(dāng)前圖像中的每個(gè)像素點(diǎn)與混合高斯模型匹配,如果成功則判定該點(diǎn)為背景點(diǎn), 否則為前景點(diǎn)。通觀整個(gè)高斯模型,他主要是有方差和均值兩個(gè)參數(shù)決定,對(duì)均值和方差的學(xué)習(xí),采取不同的學(xué)習(xí)機(jī)制,將直接影響到模型的穩(wěn)定性、精確性和收斂性。由于我們是對(duì)運(yùn)動(dòng)目標(biāo)的背景提取建模,因此需要對(duì)高斯模型中方差和均值兩個(gè)參數(shù)實(shí)時(shí)更新。為提高模型的學(xué)習(xí)能力,改進(jìn)方法對(duì)均值和方差的更新采用不同的學(xué)習(xí)率;為提高在繁忙的場景下,大而慢的運(yùn)動(dòng)目標(biāo)的檢測效果,引入權(quán)值均值的概念,建立背景圖像并實(shí)時(shí)更新,然后結(jié)合權(quán)值、權(quán)值均值和背景圖像對(duì)像素點(diǎn)進(jìn)行前景和背景的分類。
GMM之所以能夠?qū)⑶熬昂捅尘胺珠_是基于如下兩點(diǎn)事實(shí)的:
(1)在長期觀測的場景中,背景占大多數(shù)時(shí)間,更多的數(shù)據(jù)是支持背景分布的
(2)即使是相對(duì)顏色一致的運(yùn)動(dòng)物體也會(huì)比背景產(chǎ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.如果,第一步中沒有任何模式匹配,則權(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滿足下式,參數(shù)T表示背景所占的比例: ??????????????????????????????????
參考: http://blog.csdn.net/shenziheng1/article/details/60883147 http://blog.csdn.net/jinshengtao/article/details/26278725
https://baike.baidu.com/item/高斯混合模型/8878468
參考代碼(MATLAB、未驗(yàn)證)
%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?:?cntFrame???????frame?=?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變量,用來更新均值和標(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:height??????for?j=1:width??????????for?k=1:C??????????????mean(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)差?????????????????????end??????end??end????for?n?=?1:cntFrame??????frame=strcat(num2str(n),'.bmp');??????I1?=?imread(frame);??%?依次讀入各幀圖像??????fr_bw?=?I1;?????????????%?計(jì)算新像素與第m個(gè)高斯模型均值的絕對(duì)距離??????for?m=1:C??????????u_diff(:,:,m)?=?abs(double(fr_bw(:,:,m))?-?double(mean(:,:,m)));??????end??????%?更新高斯模型的參數(shù)??????for?i=1:height??????????for?j=1:width??????????????match?=?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)差、p??????????????????????w(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)重?????????????????????end??????????????end????????????????????bg_bw(i,j)=0;??????????????for?k=1:C??????????????????bg_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)前觀測像素的均值??????????????????sd(i,j,min_w_index)?=?sd_init;?????????????%初始化標(biāo)準(zhǔn)差為6??????????????end??????????????rank?=?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;?%該像素為背景,置為黑色??????????????????????????????else??????????????????????????fg(i,j)?=?255;????%否則為前景,置為白色???????????????????????end??????????????????????????????????????????k?=?k+1;??????????????end??????????end??????end??????figure(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</span>?
總結(jié)
以上是生活随笔為你收集整理的高斯混合模型GMM的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。