How to convert grayscale to rgb ?

229 views (last 30 days)
Ynne on 16 Jan 2018
Edited: The Anh Vuong on 2 Oct 2021
I used the following script to convert grayscale image to rgb
[im, map] = imread('frame1.jpg');
if(isempty(map)) % image is RGB or grayscale
if(size(im, 3) == 1) % image is grayscale
im = cat(3, im, im, im);
else % image is indexed
im = ind2rgb(im, map);
with frame1 is grayscale. The problem is that when i execute imshow(im) it still without colors but size(im) is 144 176 3 I'm confused, how can i obtain image with colors ?
Image Analyst
Image Analyst on 8 Jul 2021
@Umer Sajid, use the FAQ:
Inside the loop, create input and output filenames, then use cat() and imwrite():
rgbImage = cat(3, grayImage, grayImage, grayImage);
imwrite(rgbImage, outputFileName);
See full demo attached.

Sign in to comment.

Answers (2)

Image Analyst
Image Analyst on 16 Jan 2018
You can apply various colormaps with ind2rgb():
map = hsv(256); % Or whatever colormap you want.
rgbImage = ind2rgb(im, map); % im is a grayscale or indexed image.
Image Analyst
Image Analyst on 8 Oct 2020
Set a breakpoint on that line then when it stops there, type this into the command window and tell us what it says
>> which -all ind2rgb
You should see this:
>> which -all ind2rgb
C:\Program Files\MATLAB\R2020b\toolbox\matlab\images\ind2rgb.m
Or for whatever version of MATLAB you're using. You should not see any other lines that indicate that ind2rgb is a variable. If there are, you did something wrong - something to overwrite the built in ind2rgb() function with your own function or variable.

Sign in to comment.

The Anh Vuong
The Anh Vuong on 1 Oct 2021
Edited: The Anh Vuong on 1 Oct 2021
by using of imges to trained of Network , I have this problem. So I would like to share you a converter of converting automaic gray image to color and working later with im resize function.
Have Fun!
%filename = "Testimage_gray.PNG" or "Testimage_gray.jpg"
%filename = "Testimage_color.PNG" or "Testimage_color.jpg"
im = imread(filename);
colorscale ="-- color picture"
if(size(im, 3) == 1) % image is grayscale
colorscale ="-- gray picture"
[rgbgray,cmap] = gray2ind(im,256)
im = cat (3,rgbgray,rgbgray, rgbgray)
title(string(filename) + colorscale );
Resize the test image to match the ggogleNET network input size for example [224 224].
I = imresize(im, [224 224]);
The Anh Vuong
The Anh Vuong on 2 Oct 2021
Edited: The Anh Vuong on 2 Oct 2021
I have tested your code. It is working too.
We have now 3 methods to convert gray image to "color gray imager" for processing
Have a fun by programming!

Sign in to comment.


Find more on Modify Image Colors 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!