Fourier transform for image data set

조회 수: 3 (최근 30일)
Mohamed Ahmed
Mohamed Ahmed 2020년 11월 17일
댓글: Mohamed Ahmed 2020년 11월 17일
Hello everyone
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 but I can't find a way to access all 10 subfolders, and convert the images using (for loop).
This code gives me an error (MAP must be a m x 3 array) in (I = rgb2gray(I);) because of the size of (I).
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 regars

답변 (1개)

KALYAN ACHARJYA
KALYAN ACHARJYA 2020년 11월 17일
편집: KALYAN ACHARJYA 2020년 11월 17일
"This code gives me an error (MAP must be a m x 3 array) in (I = rgb2gray(I);) because of the size of (I)."
May be you are using Gray Scale Images, if yes then remove the rgb2gray assignmnet line and rest code will be same.
  댓글 수: 2
Mohamed Ahmed
Mohamed Ahmed 2020년 11월 17일
Yes, I need to convert it first to gray scale then apply the fourier transform,
I tried it with the (rgb2gray) function it worked but the resulting image was distorted
Mohamed Ahmed
Mohamed Ahmed 2020년 11월 17일
*without

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by