728x90
함수 설명
이미지에서 중요한 영역이 주변보다 어두운 경우, 반전된 이미지를 이용하면 해당 영역을 좀 더 쉽게 관찰할 수 있습니다. 또는 색반전을 통해 원본 이미지와는 다른 분위기의 새로운 이미지를 얻을 수 있습니다.
색반전의 원리는 아래와 같습니다.
반전된 이미지의 픽셀 값 = (이미지가 표현할 수 있는 최대 픽셀 값) - (원본 이미지의 픽셀 값)
예를 들어, 8bit 이미지의 경우 각 픽셀이 0부터 255의 값을 가지기 때문에 새로운 이미지는 255 에서 원본 이미지의 픽셀 값을 뺀 값을 가집니다.
RGB 칼라 영상의 경우는 3 channel 별로 각각 위의 작업을 진행해줍니다.
코드 설명
python에서 색반전을 할 수 있는 방법은 다양합니다.
그 가운데 몇가지 방법에 대해 소개하도록 하겠습니다.
1. 직접 계산
output = 255 - image
2. numpy 라이브러리
import numpy as np
output = np.invert(image)
3. OpenCV 라이브러리
import cv2
output = cv2.bitwise_not(image)
4. scikit-image 라이브러리
from skimage.util import invert
output = invert(image)
예제
흑백 이미지를 통해 반전 효과를 확인하는 코드입니다.
import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage.util import invert
# Image Load (cv2.imread는 BGR로 load 하기에 Gray로 변환)
image = cv2.imread("mri.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 직접 계산
output1 = 255 - image
# numpy 라이브러리
output2 = np.invert(image)
# OpenCV 라이브러리
output3 = cv2.bitwise_not(image)
# scikit-image 라이브러리
output4 = invert(image)
# view
img_list = [image, output1, output2, output3, output4]
title_list = ['Original', 'Calculate', 'Numpy', 'OpenCV', 'Scikit-image']
for i in range(len(img_list)):
plt.subplot(2, 3, i+1)
plt.imshow(img_list[i], cmap='gray')
plt.title(title_list[i])
plt.axis('off')
plt.show()
원본 영상과 비교하여 흑, 백이 반전된 것을 확인할 수 있습니다.
728x90
'Image Processing (Python)' 카테고리의 다른 글
Sharpening (샤프닝) (1) | 2021.11.15 |
---|---|
Image Read (이미지 불러오기) (0) | 2021.11.11 |
Zero Padding (0) | 2021.11.09 |
Z-Score Standardization (표준화) (0) | 2021.11.08 |
Min-Max Normalization (정규화) (0) | 2021.11.04 |
댓글