소스 뷰어
import cv2, numpy as np, matplotlib.pyplot as plt
# 이미지 불러오기 (흑백 이미지로 변환)
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 커널 크기 설정 (6개)
kernel_sizes = [3, 5, 7, 9, 11, 13]
# 폰트 사이즈
fs = 12
# 결과 출력
plt.figure(figsize=(18, 12)) # 화면 크기 조정
# 각 커널 크기별로 이미지를 출력
for idx in range(0, len(kernel_sizes), 2): # 두 개씩 묶어서 출력
# 첫 번째 커널 크기
ks1 = kernel_sizes[idx]
blurred_image1 = cv2.GaussianBlur(image, (ks1, ks1), 0)
log1 = cv2.Laplacian(blurred_image1, cv2.CV_64F)
log_abs1 = np.abs(log1).astype(np.uint8)
# 두 번째 커널 크기
ks2 = kernel_sizes[idx + 1]
blurred_image2 = cv2.GaussianBlur(image, (ks2, ks2), 0)
log2 = cv2.Laplacian(blurred_image2, cv2.CV_64F)
log_abs2 = np.abs(log2).astype(np.uint8)
# 첫 번째 커널 크기 블러 이미지 출력
plt.subplot(len(kernel_sizes)//2, 4, 4 * (idx//2) + 1)
plt.title(f"Blurred Image (Kernel {ks1}x{ks1})", fontsize=fs)
plt.imshow(blurred_image1, cmap='gray')
plt.axis('off')
# 첫 번째 커널 크기 LoG 이미지 출력
plt.subplot(len(kernel_sizes)//2, 4, 4 * (idx//2) + 2)
plt.title(f"LoG (Kernel {ks1}x{ks1})", fontsize=fs)
plt.imshow(log_abs1, cmap='gray')
plt.axis('off')
# 두 번째 커널 크기 블러 이미지 출력
plt.subplot(len(kernel_sizes)//2, 4, 4 * (idx//2) + 3)
plt.title(f"Blurred Image (Kernel {ks2}x{ks2})", fontsize=fs)
plt.imshow(blurred_image2, cmap='gray')
plt.axis('off')
# 두 번째 커널 크기 LoG 이미지 출력
plt.subplot(len(kernel_sizes)//2, 4, 4 * (idx//2) + 4)
plt.title(f"LoG (Kernel {ks2}x{ks2})", fontsize=fs)
plt.imshow(log_abs2, cmap='gray')
plt.axis('off')
pass
plt.tight_layout()
plt.show()