使用 GMM 进行灰度图像分割

Grayscale image segmentation using 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);

但我得到一个错误:

Error using wdensity (line 29)
Ill-conditioned covariance created.

Error in gmdistribution/cluster (line 59)
log_lh=wdensity(X,obj.mu, obj.Sigma, obj.PComponents, obj.SharedCov, CovType);

我对 GMM 的工作原理有一个基本的了解,即软聚类,但我希望更高级的人能帮助我理解我在这里所做的事情。

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

病态协方差创建 - 警告是典型的,如果您的数据嘈杂,您会看到很多。我建议 regularization, by tweaking the 'RegularizationValue' -parameter, possibly setting constraints on the covariance-structures and/or filtering the noisy image. I've always had good results when using the BM3D (for 2D images) and BM4D -过滤器(用于 3D 图像)。

如果您有任何具体问题,我很乐意为您提供帮助,但您也必须为此做好功课。图像处理很难,在基本的东西开始可靠工作之前,你需要处理一堆移动部件。