2013-04-23 74 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