日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高斯混合模型GMM的理解

發(fā)布時(shí)間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高斯混合模型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ò),歡迎將生活随笔推薦給好友。