【发布时间】:2018-08-14 14:27:35
【问题描述】:
我正在尝试使用经典的 kmeans 聚类算法,其中聚类数为 2。
所以,我正在使用彩色图像并阅读它:
coffeeImage = imread('coffee.png');
接下来,我提取像素的 x 和 y 位置:
[x, y] = meshgrid(1:size(coffeeImage, 1), 1:size(coffeeImage, 2));
我在这里将 x 和 y 变量组合成一个 21,160 x 5 向量:
coffeeVector = reshape([coffeeImage(:); x(:); y(:)], [], 5);
现在,我想对这个结果进行聚类。我尝试了以下方法,但我收到一个异常,指出图像太大而无法显示。 (结果是一个 21,160 x 1 的向量)。
clustered = kmeans(double(coffeeImage), 2);
imshow(coffeeImage);
imshow(clustered, []);
我想显示原始与新的聚集变量进行比较。我已经查看了有关 kmeans 的文档,但我仍然遇到渲染问题。有人有什么想法吗?
【问题讨论】:
-
请发布您的实际错误消息和导致它的行。输入 20k * 1 的向量时,您希望显示什么图像?
-
嗯,它说它太大了,所以它显示了一条垂直的灰线。我希望看到两个集群。你不应该得到一个非常大的 x 1 向量吗?
-
一个 largex1 向量,显示的是一条垂直的灰线
-
我想我显示不正确。如果有意义的话,我希望看到显示的两个集群。
-
为什么要使用 5 列的 reshape?这完全打乱了数据。你有没有查过
kmeans的输出代表什么?
标签: matlab image-processing k-means