소스 뷰어
import cv2, numpy as np, matplotlib.pyplot as plt
# 이미지 불러오기
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 가우시안 커널 생성
ks = kernel_size = 17 # 커널 사이즈 (반드시 홀수여야 합니다)
sigma = ks/3 # 표준편차
# 1차원 가우시안 커널 생성
gaussian_1d = cv2.getGaussianKernel(ks, sigma)
# 2차원 가우시안 커널 생성 (1차원 커널의 외적)
gaussian_2d = np.outer(gaussian_1d, gaussian_1d)
# filter2D를 사용하여 가우시안 블러 적용
blurred_image = cv2.filter2D(image, -1, gaussian_2d)
# 원본 이미지와 가우시안 블러 적용된 이미지 비교 출력
plt.figure(figsize=(10, 5))
# 원본 이미지 출력
plt.subplot(1, 2, 1)
plt.imshow(image, cmap="gray")
plt.title('Original Image')
plt.axis('off')
# 가우시안 블러링된 이미지 출력
plt.subplot(1, 2, 2)
plt.imshow(blurred_image, cmap="gray")
plt.title(f'{ks}x{ks} Gaussian Blurred Image using filter2D')
plt.axis('off')
plt.tight_layout()
plt.show()