2

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

1)将RGB img转换为灰度

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

3) idx = kmeans(column_matrix)

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

我的问题是:

一个

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

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

0 表示区域 1 的集群 1 表示区域 2 的集群 2 表示区域 3 的集群

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

非常感谢。

亲切的问候。

4

2 回答 2

3

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

乙: output = output - 1

于 2013-05-22T11:59:50.730 回答
1

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

snow = rand(256, 256);
figure;
imagesc(snow);

nClusters = 3;
clusterIndices = kmeans(snow(:), nClusters);

figure;
imagesc(reshape(clusterIndices, [256, 256]));
于 2013-05-22T12:02:32.450 回答