Borrar filtros
Borrar filtros

Converting 3D matrix to 2D matrix image

7 visualizaciones (últimos 30 días)
Kartikeya
Kartikeya el 16 de Oct. de 2023
Comentada: Image Analyst el 20 de Oct. de 2023
I am working with a JPEG image, if it results in a 3D matrix (225x225x3), you can convert it to 2D. If the image is grayscale, it will become a 2D matrix. If it contains color information, it will remain a 3D matrix. Could someone please share the code or steps to be followed.

Respuesta aceptada

Matt J
Matt J el 16 de Oct. de 2023
  8 comentarios
Kartikeya
Kartikeya el 16 de Oct. de 2023
Thanks
Kartikeya
Kartikeya el 16 de Oct. de 2023
May i know what is meant by A, I, RGB in the names

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 16 de Oct. de 2023
Try these two code snippets. The first one gives you a grayscale image, regardless of what's in the file.
originalImage = imread(fullFileName);
% To get a 2-D grayscale image from the file, converting from RGB
% to gray scale if it's not already grayscale.
% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(originalImage)
if numberOfColorChannels > 1
% It's not really gray scale like we expected - it's color.
fprintf('It is not really gray scale like we expected - it is color\n');
% Extract the red channel.
grayImage = originalImage(:, :, 1); % 2 for green, 3 for blue.
% OR ALTERNATIVELY use the rgb2gray() function to do a weighted average of all 3 color channels.
grayImage = rgb2gray(originalImage);
else
% It's already gray scale. Just put it into our grayImage variable.
grayImage = originalImage;
end
The second one gives you an RGB image regardless of what's in the file.
originalImage = imread(fullFileName);
% To get a 2-D grayscale image from the file, converting from RGB
% to gray scale if it's not already grayscale.
% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(originalImage)
if numberOfColorChannels > 1
% It's already RGB. Just put it into our rgbImage variable.
rgbImage = originalImage;
else
% It's not really RGB like we expected - it's grayscale (or indexed). We'll assume it's grayscale here.
fprintf('It is not really RGB like we expected - it is grayscale.\n');
% Concatenate the gray scale image to be all 3 color channels.
rgbImage = cat(3, originalImage, originalImage, originalImage);
end
If it's indexed, we'll need some additional code to use ind2rgb to apply the colormap.
  3 comentarios
Kartikeya
Kartikeya el 18 de Oct. de 2023
@Image Analyst Not getting channel 1 in an Face images even though in Grey-colour based on your code. Can you please help me. I am storing every image in jpeg format.
originalImage = imread('greyface1.jpg');
% To get a 2-D grayscale image from the file, converting from RGB
% to gray scale if it's not already grayscale.
% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(originalImage)
rows = 183
columns = 275
numberOfColorChannels = 3
if numberOfColorChannels > 1
% It's already RGB. Just put it into our rgbImage variable.
rgbImage = originalImage;
else
% It's not really RGB like we expected - it's grayscale (or indexed). We'll assume it's grayscale here.
fprintf('It is not really RGB like we expected - it is grayscale.\n');
% Concatenate the gray scale image to be all 3 color channels.
rgbImage = cat(3, originalImage, originalImage, originalImage);
end
Image Analyst
Image Analyst el 20 de Oct. de 2023
Not sure what you want. You're using the code snippet to make an image an RGB image, but your image is already an RGB image. See? It says numberOfColorChannels = 3 so that means it's already color, and so there is nothing really to do to make it color. I just put it into another, more secriptively named variable. So why should you get gray scale?

Iniciar sesión para comentar.

Categorías

Más información sobre Modify Image Colors en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by