使用 GMM 进行灰度图像分割
Grayscale image segmentation using GMM
我正在寻找使用 GMM(高斯混合模型)执行噪声医学图像(灰度)分割的函数。
我在 MATLAB 中找到:
gm = gmdistribution(mu,sigma)
idx = cluster(gm,X)
给定 X
,我的灰度图像。
您如何定义 mu
和 sigma
?它们的尺寸应该是多少?你会如何初始化它们?
我尝试了以下方法(给定大小为 (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 图像)。
如果您有任何具体问题,我很乐意为您提供帮助,但您也必须为此做好功课。图像处理很难,在基本的东西开始可靠工作之前,你需要处理一堆移动部件。
我正在寻找使用 GMM(高斯混合模型)执行噪声医学图像(灰度)分割的函数。
我在 MATLAB 中找到:
gm = gmdistribution(mu,sigma)
idx = cluster(gm,X)
给定 X
,我的灰度图像。
您如何定义 mu
和 sigma
?它们的尺寸应该是多少?你会如何初始化它们?
我尝试了以下方法(给定大小为 (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 图像)。
如果您有任何具体问题,我很乐意为您提供帮助,但您也必须为此做好功课。图像处理很难,在基本的东西开始可靠工作之前,你需要处理一堆移动部件。