[Python] OpenCV SharpeningLanguage/Python2022. 11. 6. 21:19
Table of Contents
반응형
Python에서 OpenCV를 사용하여 Sharpening 하는 방법에 대해 알아보겠습니다.
Sharpening
Sharpening 기법은 Bluring과 반대되는 개념으로, 초점이 잘 맞은 사진처럼 사물의 윤곽이 뚜렷하고 선명한 느낌이 나도록 하는 것이다.
설치
Python 에서 OpenCV 를 사용하기 위해 패키지를 설치합니다.
$ pip install opencv-python
예제
원본 이미지에 여러가지의 커널을 적용하여 선명하게 표현하였습니다.
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('images/lenna.png', cv2.IMREAD_GRAYSCALE)
# 커널 생성(대상이 있는 픽셀을 강조)
kernel_sharpen_1 = np.array([[0, -1, 0],
[-1, 5, -1],
[0, -1, 0]])
kernel_sharpen_2 = np.array([[-1, -1, -1],
[-1, 9, -1],
[-1, -1, -1]])
kernel_sharpen_3 = np.array([[1, 1, 1],
[1, -7, 1],
[1, 1, 1]])
kernel_sharpen_4 = np.array([[-1, -1, -1, -1, -1],
[-1, 2, 2, 2, -1],
[-1, 2, 8, 2, -1],
[-1, 2, 2, 2, -1],
[-1, -1, -1, -1, -1]]) / 8.0
smoothed = cv2.GaussianBlur(image, (5, 5), 1)
unsharped = cv2.addWeighted(image, 1.5, smoothed, -0.5, 0)
# 커널 적용
image_sharp1 = cv2.filter2D(image, 0, kernel_sharpen_1)
image_sharp2 = cv2.filter2D(image, 0, kernel_sharpen_2)
image_sharp3 = cv2.filter2D(image, 0, kernel_sharpen_3)
image_sharp4 = cv2.filter2D(image, 0, kernel_sharpen_4)
fig, ax = plt.subplots(2, 3, figsize=(10, 5))
ax[0][0].imshow(image, cmap='gray')
ax[0][0].set_title('Original Image')
ax[0][1].imshow(unsharped, cmap='gray')
ax[0][1].set_title('addWeighted')
ax[0][2].imshow(image_sharp1, cmap='gray')
ax[0][2].set_title('image_sharp1')
ax[1][0].imshow(image_sharp2, cmap='gray')
ax[1][0].set_title('image_sharp2')
ax[1][1].imshow(image_sharp3, cmap='gray')
ax[1][1].set_title('image_sharp3')
ax[1][2].imshow(image_sharp4, cmap='gray')
ax[1][2].set_title('image_sharp4')
plt.show();
결과
필터에 따라 Sharpening 적용된 이미지를 확인합니다.
반응형
'Language > Python' 카테고리의 다른 글
Pandas 마스터하기: 데이터 조작을 위한 고급 기술 (82) | 2024.01.28 |
---|---|
초보자를 위한 Pandas 소개 (76) | 2024.01.27 |
[Python] Python 기초(2) (0) | 2022.10.09 |
[Python] Python 기초(1) (0) | 2022.10.09 |
[Python] 시각화 기초(이미지) (0) | 2022.09.06 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!