Previously I asked this question about FFT artifacts.
The solution that is most easily implemented is using an apodizing mask on the original image, tapering the borders to zero making the image left-right and top-bottom continuous.
The rest of the question is best illustrated with a series of pictures. First, we have the original image:
Now, we apply the cosine-tapered apodizing mask:
Note that we use this mask to do operations in Fourier Space on the second image; to get the power spectrum we will have to use a similar mask again but this is applied to both images so that is not the issue here. (i find it difficult to phrase this properly; please place a comment if you want me to elaborate).
So, now we use a FFT on the second image. In Fourier space we may do things with the image, but to trace our steps and see if the machinery works, we leave it be and just use the inverse-FFT back to real space.
Back in real space, we take the part of the image that was not tapered (so, the inner square) and obtain:
Now, for both the first and the third image I now want to find the power spectrum. In essence, this comes down to (1) using an apodizing mask again, (2) transforming to fourier space once more, and (3) taking the azimuthal average as a function of radius.
As a last subtelty, the power spectrum of the third image is multiplied by a factor $(N_1 / N_3)^2$, where $N_1$ is the number of pixels per side of the first image and $N_3$ the number of pixels per side of the third image. This factor is there to correct for the normalization $1/N$ in the definition of the FFT in numpy
.
Doing all this, we obtain the following power spectra:
Clearly, the power spectrum of the third image (in red) has lost power with respect to the power spectrum of the original, first image (in blue). What is the cause of this and can it be compensated for? Or will I have to rely on more elaborate solutions than an apodizing mask (as given here) to not lose this power?
No comments:
Post a Comment