Algorithm MATLAB输出图像中的K均值聚类

Algorithm MATLAB输出图像中的K均值聚类,algorithm,matlab,image-processing,k-means,Algorithm,Matlab,Image Processing,K Means,执行K表示K=3(分段)的聚类。因此,我: 1) 将RGB img转换为灰度 2) 将原始图像转换为nx1列矩阵 3) idx=kmeans(列矩阵) 4) output=idx,转换回与原始图像相同的尺寸 我的问题是: A 当我做imshow(输出)时,我得到一个纯白色的图像。但是,当我执行imshow(输出[05])时,它会显示输出图像。我知道0和5指定了显示范围。但我为什么要这么做 B) 现在,输出图像将被拆分为3段。如何设置阈值,以便分配 区域1的群集为0 1区域2的集群 2区域3的集群

执行K表示K=3(分段)的聚类。因此,我:

1) 将RGB img转换为灰度

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

3) idx=kmeans(列矩阵)

4) output=idx,转换回与原始图像相同的尺寸

我的问题是:

A

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

B) 现在,输出图像将被拆分为3段。如何设置阈值,以便分配

区域1的群集为0 1区域2的集群 2区域3的集群

因为我做聚类的目的是为了把图像分割成3个区域

非常感谢


问候。

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


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


B:
output=output-1

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

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

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

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

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

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

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

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

非常感谢你,瑞安。非常有帮助和迅速的回答。如果我可以扩展上述问题,我将如何用颜色重新进行上述操作?即不将图像从RGB转换为灰度?非常感谢Ryan。非常有帮助和迅速的回答。如果我可以扩展上述问题,我将如何用颜色重新进行上述操作?即不将图像从RGB转换为灰度?