2013-04-23 73 views
1

我有一種圖像,有四種不同的顏色 - 深藍色,淺藍色,甚至更亮的藍色背景和白色背景。我想僅段前兩類基於高斯混合的分割

bG= mat2gray(image); 
his=imhist(bG); 
sai = gmdistribution.fit(his,4); 
m1=sai.mu(1); 
v1=sai.Sigma(1); 
m2=sai.mu(2); 
v2=sai.Sigma(2); 

imt=bG<m2+v2; 
figure; 
imagesc(~imt); 

我得到一個圖像的所有像素1的bG圖像矩陣具有小於1的值,但平均值和每個高斯的方差方式更高。

從我的理解,bG是一個圖像矩陣,因此將有強度值。所以這裏的所有數值都小於1.

但是四個高木人的手段是:0.8604 0.976 2.9182 6.6377。這些似乎沒有強度,所以當我試圖讓圖像中的所有像素小於第二個均值時,所有像素都通過了測試。我在這裏失去了一些東西。任何人都可以幫助我分解基於高斯混合的深藍色和淺藍色單元格。任何幫助表示讚賞! (1)

回答

0

因此,您所知道的mu(2)可以對應白色,在這種情況下m2 + v2將大於1,並且所有像素都將通過測試。我會簡單地使用sai.cluster(BG(:)),找到兩個最低畝,並連接對應於兩個最小畝集羣,像這樣:

sai = gmdistribution.fit(his,4); 

mus = [sai.mu(1),sai.mu(2),sai.mu(3),sai.mu(4)]; 
[~,sortmus] = sort(mus); 

clusters = sai.cluster(bG(:)); 
bGclustered = clusters == sortmus(1) | clusters == sortmus(2); 

subplot(1,2,1); 
imagesc(bG) 
subplot(1,2,2); 
imagesc(reshape(bGclustered,size(bG))) 
+0

帕特里克,你可以請我做編輯在問題中。謝謝! – 2013-04-24 02:05:05