2013-05-22 35 views
1

执行k = 3(段)的K均值聚类。所以I:K表示在MATLAB中进行聚类 - 输出图像

1)转换后的RGB IMG为灰度

2)浇铸所述原始图像为X 1,列矩阵

3)IDX = k均值(column_matrix)

4)输出= idx,与原始图像的尺寸相同。

我的问题是:

一个

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

B) 现在输出图像意味着被分成右边的3段。我怎么门槛是这样的,我指定的区域1 1的簇

0为区域3

集群作为我的整点做这个集群区域2 2群是如此我可以将图像分割成3个区域。

非常感谢。

亲切的问候。

回答

3

一个:鉴于您的矩阵output包含范围的标量值从1到3,imshow(output)是治疗这种作为灰度矩阵和假设值的完整范围是0到255,这是为什么约束颜色限制是必要的,否则你的图像全白或几乎全白。

B:output = output - 1

+0

非常感谢Ryan。非常有帮助和及时的答案。如果我可以延长上述问题,我将如何重新做上述的颜色? I.e没有将图像从RGB转换为灰度? – Has

1

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

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

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

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