MATLAB Answers

How do I convert gray or indexed images to color images?

7 views (last 30 days)
fereshte on 24 May 2014
Edited: Image Analyst on 24 May 2014
Hi. I applied The following code to resize my images. The input images are color images. But as an output, the resized images are gray! How do I correct it?


Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 24 May 2014
That image is a 2D image, an indexed image with a color map. It's not a 3D color RGB image. You need to convert it to an RGB image if you recognize it's an indexed image. Replace your loop with this:
for k = 1:numel(bmpFiles)
fullInputFileName = fullfile(inputFolder,bmpFiles(k).name)
[originalImage, colorMap] = imread(fullInputFileName);
[rows, columns, numberOfColorChannels] = size(originalImage)
if ~isempty(colorMap) && numberOfColorChannels == 1
% It's an indexed image with a colormap.
% Convert it to RGB color
originalImage = ind2rgb(originalImage, colorMap);
[rows, columns, numberOfColorChannels] = size(originalImage)
fullOutputFileName = fullfile(outputFolder, bmpFiles(k).name);
outputImage = imresize(originalImage, [100,50]);
[rows columns numberOfColorChannels] = size(outputImage);
if numberOfColorChannels == 1
% It's monochrome, so convert to color.
outputImage = cat(3, outputImage, outputImage, outputImage);
imwrite(outputImage, fullOutputFileName);

  1 Comment

fereshte on 24 May 2014
wow.its great.dear Image Analyst thank you so much.good luck

Sign in to comment.

More Answers (0)

Sign in to answer this question.