Reputation: 2027
I have read this image:
taken its FFT (2D) and then Inverse FFT to get exactly the image back:
imfft = fft2(photographer);
im = uint8(ifft2(imfft));
imshow(im); %Output is same image
But when I change the fourier and take only the real part,
imfft = real(fft2(photographer));
im = uint8(ifft2(imfft));
imshow(im);
I get an image like this (note that size change is irrelevant and only due to saving it from Matlab figure handler):
Why does this happen?
UPDATE
As suggested, this question was posted on DSP StackExchange and got the answer here
Upvotes: 1
Views: 613
Reputation: 70733
The real part represents only symmetric basis vectors (cosine waves that are symmetric around the center of an FFT aperture). So any IFFT reconstruction using only the real part (all imaginary components == 0) can only (re)produce images that are symmetric around the center (by distorting them per your example, for instance).
Upvotes: 1