When dealing with real data, Fourier Transform produces symmetric results and FFT algorithms discards half of it. An input with 1024 points will yield only 513 points in the output.

However, in image processing, when Fourier Transform is calculated, the size of the output image is same as that of the input image. Assume that the images are 2D. The (pixel) value of image function f(x, y) is still real. So, why do we still have an output image size same as input?

  • 1
    $\begingroup$ An FFT with 1024 real valued inputs produces 1024 scalar valued outputs, 2 outputs as real values, and 1022 outputs values as pairwise components of 511 complex points. $\endgroup$ – hotpaw2 Feb 1 at 21:23


Size of FFT in 1D is not half of the signal length. It's still the signal length (assuming FFT length was of the signal length). However for real data, due to conjugate symmetry, half of this is redundant and can be dicarded to reduce storage. Note however that, when it's required to process the FFT data, you have to construct the full length from the half and proceed.

This is also the reason why spectral analysis software display only positive frequencies for real data; i.e, negative frequencies will be a mirror copy (of the magnitude) of positive frequencies.

But you don't have to discard the half. You can just retain it.

For image processing, the symmetry of FFT for real input data again exist and if you wish you can also dicard half of the image FFT data. Whether this will be employed or not depends on the intentions of the package.


Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.