2016-12-13 6 views
1

skin cancer image Ich möchte K bedeutet Clustering auf Graustufenbild anzuwenden, ist der Code alsWie KMeans Clustering auf Graustufenbild in Matlab anwenden

im = imread('SSM1_2_orig.jpg'); 
im = rgb2gray(im); 
[idx centroids]=kmeans(double(im(:)),3,'distance','sqEuclidean','Replicates',3); 
%imseg = zeros(size(im,1),size(im,2)); 
%{for i=1:max(idx) 
    %imseg(idx==i)=i; 
    %end} 
segmented_images = cell(1,3); 
for k = 1:3 
    color = im; 
    color(im ~= k) = 0; 
    segmented_images{k} = color; 
end 

figure(),imshow(segmented_images{1}); 
figure(),imshow(segmented_images{2}); 
figure(),imshow(segmented_images{3}); 

folgen, aber es gibt mir die schwarze Ausgabe nur

+0

haben Sie 'imshow (segmented_images {1}, []) versucht,' –

+0

ja, aber es gibt die schwarze Ausgabe –

+0

nur dann können Sie bitte das Originalbild hinzufügen, damit wir es versuchen? –

Antwort

1

Hier ist der Arbeitscode. Hinweise:

Sie verwenden nie das Ergebnis des Clusterns, Sie vergleichen die ursprünglichen Pixelwerte mit k anstelle der gruppierten Pixelwerte idx.

Denken Sie auch daran, imshow(____, []) zu verwenden, wenn Ihre Bilder nicht [0-1] oder [0-255] sind.

im = imread('https://i.stack.imgur.com/ZYp7r.jpg'); 
im = rgb2gray(im); 
[idx, centroids]=kmeans(double(im(:)),3,'distance','sqEuclidean','Replicates',3); 

segmented_images = cell(1,3); 
for k = 1:3 
    color = zeros(size(im)); 
    color(idx==k) = im(idx==k); 
    segmented_images{k} = color; 
end 

figure(),imshow(segmented_images{1},[]); 
figure(),imshow(segmented_images{2},[]); 
figure(),imshow(segmented_images{3},[]); 
Verwandte Themen