What are low frequencies in an image while they don't exist in reality?

1 view (last 30 days)
I'm really frustrated by these frequency components and their assignments. I have images(3D profiles) which are height profiles of surfaces. I use fft2 to get the power spectral density of my images and the goal in to observe what wavelengths are available in them.
Now, I assign qx and qy values to the 2D FFT which both are in the range of 0-Nyquist frequency which we all know. After this, I apply a lower limit on my frequencies, i.e. frequencies that are smaller than the smallest possible available frequency are removed which is of order 1/L where L is the size of my image in each direction. Because how can I have a wavelength available which is higher than my image size??? [worth mentioning that mean value of my image is set to zero before any calculation applied]
If this is true, then what does this Parseval's theorem say? The root mean square of my surface height profile is equal to the area under my 2D FFT when no frequency components are removed. Why? Should I remove those frequencies which does not exist in real world? Or do they mean something? What I expected was root mean square is equal to the area under FFT after I remove those unreal frequencies.

Answers (1)

Walter Roberson
Walter Roberson on 15 Nov 2013
Frequency 0 corresponds to mean() of the data; in this case the average height.
  4 Comments
Chris Turnes
Chris Turnes on 3 Aug 2017
You can also think of zero-padding as interpolating the non-padded FFT values. For simplicity, consider a 1-D signal of length N and zero padding it with N entries (at the end):
>> y1 = fft(x, N);
>> y2 = fft(x, 2*N);
Then you'll see y1 and y2(1:2:end) take on the same values (up to roundoff), while y2(2:2:end) is the same (up to roundoff) as fft(exp(-1j*pi/N.*(0:(N-1))').*x).
So the "extra frequencies" you have are just interpolated from the FFT values at the frequencies you get without zero padding.
It's a bit strange to think of what frequencies are "available in reality." The samples you have, taken at the interval you took them at, define the discrete spectrum you can get. Any way you manipulate the FFT through padding is just taking that discrete spectrum and interpolating it onto a new set of grid points, but the fundamental information doesn't change.
Walter Roberson
Walter Roberson on 3 Aug 2017
Remember that fft() assumes that the signal is periodic. It is calculating sine / cosine waves of indefinite length, not calculating the combination of square pulses needed to replicate the signal with "just as many repetitions as needed".

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!