Effacer les filtres
Effacer les filtres

Separating RGB components from two different .png files

2 vues (au cours des 30 derniers jours)
fiona rozario
fiona rozario le 3 Avr 2017
Modifié(e) : fiona rozario le 8 Juin 2017
I used a file 'facebook.png' and separated the RGB components. The following code worked fine.
if true
red=f(:,:,1); %Sieved R component
green=f(:,:,2); %Sieved G component
blue=f(:,:,3); %Sieved B component
end
But I used the same code for 'android.png' and I got an error 'Index exceeds matrix dimensions.', 'green=f(:,:,2); %Sieved G component'.
Why are the two files being treated differently?

Réponses (2)

KSSV
KSSV le 3 Avr 2017
If you read RGB image file it will be 3D matrix and hence you can separate R,G and B as you did. If the file is binary, on reading it you will get 2D matrix. Check the size of matrix obtained on reading android.png, it would be 2D. So you cannot extract it like 3D matrix and error popped.
  6 commentaires
Image Analyst
Image Analyst le 8 Juin 2017
It has a width and a height, and only one color plane. So it's 2-D. Do you have a definition of 2-D different than that?
fiona rozario
fiona rozario le 8 Juin 2017
Modifié(e) : fiona rozario le 8 Juin 2017
No...I thought it would have just two colour channels and was wondering how that could be possible. Thanks, for the code below...

Connectez-vous pour commenter.


Image Analyst
Image Analyst le 8 Juin 2017
See this code demo:
fontSize = 20;
filename = 'android.png';
% Read in indexed image.
[img, storedColorMap] = imread(filename);
[rows, columns, numberOfColorChannels] = size(img)
% Display indexed image without colormap being applied.
subplot(3, 2, 1);
imshow(img, []);
caption = sprintf('Indexed image without\ncolormap being applied');
title(caption, 'FontSize', fontSize);
% Display indexed image with colormap being applied.
subplot(3, 2, 2);
imshow(img, storedColorMap);
caption = sprintf('Indexed image with\ncolormap being applied');
title(caption, 'FontSize', fontSize);
% Convert to RGB image by appying the colormap
rgbImage = ind2rgb(img, storedColorMap);
% Display RGB image.
subplot(3, 2, 3);
imshow(rgbImage);
title('RGB Image', 'FontSize', fontSize);
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Display the three color channels separately
subplot(3, 2, 4);
imshow(redChannel);
title('Red Channel Image', 'FontSize', fontSize);
subplot(3, 2, 5);
imshow(greenChannel);
title('Green Channel Image', 'FontSize', fontSize);
subplot(3, 2, 6);
imshow(blueChannel);
title('Blue Channel Image', 'FontSize', fontSize);

Catégories

En savoir plus sur Modify Image Colors dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by