Compare commits

..

2 Commits

Author SHA1 Message Date
4bab354a95
Clean fft.py 2024-05-14 00:24:02 +02:00
451bd55219
Add fft.py 2024-05-14 00:17:29 +02:00

41
datasets/raise/fft/fft.py Normal file
View File

@ -0,0 +1,41 @@
from scipy import fftpack
import numpy as np
import imageio
from PIL import Image, ImageDraw
import matplotlib.pyplot as plt
image = imageio.imread('image.jpg', mode = 'L')
#plt.imshow(image, cmap = 'grey')
#plt.show()
# convert image to numpy array
imageNp = np.array(image)
# fft of image
fft1 = fftpack.fftshift(fftpack.fft2(imageNp))
# create a low pass filter image
x, y = imageNp.shape
# size of circle
CIRCLE_RADIUS = 50
eX, eY = CIRCLE_RADIUS, CIRCLE_RADIUS
# create a box
middleX, middleY = x / 2, y / 2
bbox = (middleX - eX, middleY - eY, middleX + eX, middleY + eY)
lowPass = Image.new('L', imageNp.shape, color = 0)
draw = ImageDraw.Draw(lowPass)
draw.ellipse(bbox, fill = 1)
lowPassNp = np.array(lowPass)
# multiply both the images
filtered = np.multiply(fft1, lowPassNp.T)
# inverse fft
ifft2 = np.real(fftpack.ifft2(fftpack.ifftshift(filtered)))
ifft2 = np.maximum(0, np.minimum(ifft2, 255))
# save the image
imageio.imsave('fft-then-ifft.png', ifft2.astype(np.uint8))