使用GMM

时间:2019-01-11 15:34:52

标签: matlab image-segmentation gmm

我正在寻找使用GMM(高斯混合模型)对嘈杂的医学图像(灰度)进行分割的功能。

我已经在MATLAB中找到了

gm = gmdistribution(mu,sigma)
idx = cluster(gm,X)

给出X,即我的灰度图像。

您将如何定义musigma?它们应该是多少尺寸?以及如何初始化它们?

我尝试了以下操作(给定大小为(576x720)的图像):

mu = rand(5,size(X,2));
sigma = ones(720,720);
gm = gmdistribution(mu,sigma);
idx = cluster(gm,X);

但是我得到一个错误:

  

使用wdensity时出错(第29行)
      病态协方差创建。

     

gmdistribution / cluster中的错误(第59行)
        log_lh=wdensity(X,obj.mu, obj.Sigma, obj.PComponents, obj.SharedCov, CovType);

我对GMM的工作原理有一个基本的了解,即软集群,但是我希望有一个更高级的人来帮助我了解我在这里做什么。

1 个答案:

答案 0 :(得分:0)

功能错误。您正在寻找fitgmdist(X,k),在其中输入要分割为 k 的对象数量的估计值。然后程序将尝试使用EM算法来计算mu和sigma。

典型的情况是:警告会产生不良条件协方差,如果数据嘈杂,您会发现很多。我建议通过调整'RegularizationValue'参数来regularization,可能在协方差结构上设置约束和/或过滤噪点图像。使用BM3D(用于2D图像)和BM4D-滤镜(用于3D图像)时,我一直都取得很好的效果。

如果您有任何特定问题,我们很乐意为您提供帮助,但是您也必须为此做功课。图像处理非常困难,甚至在基本内容开始可靠工作之前,您都需要处理一堆运动部件。