【问题标题】:K means clustering in MATLAB - output imageK 表示 MATLAB 中的聚类 - 输出图像
【发布时间】:2013-05-17 10:33:40
【问题描述】:

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

1) 将 RGB img 转为灰度图

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

3) idx = kmeans(column_matrix)

4) output = idx,重新转换为与原始图像相同的尺寸。

我的问题是:

一个

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

B) 现在输出图像将被分成 3 段。我如何设置阈值以便我分配一个

0 表示区域 1 的集群 1 用于区域 2 的集群 2 代表区域 3 的集群

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

非常感谢。

亲切的问候。

【问题讨论】:

    标签: algorithm matlab image-processing k-means


    【解决方案1】:

    答:鉴于您的矩阵 output 包含范围从 1 到 3 的标量值,imshow(output) 将其视为 灰度 矩阵并假设完整值的范围是 0 到 255。这就是限制颜色限制的原因,否则您的图像全白或几乎全白。

    乙:output = output - 1

    【讨论】:

    • 非常感谢瑞恩。非常有帮助和及时的答案。如果我可以扩展上述问题,我将如何重新做上述颜色?即不将图像从 RGB 转换为灰度?
    【解决方案2】:

    正如 Ryan 所指出的,您的问题可能只是您如何显示图像。这是一个工作示例:

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

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2013-08-29
      • 2017-04-10
      • 2023-03-29
      • 2016-08-12
      相关资源
      最近更新 更多