Performing DFT twice on an image. Why am I getting an inverted image? I was asked to perform DFT on an image twice as a part of my school assignment. Why am I getting a blurry inverted image when I perform DFT on an image twice? Sorry, I'm new to image processing and signal processing. Can someone help me explain this mathematically?

Here's the result I obtained.
PS: I used FFT algorithms to perform the DFT. (Python and numpy, np.fft.fft2)


[Edit]: I haven't shifted the DC value, F(0,0), to the center as usual, for the magnitude spectra given here. (I haven't used np.fft.fftshift)

Here's the exact code I used.

import numpy as np
from matplotlib import pyplot as plt

img = plt.imread("Q4.tif")
dft = np.fft.fft2(img)
dft_of_dft = np.fft.fft2(dft)

spectrum = np.abs(dft)
c = 255 / log(1 + np.amax(spectrum))
spectrum = c*np.log(spectrum)

double_dft_spectrum = np.abs(dft_of_dft)
c = 255 / log(1 + np.amax(double_dft_spectrum))
double_dft_spectrum = c*np.log(double_dft_spectrum)

p, axarr = plt.subplots(1, 3, figsize=(12,4))
axarr[0].imshow(img, cmap = 'gray')
axarr[0].set_title('Original Image')
axarr[1].imshow(spectrum, cmap = 'gray')
axarr[1].set_title('DFT')
axarr[2].imshow(double_dft_spectrum, cmap = 'gray')
axarr[2].set_title('Double DFT')
plt.show()
It's a DFT property that if you apply DFT twice to input data, you get the original signal flipped (circularly). Stated mathematically for 1D case:

$$ x[n] \xrightarrow{ N-DFT } X[k] $$
$$ X[k] \xrightarrow{ N-DFT } Y[k] = N x[-k] $$

similar result can be shown for 2D case. And as you can see, the resulting output is the flipped (horizontally and vertically) original data.

You can see mathematical derivation in other questions on this site. I remember having answered that before. Please check this site for applying DFT or FFT twice. 

Such as this answer...