我正在寻找使用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);
但是我得到一个错误:
使用
wdensity
时出错(第29行)
病态协方差创建。
gmdistribution
/cluster
中的错误(第59行)
log_lh=wdensity(X,obj.mu, obj.Sigma, obj.PComponents, obj.SharedCov, CovType);
我对GMM的工作原理有一个基本的了解,即软集群,但是我希望有一个更高级的人来帮助我了解我在这里做什么。
答案 0 :(得分:0)
功能错误。您正在寻找fitgmdist(X,k),在其中输入要分割为 k 的对象数量的估计值。然后程序将尝试使用EM算法来计算mu和sigma。
典型的情况是:警告会产生不良条件协方差,如果数据嘈杂,您会发现很多。我建议通过调整'RegularizationValue'参数来regularization,可能在协方差结构上设置约束和/或过滤噪点图像。使用BM3D(用于2D图像)和BM4D-滤镜(用于3D图像)时,我一直都取得很好的效果。
如果您有任何特定问题,我们很乐意为您提供帮助,但是您也必须为此做功课。图像处理非常困难,甚至在基本内容开始可靠工作之前,您都需要处理一堆运动部件。