FFT gambar berikut (ukuran gambar 512 x 512, kotak putih berukuran 20 x 40)



    Image Original
    

# Import Library
import numpy as np
import cv2
from matplotlib import pyplot as plt

# Membaca gambar asli
original_image = cv2.imread('imageOriginal1.png', cv2.IMREAD_GRAYSCALE)

# Melakukan 2D DFT
dft = np.fft.fft2(original_image)
dft_shift = np.fft.fftshift(dft)

# Menampilkan magnitudo spektrum frekuensi setelah 2D DFT
magnitude_spectrum = np.log(np.abs(dft_shift) + 1)
plt.subplot(121), plt.imshow(original_image, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum (2D DFT)'), plt.xticks([]), plt.yticks([])
plt.show()

# Membuat kotak putih berukuran 20 x 40
box = np.zeros_like(original_image)
box[256-10:256+10, 256-20:256+20] = 1
# Menampilkan kotak putih pada gambar asli
image_with_box = original_image + box * 255
plt.imshow(image_with_box, cmap='gray')
#plt.title('Image with White Box'), plt.xticks([]), plt.yticks([])
#plt.show()

# Melakukan 2D FFT Shift pada gambar dengan kotak putih
image_with_box_dft = np.fft.fft2(image_with_box)
image_with_box_dft_shift = np.fft.fftshift(image_with_box_dft)

# Menampilkan magnitudo spektrum frekuensi setelah 2D FFT Shift
# magnitude_spectrum_with_box = np.log(np.abs(image_with_box_dft_shift) + 1)
# plt.subplot(121), plt.imshow(image_with_box, cmap='gray')
plt.title('Image with White Box'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum_with_box, cmap='gray')
plt.title('Magnitude Spectrum (2D FFT Shift)'), plt.xticks([]), plt.yticks([])
plt.show()


Penjelasan : 
Baris kode original_image = cv2.imread('imageOriginal1.png', cv2.IMREAD_GRAYSCALE) digunakan untuk membaca file gambar bernama imageOriginal1.png ke dalam larik NumPy. Fungsi cv2.imread() membutuhkan dua argumen: nama file dari file gambar dan parameter flags opsional. Parameter flags menentukan bagaimana gambar harus dibaca. Dalam hal ini, bendera cv2.IMREAD_GRAYSCALE digunakan untuk membaca gambar dalam mode skala abu-abu. Ini berarti bahwa gambar akan dikonversi ke gambar saluran tunggal dengan nilai mulai dari 0 hingga 255, di mana 0 mewakili hitam dan 255 mewakili putih.

Berikut ini adalah rincian kodenya:
1. original_image =: Ini memberikan hasil dari fungsi cv2.imread() ke variabel original_image.
2. cv2.imread(): Ini adalah fungsi dari pustaka OpenCV yang membaca file gambar.
3. imageOriginal1.png': Ini adalah nama file dari file gambar yang akan dibaca.
4. cv2.IMREAD_GRAYSCALE: Ini adalah flag yang menentukan bahwa gambar harus dibaca dalam mode grayscale.