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

时间:2013-05-22 11:32:16

标签: algorithm matlab image-processing k-means

执行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段。如何对其进行阈值处理以便分配

0表示区域1的簇 1表示区域2的簇 2对于区域3的聚类

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

非常感谢。

亲切的问候。

2 个答案:

答案 0 :(得分:3)

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

B: output = output - 1

答案 1 :(得分:1)

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

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

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

figure;
imagesc(reshape(clusterIndices, [256, 256]));