How to separate an image to rgb?

14 vues (au cours des 30 derniers jours)
Jitha
Jitha le 31 Déc 2013
Modifié(e) : DGM le 12 Fév 2023
how to divide an image into its r,g,and b colour planes,

Réponse acceptée

Image Analyst
Image Analyst le 31 Déc 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 commentaires
Walter Roberson
Walter Roberson le 14 Mai 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 le 29 Juil 2019
Déplacé(e) : DGM le 12 Fév 2023
hahaha too long

Connectez-vous pour commenter.

Plus de réponses (3)

Sailesh Sidhwani
Sailesh Sidhwani le 25 Oct 2018
Modifié(e) : Sailesh Sidhwani le 29 Juil 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 le 31 Déc 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 le 29 Juil 2019
Modifié(e) : DGM le 12 Fév 2023
how about imsplit function?
[R G B] = imsplit(myImage);

Catégories

En savoir plus sur Red dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by