Clear Filters
Clear Filters

How to convert grayscale to rgb ?

119 views (last 30 days)
Ynne
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);
end
else % image is indexed
im = ind2rgb(im, map);
end
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 ?
  16 Comments
Umer Sajid
Umer Sajid on 7 Jul 2021
Hellow , Hope you are fine. I am looking to convert grayscale image dataset folder to RGB image and then store it into another folder.
My Question is How can i perform this operation Please
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.
  9 Comments
Walter Roberson
Walter Roberson on 8 Oct 2020
you accidentally created a variable named ind2rgb
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
Hi,
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!
GRAY SCALE TO RGB IMAGE Structure
%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)
end
imshow(im)
title(string(filename) + colorscale );
Resize the test image to match the ggogleNET network input size for example [224 224].
I = imresize(im, [224 224]);
imshow(I)
  4 Comments
Walter Roberson
Walter Roberson on 2 Oct 2021
[im, cmap] = imread(filename);
if ~isempty(cmap)
im = ind2rgb(im, cmap);
end
if ndims(im) < 3
im = im(:,:,[1 1 1]);
end
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.

Community Treasure Hunt

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

Start Hunting!