MATLAB Answers

# how to convert grey image to RGB

4 views (last 30 days)
mohd akmal masud on 6 Jan 2021
Edited: Image Analyst on 9 Jan 2021
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...
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

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 CommentsShowHide 1 older comment
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.

R2020b

### Community Treasure Hunt

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

Start Hunting!