Colormap for Connected Components in an image

Hello all,
Is there a way I can assign individually different colors to the connected components obtained using bwareafilt() function, labeled in an image? I have tried using colormap() function. But it doesn't work.
Thanks in advance.

 Accepted Answer

Yes. See this snippet from my Image Segmentation Tutorial:
% Let's assign each blob a different color to visually show the user the distinct blobs.
coloredLabels = label2rgb (labeledImage, 'hsv', 'k', 'shuffle'); % pseudo random color labels
% coloredLabels is an RGB image. We could have applied a colormap instead (but only with R2014b and later)
imshow(coloredLabels);
axis image; % Make sure image is not artificially stretched because of screen's aspect ratio.
caption = sprintf('Pseudo colored labels, from label2rgb().\nBlobs are numbered from top to bottom, then from left to right.');
title(caption, 'FontSize', 20);

4 Comments

Thank you very much for the response, Image Analyst. I tried with the code snippet you suggested, but again the result is just colored with red and black. The code requires me to find only the 5 largest components, from foreground as well as from background. The labeled objects should have individual colors (even if they all belong to foreground, or background).
Then you're not supplying the labeled image but just the binary image instead. Put this code before the label2rgb() call
% Extract the 5 largest blobs.
binaryImage = bwareafilt(binaryImage, 5);
% Give each blob a unique ID label.
labeledImage = bwlabel(binaryImage);
Thank you once again, Image Analyst. The method you advised me works. Great. But while it colors the selected labels with different colors, it just colors a corner of them instead of coloring them in full, or at least a good part of them. Could you please advice me which direction to take to improve their performance? Thanks.
I don't see how it could color just a corner of the squares since the square is a solid color throughout. You'll have to share your code for me to fix it.

Sign in to comment.

More Answers (1)

CuriousThinker
CuriousThinker on 13 Mar 2016
Edited: CuriousThinker on 13 Mar 2016
Thank you, Image Analyst for your kind reply. Could you please advice me how to share the code privately?

2 Comments

Sorry, Sir. I just meant if there is a way I can upload, still not shown publicly in the discussion.Thank you very much for the help. If there is no way, please tell me. I will upload my code here.

Sign in to comment.

Categories

Community Treasure Hunt

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

Start Hunting!