How to separate an image to rgb?

11 views (last 30 days)
Jitha
Jitha on 31 Dec 2013
Edited: DGM on 12 Feb 2023
how to divide an image into its r,g,and b colour planes,

Accepted Answer

Image Analyst
Image Analyst on 31 Dec 2013
No reshaping is needed. Simply extract the color channels you need:
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
Then, to reverse the process and create an RGB image from three separate color channels:
% Recombine separate color channels into a single, true color RGB image.
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
  3 Comments
Walter Roberson
Walter Roberson on 14 May 2017
This code would definitely work if you have an RGB image stored in a variable named rgbImage .
It is possible, however, that this is not what you want done. What you might want done might be
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
z = zeros(size(rgbImage), class(rgbImage));
redImage = z; redImage(:,:,1) = redChannel;
greenImage = z; greenImage(:,:,2) = greenChannel;
blueImage = z; blueImage(:,:,3) = blueChannel;
subplot(2,2,1); image(rgbImage);
subplot(2,2,2); image(redImage);
subplot(2,2,3); image(greenImage);
subplot(2,2,4); image(blueImage);
atersaw tigyhun
atersaw tigyhun on 29 Jul 2019
Moved: DGM on 12 Feb 2023
hahaha too long

Sign in to comment.

More Answers (3)

Sailesh Sidhwani
Sailesh Sidhwani on 25 Oct 2018
Edited: Sailesh Sidhwani on 29 Jul 2019
Starting R2018b, Image Processing Toolbox has a new function "imsplit" which does exactly this: https://www.mathworks.com/help/images/ref/imsplit.html

ES
ES on 31 Dec 2013
I=imread('image.jpg')
will give I (a 3d array, of size [x,y,3] )where x and y are the dimensions of the image. 3 is for R, G, and B components.
To separate out the three components, you can do a
R = reshape(I(:,:,1),[],1);
G = reshape(I(:,:,2),[],1);
B = reshape(I(:,:,3),[],1);

Negesse Tadesse
Negesse Tadesse on 29 Jul 2019
Edited: DGM on 12 Feb 2023
how about imsplit function?
[R G B] = imsplit(myImage);

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!