# k means clustering shows only blank image if i loop it k times

22 次查看（过去 30 天）
Anirudh Kochhar2021-10-22

If i loop for i = 1:2 i get clustering otherwise i just get a blank image. any idea why?
im_as_col = double(im(:));
cluster_membs = kmeans(im_as_col, 3)
cluster_membs = 6912000×1
2 2 2 2 2 2 2 2 2 2
labelim = zeros(size(im));
for i=1:3
inds = find(cluster_membs==i);
meanval = mean(im_as_col(inds));
labelim(inds) = meanval;
end
imshow(im)
imshow(labelim);
##### 2 个评论显示隐藏 1更早的评论
Anirudh Kochhar 2021-10-22
hey sorry i forgot to add the image to the question. now that it is attached it should be easier to see. I dont get to see the k mean clustered image for some reason. it is a white image.

### 采纳的回答

yanqi liu 2021-11-5，8:00
clc; clear all; close all;
im_as_col = double(im(:));
cluster_membs = kmeans(im_as_col, 3);
labelim = zeros(size(im));
for i=1:3
inds = find(cluster_membs==i);
meanval = mean(im_as_col(inds));
labelim(inds) = meanval;
end
figure; imshow(im,[])
figure; imshow(mat2gray(labelim),[]);
##### 3 个评论显示隐藏 2更早的评论
yanqi liu 2021-11-8，5:44
yes，sir，its make 3 color class，and use label to display different gray level，that can be ref label2rgb

### 更多回答（2 个）

Image Analyst 2021-10-22
See attached demos.
##### 1 个评论显示隐藏 无
Image Analyst 2021-10-22
If you want kmeans for a hyperspectral image, see attached.

Image Analyst 2021-11-8，13:45
For what it's worth, attached is my Color Classifier that is based on Discrminant Analysis instead of kmeans. Basically you draw regions that are representative of the colors you want to have as your classes. Then it classifies all the pixels in the image into one of those classes.
Also attaching a KNN classifier demo.

R2020b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by