首页 文章

K表示在MATLAB中进行聚类 - 输出图像

提问于
浏览
1

执行K意味着使用k = 3(段)进行聚类 . 所以我:

1)将RGB img转换为灰度

2)将原始图像转换为n X 1列矩阵

3)idx = kmeans(column_matrix)

4)output = idx,返回到与原始图像相同的尺寸 .

我的问题是:

A

当我做imshow(输出)时,我得到一个纯白色的图像 . 但是,当我进行imshow(输出[0 5])时,它会显示输出图像 . 我知道0和5指定显示范围 . 但为什么我必须这样做?

B) 现在输出图像要分成右边的3个段 . 如何限制它以便我分配一个

对于区域11的簇,对于区域2的簇,对于区域3的簇,对于区域2 2的簇,对于区域11的簇,

因为我做这个聚类的重点是我可以将图像分成3个区域 .

非常感谢 .

亲切的问候 .

2 回答

  • 3

    A: 鉴于您的矩阵 output 包含范围从1到3的标量值, imshow(output) 将此视为灰度矩阵,并假设整个值范围为0到255.这就是为什么需要约束颜色限制,否则您的图像是全白或几乎全白 .

    B: output = output - 1

  • 1

    正如Ryan所指出的,你的问题可能就是你如何显示图像 . 这是一个有效的例子:

    snow = rand(256, 256);
    figure;
    imagesc(snow);
    
    nClusters = 3;
    clusterIndices = kmeans(snow(:), nClusters);
    
    figure;
    imagesc(reshape(clusterIndices, [256, 256]));
    

相关问题