2014-04-01 61 views
-1

我有输入图像my input image图像聚类,k表示

我的代码是

img = imread('obraz.bmp'); 
img=rgb2gray(img) 
imshow(img) 

%% normalization 
img = (img - min(img(:))) ./ (max(img(:)) - min(img(:))); 

img = ~img; 
[m n]=size(img) 
P = []; 
for i=1:m  
    for j=1:n   
     if img(i,j)>=1 
      P = [P ; i j];   
     end 
    end 
end 

size(P); 
MON=P;  

[IDX,ctrs] = kmeans(MON,3); 
clusteredImage = zeros(size(img)); 
clusteredImage(sub2ind(size(img) , P(:,1) , P(:,2)))=IDX; 

imshow(label2rgb(clusteredImage)) 

我的输出图像my output image

我的输出是不正确的,我必须在逻辑上正确的输出

任何人都可以帮忙吗?,我不明白聚类图像。

+0

不清楚这段代码应该做什么,也不清楚你在写什么语言。请编辑你的问题。 – wingedsubmariner

回答

0

我不知道你为什么说输出不正确。对我来说似乎很好。

请参阅,如果使用平方欧几里得距离运行k-means(如您所做的那样),则这些簇将偏向于球形。对你而言不幸的是,图像中的一个簇不是球形的。您可以看到每个球形群集都具有唯一的颜色,但不是球形的群集不是。