我正在尝试对灰度图像进行k均值聚类。
代码如下:
I = im2double(imread('sample.png'));
J = rgb2gray(I);
r = size(J,1);
c = size(J,2);
J = reshape(J,r*c,1);
[cluster_idx, cluster_center] = kmeans(J,k,'start','uniform','distance','sqEuclidean', 'Replicates', 3);
这里cluster_idx具有输入图像的每一行的聚类索引。而cluster_center具有集群质心位置。但这将是一个k x 1矩阵。我没有得到的是这些值(double)如何表示输入图像聚类的质心?
答案 0 :(得分:1)
cluster_center
表示每个群集的平均灰度,而cluster_idx
为每个像素分配群集成员资格。
将您的群集结果reshape
恢复为原始图片大小,并使用cluster_idx
作为cluster_center
索引:
J = im2double(imread('cameraman.tif'));
r = size(J,1);
c = size(J,2);
J = reshape(J,r*c,1);
k = 3;
[cluster_idx, cluster_center] = kmeans(J,k,'start','uniform','distance','sqEuclidean', 'Replicates', 3);
II = reshape(cluster_idx,[r c]);
JJ = cluster_center(II);
imshow(JJ);