atomheartmommy
atomheartmommy

Reputation: 41

Computing fft2 of an image in Python

go_dark.jpeg results of the transformation

I am experimenting with Fourier transformations and the built-in NumPy.fft library. I was trying to see the difference between computing just fft2 of an image and fftshift on fft2 of an image. But for some reason, I am not getting the results that I was expecting. I have tried changing images as well but regardless of what I use, I get the same results as below. If someone could help me out here, it would be awesome. This is the code I used:

import numpy as np
import cv2
import matplotlib.pyplot as plt
from scipy import ndimage, fftpack

light = cv2.imread("go_light.jpeg")
dark = cv2.imread("go_dark.jpeg")

g_img = cv2.cvtColor(dark, cv2.COLOR_BGR2GRAY)
di = (np.abs((np.fft.fft2(g_img))))
dm = np.abs(np.fft.fftshift(np.fft.fft2(g_img)))


plt.figure(figsize=(6.4*5, 4.8*5), constrained_layout=False)
plt.subplot(151), plt.imshow(di, "gray"), plt.title("fft");
plt.subplot(152), plt.imshow(dm, "gray"), plt.title("fftshift");
plt.show()

Upvotes: 1

Views: 1027

Answers (1)

Tim Roberts
Tim Roberts

Reputation: 54698

di and dm are floating point values. Matplotlib can't do that. First, try di.astype(np.int8). However, many of the values are out of range. You may need to scale the array.

Upvotes: 1

Related Questions