Fourier-Transformation von Phase und Größe erhalten - Matlab

Betrag und phase der fourier-Transformation F sind definiert als:

Mag = sqrt(Real(F)^2 + Imaginary(F)^2)

und

Phase = arctan(Imaginary(F)/Real(F))

Ive versucht, zu schreiben, matlab-code, der nimmt in ein Graustufen-Bild-matrix, führt fft2() auf die matrix und berechnet dann die Größe und phase von der Transformation. Ich habe dann wünschen zur Berechnung der imaginären und realen Teile der fourier-Transformation. Dies geschieht durch umstellen der ersten beiden Gleichungen in:

Real = Mag/sqrt(1 + tan(Phase)^2)

und

Imaginary = Real*tan(Phase)

und schließlich die Kombination und inverse fft2:

F = Real + i*Imaginary
image = ifft2(F)

Ich erwarten würde, zu sehen das gleiche Bild wie der Eingang, jedoch bekomme ich Müll. Ist mein Mathe falsch? Meine matlab mfile-code ist wie folgt:

function y = forwardBackwardFFT(image)

F = fft2(image);
mag = sqrt(real(F).^2 + imag(F).^2);
phase = atan(imag(F)./real(F));

re = sqrt((mag.^2)./(1 + tan(phase).^2));
im = re.*tan(phase);
F = re + i*im;
f = ifft2(F);

subplot(1,2,1);
imshow(image);
Title('Original Image');

subplot(1,2,2);
imshow(f);
Title('Image after forward and backward FFT');
y = f;

vielen Dank 🙂

InformationsquelleAutor der Frage Dave Anderson | 2011-06-18

Schreibe einen Kommentar