FFT gambar berikut (ukuran gambar 512 x 512, kotak putih berukuran 20 x 40)
# Import Library
import numpy as npimport cv2from 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 * 255plt.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.
0 Komentar