![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/175519/image.jpeg)
Separate the red and purple pixels in a photo
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hi,
I have a problem to separate the red and purple pixels in the attached 24 bit photo.
Therefore, how can I "isolate", show and count only them (red/purple pixels), an example would be great.
What are the techniques I should consider in this kind of problems?
Thanks.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/145286/image.jpeg)
0 comentarios
Respuestas (2)
Rushikesh Tade
el 5 de Sept. de 2014
Tried to separate out the colors using K-Means Clustering using guide shown http://www.mathworks.in/help/images/examples/color-based-segmentation-using-k-means-clustering.html
input_im=imread('T2.jpg');
sz_im=size(input_im);
cform = makecform('srgb2lab');
lab_he = applycform(input_im,cform);
ab = double(lab_he(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);
nColors = 3;
% repeat the clustering 3 times to avoid local minima
[cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
'Replicates',3);
pixel_labels = reshape(cluster_idx,nrows,ncols);
imshow(pixel_labels,[]), title('image labeled by cluster index');
segmented_images = cell(1,3);
rgb_label = repmat(pixel_labels,[1 1 3]);
for k = 1:nColors
color = input_im;
color(rgb_label ~= k) = 0;
segmented_images{k} = color;
end
for k=1:nColors
figure
title_string=sprintf('objects in cluster %d',k);
imshow(segmented_images{k}), title(title_string);
end
Which provides results as follows:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/175519/image.jpeg)
Hope this helps !
3 comentarios
Image Analyst
el 5 de Sept. de 2014
That's what this Mathworks demo does: http://www.mathworks.com/products/demos/image/color_seg_k/ipexhistology.html
7 comentarios
Image Analyst
el 5 de Sept. de 2014
That's fine, but don't let a preference for MATLAB blind you to the use of other tools that may help you understand and solve your problem. I hope it let you see that there is no clear threshold(s), in any color space, that will definitively work. That said, you can still segment your image by "carving up" the gamut, and you have several ways to do that, with demos in my File Exchange. Good luck. I don't have the Stats toolbox so I don't have kmeans() and I can't help you if you decide to adapt the Mathworks demo.
Ver también
Categorías
Más información sobre 3-D Volumetric Image Processing 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!