【问题标题】:Centroids in K-Mean clusteringK-Mean 聚类中的质心
【发布时间】:2017-09-12 05:22:25
【问题描述】:

我正在尝试对灰度图像进行 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)如何表示输入图像集群的质心?

【问题讨论】:

    标签: matlab image-processing k-means


    【解决方案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);
    

    【讨论】:

    • 感谢您的回复。是的,您对此是正确的。但是我仍然不清楚 II 是如何成为一个完全白色的图像(至少对我来说)我们得到 JJ 作为上面的聚集图像。 cluster_center 在这里实际代表什么。我知道它应该是集群的质心,但我无法想象这是一维的。我对 MATLAB 很陌生。
    • cluster_center 代表每个簇的平均灰度,而cluster_idx 为每个像素分配一个簇成员
    • 知道了,感谢您的宝贵时间。您能否编辑您的答案以添加此信息,因为它是我正在寻找的。​​span>
    • 只是想知道这些 cluster_center 值是否以任何方式排序?意思是它就像第一个集群具有最高/最低的平均灰度等。
    • Kmeans 初始化是随机的,因此集群值不一定是排序的。
    猜你喜欢
    • 2014-05-02
    • 2015-07-29
    • 2020-02-21
    • 1970-01-01
    • 2017-06-30
    • 2017-09-24
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    相关资源
    最近更新 更多