Failed Scientist
Failed Scientist

Reputation: 2027

Why real part of fft converts image into rotation + original?

I have read this image:

enter image description here

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):

enter image description here

Why does this happen?

UPDATE

As suggested, this question was posted on DSP StackExchange and got the answer here

Upvotes: 1

Views: 613

Answers (1)

hotpaw2
hotpaw2

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

Related Questions