Problem using ind2rgb and CDataMapping

조회 수: 6 (최근 30일)
Shay
Shay 2012년 7월 31일
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?

채택된 답변

Teja Muppirala
Teja Muppirala 2012년 7월 31일
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
Syed
Syed 2013년 1월 14일
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):

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

추가 답변 (2개)

Walter Roberson
Walter Roberson 2012년 7월 31일
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
Shay
Shay 2012년 7월 31일
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.

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


Image Analyst
Image Analyst 2012년 7월 31일
편집: Image Analyst 2012년 7월 31일
Or you can try mat2gray and jet(256)
newImage = mat2gray(oldImage);
imshow(newImage);
colormap(jet(256));

카테고리

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