Can anyone please answer why the pixel value changes from about 90 to about 0.23 when I apply ind2rgb function?

2 次查看(过去 30 天)
% I have true color image (looks gray though because it is ultrasound image). I read the image.
im = imread('c1d7.JPG');
% converted the image into gray,
I = rgb2gray(im);
imshow(im);
% Then ind2rgb
rgbImage = ind2rgb(I, jet(256));
% This leads the value change as in my question from ~90 to ~0.23
What would be the solution?
Thanks
Surya

采纳的回答

Image Analyst
Image Analyst 2017-1-25
Try this:
% I have true color image (looks gray though because it is ultrasound image). I read the image.
im = imread('peppers.png');
subplot(2,2,1);
imshow(im);
% Convert the image into gray scale.
I = rgb2gray(im);
subplot(2,2,2);
imshow(I);
% Then ind2rgb
rgbImage = uint8(255 * ind2rgb(I, jet(256)));
subplot(2,2,3);
imshow(rgbImage);
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Get rid of tool bar and pulldown menus that are along top of figure.
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
  2 个评论
Walter Roberson
Walter Roberson 2017-1-25
I have found that im2uint8 has a slightly different answer than uint8(255*x). I do not recall the details at the moment but I found that im2uint8 was better handling. I think it might have had to do with uint8 rounding so 0 and 255 could result with only half the probability of the other values if you use uint8 naively

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2017-1-25
Color tables used with ind2rgb must have entries in the range 0 to 1, which jet() does have. If you want the uint8 version of the colored image apply im2uint8 to it.

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by