how to adjust the size of the imported image to use it in (rgb2gray()) ?

1 view (last 30 days)
Hi
I = imread(fname);I'm writing a code for image dataset that has 1 main folder and 10 subfolders within, and I want to apply fourier transform to all images in these folders,
I wrote this code below. It gives me an error (MAP must be a m x 3 array) in (I = rgb2gray(I);) because of the size of (I).
I = imread(fname);
how do I make I = imread(fname) ; into the size that I can use in rgb2gray ?
can you please help me with this ?
code:
clc;
clear all;
img = dir('C:\AppliedProj\Train\0\*.jpg');
Images_num = length(img);
for i = 1:Images_num
fname = strcat('C:\AppliedProj\Train\0\', img(i).name);
I = imread(fname);
I = rgb2gray(I);
%Get Fourier Transform of an image
F = fft2(I);
% Fourier transform of an image
S = abs(F);
%get the centered spectrum
Fsh = fftshift(F);
%apply log transform
S2 = log(1+abs(Fsh));
%reconstruct the Image
F = ifftshift(Fsh);
f = ifft2(F);
path = strcat('C:\AppliedProj\New\0\', img(i).name);
imwrite(f,path);
end
Best regards

Accepted Answer

Shashank Gupta
Shashank Gupta on 20 Nov 2020
Hi Ahmed,
The error "MAP must be a m x 3 array." is generally occurs when one try to pass one channel image(possibly gray image) to
"rgb2gray" function. these function can take two types of input either one pass an RGB image or a colour map. What I understand from your code is, you intent to pass an image and the error is popping up because the image is itself Gray and it doesn't need to pass through rgb2gray function. Suggestion is to just remove or comment out that line of code and it should work for you.
Cheers

More Answers (0)

Community Treasure Hunt

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

Start Hunting!