Ich möchte die Fourier-Transformation eines Bildes in MATLAB invertieren, aber das Ergebnis ist nicht das Originalbild (wie es sein sollte). Es gibt offensichtlich einige Implementierungsdetails, von denen ich nicht weiß, dass dies das Problem verursacht. Hier ist der Code:Warum liefert diese inverse Fourier-Transformation nicht die korrekten Ergebnisse?
img = imread('img.jpg');
fft = fft2(img);
inv = ifft2(fft);
imshow(inv);
Eigentlich scheint es, dass FFT2 das für Sie behandelt. Wenn Sie 'type fft2' in das Befehlsfenster eingeben, können Sie sehen, dass ein 3-D-Eingang' x' in der Operation 'fft (fft (x, [], 2), [], 1)' resultiert eine FFT über die zweite, dann erste Dimension, während ein 2-D-Eingang 'x' (wenn Sie jede Farbebene separat passieren) einen Aufruf von [FFTN] (http://www.mathworks.com/help/techdoc) zur Folge hat /ref/fftn.html). Beim Vergleich der einzelnen Methoden beträgt der maximale absolute pixelweise Unterschied zwischen den Ergebnissen etwa 5.6e-10, was wahrscheinlich auf Unterschiede in der Reihenfolge der Operationen zurückzuführen ist. Kurz gesagt, die beiden sind fast gleichwertig. – gnovice
+1 für die Freigabe dieser Funktion ... –