assigning color to binary image

조회 수: 7 (최근 30일)
Hassan
Hassan 2011년 12월 27일
I have an image consisting of values 1 to 7. I want to show each value with specific color (green,blue,yellow,cyan,magenta,maroon, and sea green). I think I need to use colormap function but dont know how. Any suggestion please?
imshow(BW)
colormap(?)

채택된 답변

Image Analyst
Image Analyst 2011년 12월 27일
Hassan: Then, try this:
% Create sample data
m=7*rand(150);
imshow(m, []);
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]); % Maximize figure.
% Construct new colormap with 8 rows and 3 columns
% Each row applies to one gray level.
% Create the 8x3 array any way you want.
% Here I'm using the built-in "jet" array
% set up to go over only 8 gray levels.
cmap = jet(8);
% Apply the colormap
colormap(cmap);
colorbar;
  댓글 수: 4
Image Analyst
Image Analyst 2011년 12월 27일
Just take the rgb values and divide by 255, something like
cmap=[0 255 0;... % Green
0 0 255;...
255 255 0;,... % Yellow
... etc.
] / 255;
You can figure out the rgb values for the colors like sea green and maroon by using a program such as Photoshop.
Hassan
Hassan 2011년 12월 27일
thanks.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Image Analyst
Image Analyst 2011년 12월 27일
That's not a binary image. It's probably a labeled image, which is a double. Look at this snippet of code that assigns a multitude of different colors to the regions:
% Label each blob with 8-connectivity, so we can make measurements of it
[labeledImage numberOfBlobs] = bwlabel(binaryImage, 8);
% Apply a variety of pseudo-colors to the regions.
coloredLabelsImage = label2rgb (labeledImage, 'hsv', 'k', 'shuffle');
% Display the pseudo-colored image.
imshow(coloredLabelsImage);
  댓글 수: 2
Hassan
Hassan 2011년 12월 27일
thanks for the comment. again, this code doesnt give once color to each label. instead, it gives on color to the connected regions.
Hassan
Hassan 2011년 12월 27일
Actually Walter's code was the one I needed. the image consists of many regions (connected cells). some regions have value 1, some regions have value 2, ...and some have value 7. Sorry if I didn't describe it clearly.

댓글을 달려면 로그인하십시오.


Sukuchha
Sukuchha 2011년 12월 27일
first of all if your image is binary, you cant have values from 1 to 7.
if you have image with values 1 to 7, first you have label the connected components.
CC = bwconncomp(BW);
L = labelmatrix(CC);
RGB = label2rgb(L);
figure, imshow(RGB)taken from help file of label2rgb
see doc label2rgb
  댓글 수: 4
Hassan
Hassan 2011년 12월 27일
thanks Walter. It's the one I needed.
Image Analyst
Image Analyst 2011년 12월 27일
Funny, same function as I used, label2rgb. But you're saying now that you don't have a labeled image and that you don't care about labels or connected regions. So that if you had 15 blobs with gray level 4, then all 15 of those should be the same color. And if you had 42 blobs with gray level 5, then all 42 of those should be the same color (but different than the color used for gray level 4). You can do that with just the regular colormap, like my answer below, without having to use label2rgb at all.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Blue에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by