Hello!

I am trying to do the following experiment using MATLAB (this is a math question, not a MATLAB question):

1) Calculate the 2D Fourier transform of a grayscale image (range: 0-1/black=0,white=1)

2) Phase shift every single (complex!) pixel in the 2D Fourier transform with the same phase shift value (e.g. 0.5 becomes 0.5i with a phase shift of pi/2)

3) Do an inverse 2D Fourier transform (after the phase shifting) and obtain a new image.

The code I used for the phase shifting:

absoluteValue = abs(fourierImage);

phase = angle(fourierImage) + phaseShift_rad;

newFourierImage = absoluteValue .* exp(phase * 1i);

The thing is that after doing this, the new image looks exactly the same as the original image, however the pixels in the new image are plotted as the absolute value of that pixel. Plotting only the real part does yield a different result, but these are really distorted images, so I am just plotting the absolute values.

My question is: is it correct that the absolute value of the new image looks exactly the same as the original image? If not, what should I be expecting to see?

Thanks for your time