display output k-means clustering, display output clustering as a image
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Tomas
 el 13 de Mzo. de 2014
  
    
    
    
    
    Respondida: Yanyu Liang
 el 30 de Nov. de 2016
            Hello,
I have a image, name image :test 3

I,map]=imread('test3','bmp');
I = ~I;
imshow(I,map);
[m n]=size(I)
P = [];
for i=1:m    
    for j=1:n        
        if I(i,j)==1
            P = [P ; i j];        
        end
    end
end
size(P)
MON=P;
[IDX,ctrs] = kmeans(MON,3)
as I plot the clusters in the image, resulting
I want to draw idx and ctrs in the image.
I don't know, How do I get back image with 3 new cluster(each cluster, different color in the image)
can anyone help ?
Thanks.
3 comentarios
  Image Analyst
      
      
 el 14 de Mzo. de 2014
				Sorry, I don't have the stats toolbox, which is what has kmeans.
Respuesta aceptada
  Dishant Arora
      
 el 13 de Mzo. de 2014
        
      Editada: Dishant Arora
      
 el 13 de Mzo. de 2014
  
      [ I map] = imread('test3.bmp');
I = ~I;
imshow(I,map);
[m n]=size(I)
P = [];
for i=1:m    
    for j=1:n        
        if I(i,j)==1
            P = [P ; i j];        
        end
    end
end
size(P)
MON=P;
[IDX,ctrs] = kmeans(MON,3);
 clusterImage = zeros(size(I));
 clusteredImage(sub2ind(size(I) , P(:,1) , P(:,2)))=IDX;
 imshow(label2rgb(clusteredImage))
9 comentarios
  Dishant Arora
      
 el 15 de Mzo. de 2014
				
      Editada: Dishant Arora
      
 el 15 de Mzo. de 2014
  
			imshow(label2rgb(cluster))
Más respuestas (2)
  rizwan
 el 16 de Mzo. de 2015
        Hi Experts, I am using the following code to find clusters in my image using K - Mean [ I map] = imread('D:\MS\Research\Classification Model\Research Implementation\EnhancedImage\ROIImage.jpeg'); I = ~I; imshow(I,map); [m n]=size(I) P = []; for i=1:m for j=1:n if I(i,j)==1 P = [P ; i j]; end end end size(P) MON=P; [IDX,ctrs] = kmeans(MON,3,'display', 'iter','MaxIter',500); clusterImage = zeros(size(I)); clusteredImage(sub2ind(size(I) , P(:,1) , P(:,2)))=IDX; imshow(label2rgb(clusteredImage))
The out put of the above code is
>> ImageEnhancement
m =
   180
n =
   317
ans =
       20306           2
iter   phase       num           sum
   1       1     20306   9.40619e+07
   2       1      2727   7.34318e+07
   3       1       876    7.1216e+07
   4       1       574   7.03212e+07
   5       1       410   6.98473e+07
   6       1       298   6.96024e+07
   7       1       173   6.95038e+07
   8       1       122   6.94633e+07
   9       1        65     6.945e+07
  10       1        45    6.9445e+07
  11       1        30    6.9443e+07
  12       1        15   6.94424e+07
  13       1         8   6.94422e+07
  14       1         3   6.94422e+07
  15       1         1   6.94422e+07
  16       2         0   6.94422e+07
Best total sum of distances = 6.94422e+07
Warning: Image is too big to fit on screen; displaying at 2%
Can any one explain this out put and how can i see proper out put of K- Mean???
I shall remain thank full You To
Regards
0 comentarios
  Yanyu Liang
 el 30 de Nov. de 2016
        It shows how the kmeans is going at each iteration. "kmeans" implementation in matlab has two phases (you can think of it as two different approach to update assignment), so "phase" just tells if it is using first phase or second. "num" tells the number of points that change their assignment at that iteration (as you can see when it hits zero, the algorithm stops). "sum" is the objective value "kmeans" is trying to minimize.
0 comentarios
Ver también
Categorías
				Más información sobre Image Processing Toolbox en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





