图像聚类通过高斯混合模型

32视图(30天)
纽曼
纽曼 2015年8月23日
编辑: missagh天2017年5月6日
我想用GMM(高斯混合模型的聚类二进制图像,也想把集群重心在二进制图像本身。
这是我最初的代码
我= im2double (imread (“sil10001.pbm”));
K =我(:);
μ=意味着(K);
σ=性病(K);
P = normpdf (K,μ、σ);
Z = norminv (P,μ、σ);
X = mvnrnd(μ、σ,200);
散射(X (: 1) X(: 1), 10日“柯”);
选择= statset (“显示”,“最后一次”);
通用= fitgmdist (X, 1“选项”、选择);
idx =集群(通用,X);
cluster1 = (idx = = 1);
cluster2 = (idx = = 2);
图;
散射(X (cluster1 1) X (cluster1, 1), 10日' r + ');
持有
散射(X (cluster2, 1), X (cluster2, 1), 10日“波”);
持有
传奇(“集群1”,《集群2》,“位置”,“西北”)
但问题是,输出来的像一条直线,不像mat-lab中提到的数据参考,还我无法画出集群重心在初选中收到GMM二进制图像。我怎么做呢?
我想要的输出 轮廓代表聚类质心的位置

答案(1)

missagh天
missagh天 2017年5月6日
编辑:missagh天 2017年5月6日
嗨,纽曼。我跑你的代码在我自己的电脑,发现几个问题:
问题1:你使用这条线:
通用= fitgmdist (X, 1“选项”、选择);
从我收集你想对一个图像进行聚类,所以你为什么X上执行它?X是创建一个随机向量……您需要执行集群P !所以你的代码是这样的:
通用= fitgmdist (P, 1,“选项”、选择);
(P。年代为什么只用1集群在你代码?除非你使用2个或更多,这段代码将没有效果!)
问题# 2:输入是二维图像,所以你需要将你的集群转换成二维图像。这样做你可能想要使用这样的:
cluster1 = (idx = = 1);
cluster1 =重塑(cluster1、大小(我));
imshow (cluster1);
这样做对所有集群,看看你得到什么。
至于重心,我不知道你是什么代码使用,所以我恐怕不能太多的帮助。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!