Page 2 - Praktikum 2.ipynb - Colab
P. 2
Percobaan 2
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 1. Baca gambar (grayscale)
img = cv2.imread("/content/content/grayscaleimage.jpeg", 0) # pastikan file gambar ada di folder kerja
f = np.fft.fft2(img)
plt.subplot(231), plt.imshow(img, cmap='gray'), plt.title("Gambar Asli")
# 2. Hitung Fourier Transform (FFT/DFT)
fshift = np.fft.fftshift(f) # shift ke tengah
magnitude_spectrum = 20*np.log(np.abs(fshift))
plt.subplot(232), plt.imshow(magnitude_spectrum, cmap='gray'), plt.title("Spektrum Fourier")
# 3. Low Pass Filter (LPF)
rows, cols = img.shape
crow, ccol = rows//2, cols//2
mask = np.zeros((rows, cols), np.uint8)
r = 50 # radius LPF
mask[crow-r:crow+r, ccol-r:ccol+r] = 1
fshift_low = fshift * mask
img_back_low = np.fft.ifft2(np.fft.ifftshift(fshift_low))
img_back_low = np.abs(img_back_low)
plt.subplot(233), plt.imshow(img_back_low, cmap='gray'), plt.title("Low Pass Filtered")
# 4. High Pass Filter (HPF)
mask_high = np.ones((rows, cols), np.uint8)
mask_high[crow-r:crow+r, ccol-r:ccol+r] = 0
fshift_high = fshift * mask_high
img_back_high = np.fft.ifft2(np.fft.ifftshift(fshift_high))
img_back_high = np.abs(img_back_high)
plt.subplot(234), plt.imshow(img_back_high, cmap='gray'), plt.title("High Pass Filtered")
# 5. Bandingkan dengan inverse langsung (rekonstruksi citra)
img_back = np.fft.ifft2(np.fft.ifftshift(fshift))
img_back = np.abs(img_back)
plt.subplot(235), plt.imshow(img_back, cmap='gray'), plt.title("Inverse FFT (Rekonstruksi)")
plt.tight_layout()
plt.show()

