Problem using ind2rgb and CDataMapping

7 vues (au cours des 30 derniers jours)
Shay
Shay le 31 Juil 2012
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?

Réponse acceptée

Teja Muppirala
Teja Muppirala le 31 Juil 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 commentaire
Syed
Syed le 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):

Connectez-vous pour commenter.

Plus de réponses (2)

Walter Roberson
Walter Roberson le 31 Juil 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 commentaire
Shay
Shay le 31 Juil 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.

Connectez-vous pour commenter.


Image Analyst
Image Analyst le 31 Juil 2012
Modifié(e) : Image Analyst le 31 Juil 2012
Or you can try mat2gray and jet(256)
newImage = mat2gray(oldImage);
imshow(newImage);
colormap(jet(256));

Catégories

En savoir plus sur Images dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by