From separate channels to RGB

3 views (last 30 days)
Hello everyone,
I have images in single bands ( Red, Blue and Green) and I need to combine them to obtain an RGB image.
R = imread('red.png');
G = imread('green.png');
B = imread('blue.png');
RGB = cat(3,R,G,B);
I wrote this code: how can I write and save the so obtained RGB image?
Thanks for your kind help.

Accepted Answer

Stephen23
Stephen23 on 2 Feb 2022
Edited: Stephen23 on 2 Feb 2022
I am guessing that the image files are actually Truecolor RGB (with all channels identical) rather than true Grayscale (a sadly all-too-common mixup made by many apps and users), in which case this should work:
RGB = cat(3,R(:,:,1),G(:,:,1),B(:,:,1));
imwrite(RGB, 'rgb.png');
Note that this does not scale/weight the channels!
  5 Comments
Claudio Esposito
Claudio Esposito on 2 Feb 2022
I was just trying what would have happen because R-G-B seems too reddish purple in colour.
Stephen23
Stephen23 on 2 Feb 2022
"I was just trying what would have happen because R-G-B seems too reddish purple in colour."
You might need to consider this:

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 2 Feb 2022
imwrite(RGB, 'rgb.png');
  1 Comment
Claudio Esposito
Claudio Esposito on 2 Feb 2022
Thank you for your replying.
I already tried that, but Matlab displays this error:
Error using writepng (line 23)
PNG image data must be either MxN or MxNx3.
Error in imwrite (line 566)
feval(fmt_s.write, data, map, filename, paramPairs{:});
Error in RGB_conversion (line 14)
imwrite(RGB, 'rgb.png')

Sign in to comment.

Categories

Find more on Image Processing Toolbox 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!