【问题标题】:gaussian mixture based segmentation基于高斯混合的分割
【发布时间】:2013-04-17 08:38:10
【问题描述】:

我的图像有四种不同的颜色 - 深蓝色、浅蓝色、更浅的蓝色 - 背景和白色 - 背景。我想只细分前两个类别

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。这些似乎不是强度,所以当我试图让图像中的所有像素小于第二个平均值时,所有像素都通过了测试。我在这里缺少一些东西。谁能帮我根据高斯混合分割深蓝色和浅蓝色细胞。任何帮助表示赞赏!

【问题讨论】:

    标签: matlab gaussian image-segmentation


    【解决方案1】:

    不能保证 sai.mu(1)

    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)))
    

    【讨论】:

    • Patrick,您能否检查一下我在问题中所做的编辑。谢谢!
    猜你喜欢
    • 2012-09-11
    • 2013-06-11
    • 1970-01-01
    • 2016-09-16
    • 2017-11-03
    • 2017-04-21
    • 2013-03-27
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多