how to convert grey image to RGB

7 views (last 30 days)
hi All,
i have 60 slice image SPECT in grey scale. How to convert all to RGB?
Below is my coding.
P = zeros(103, 103, 60);
for K = 1 : 60
K_file=30+10*K;
petname = sprintf('I%d.dcm', K_file);
P(:,:,K) = dicomread(petname);
scale = 130/103 ;
Pi(:,:,K) = imresize(P(:,:,K),scale) ; % where P is your 103*103 3D matrix
end
rgbImage = gray2rgb(Pi);
imshow3D(rgbImage)
this is my function
function [Image]=gray2rgb(Image)
%Gives a grayscale image an extra dimension
%in order to use color within it
[m n]=size(Image);
rgb=zeros(m,n,3);
rgb(:,:,1)=Image;
rgb(:,:,2)=rgb(:,:,1);
rgb(:,:,3)=rgb(:,:,1);
Image=rgb/255;
end
i got error
Unable to perform assignment because the size of the left side is 130-by-7800 and the size of
the right side is 130-by-130-by-60.
Error in gray2rgb (line 6)
rgb(:,:,1)=Image;
Error in sliderspect1 (line 12)
rgbImage = gray2rgb(Pi);
I DONT KNOW HOW COME LEFT SIDE-BY-7800...

Accepted Answer

Image Analyst
Image Analyst on 7 Jan 2021
This is wrong:
[m n]=size(Image);
Why? See Steve's blog:
It should be
[rows, columns, numberOfSlices] = size(Image);
but don't use Image as the name of your variable since that's a built-in function (almost). Also, the pet/spect image is already grayscale. You shouldn't need to convert to gray scale.
Also, you did not make a color image, you made a volumetric image with 60 gray scale slices in it.
I'm not sure what you're trying to do, but what you did doesn't make sense to me.
If you're trying to make a volumetric image with 60 RGB slices in it instead of 60 gray scale images, you'll need a 4-D image where the 4th dimension is the slice number and the third dimension is the color channel (1, 2, or 3).
  2 Comments
mohd akmal masud
mohd akmal masud on 9 Jan 2021
actually i want the grey image convert to RGB image.
as I attached, grey image and RGB. RGB come from grey image.
Image Analyst
Image Analyst on 9 Jan 2021
Edited: Image Analyst on 9 Jan 2021
You can do
grayImage = rgb2gray(rgbImage);
but it might look weird unless you have the colormap they applied to the gray image to get that rgb image. If you have that colormap, you can do
grayImage = rgb2ind(rgbImage, colorMap);
and this will of course be a lot better and actually accurate, unlike the first way.
In the future, please start a new question for something like this.

Sign in to comment.

More Answers (0)

Categories

Find more on Convert Image Type 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!