Perform the following steps:
- Import the packages:
import cv2import numpy as npimport matplotlib.pyplot as plt
- Read the image as grayscale and convert it to the np.float32 datatype:
image = cv2.imread('../data/Lena.png', 0).astype(np.float32) / 255
- Convert the image from the spatial domain to the frequency domain using the discrete Fourier transform:
fft = cv2.dft(image, flags=cv2.DFT_COMPLEX_OUTPUT)
- Shift the FFT results in such a way that low frequencies are located at the center of the array:
fft_shift = np.fft.fftshift(fft, axes=[0, 1])
- Set the amplitudes for high frequencies to zero, leaving the others untouched:
sz = 25mask = np.zeros(fft_shift.shape, np.uint8)mask[mask.shape[0]//2-sz:mask.shape[0]//2+sz, mask.shape[1]//2-sz:mask.shape[1]//2+sz, ...