Problem using ind2rgb and CDataMapping

11 views (last 30 days)
Hi, I have a matrix (M) with values ranging from 0 to 5000 that I want to save as an RGB image.
When plotting the image using imagesc(M,'cdatamapping','scaled'); i see exactly what i want.
However, using rgbM=ind2rgb(M,jet); (I tried different sized colormaps, didnt help)
rgbM now has only 2~3 colors and plotting it looks completely different.
I can't find help for this seemingly simple problem online... Any tips on how it should be done?

Accepted Answer

Teja Muppirala
Teja Muppirala on 31 Jul 2012
You need to call IND2RGB with a colormap that is as big as your data. Something like this:
M = round(5000*rand(300,300));
imagesc(M,'cdatamapping','scaled');
rgbM = ind2rgb(M - min(M(:)) + 1, jet(range(M(:))+1));
figure;
image(rgbM);
  1 Comment
Syed
Syed on 14 Jan 2013
Surprisingly, this doesn't work for 1D images.
x = round(64 * (0.01:0.01:0.99));
figure(1); clf(1);
subplot(211); imagesc(x, 'cdatamapping', 'scaled'); colormap jet;
subplot(212); image(ind2rgb(x - min(x(:)) + 1, jet(range(x(:)) + 1)));
Look at how the spectrum changes in the latter half of the image (the reds):

Sign in to comment.

More Answers (2)

Walter Roberson
Walter Roberson on 31 Jul 2012
I recommend using the File Exchange contribution freezecolors. That will convert your colormapped image into an RGB image; you can then get() the CData of the image as your rgbM array.
  1 Comment
Shay
Shay on 31 Jul 2012
Tried freezeColors, it changed the color mapping on the displayed image and the same problem occurs (only shows 2~3 colors).
I should maybe add that i am doing all this in a matlab GUI with 3 axes, not sure if that matters.

Sign in to comment.


Image Analyst
Image Analyst on 31 Jul 2012
Edited: Image Analyst on 31 Jul 2012
Or you can try mat2gray and jet(256)
newImage = mat2gray(oldImage);
imshow(newImage);
colormap(jet(256));

Categories

Find more on Colormaps in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!