함수 설명
Resize 함수는 원하는 크기로 이미지를 조절할때 사용하는 방법입니다.
이미지의 크기를 확대 혹은 축소 시켜 변형하는 경우, 변형된 이미지의 픽셀 값을 추정해서 할당해야만 합니다. 픽셀 값을 추정하는 방법을 보간법 (Interpolation)이라고 합니다.
보간법에는 이웃 보간법 (Nearest neighbor Interpolation), 선형 보간법 (Linear Interpolation), 이중 선형 보간법 (Bilinear Interpolation), 큐빅 보간법 (Cubic Interpolation) 등이 있습니다.
여러 보간법 중 이미지 처리에서 가장 많이 사용하는 보간법은 이중 선형 보간법입니다.
이중 선형 보간법은 1차원 직선에서 이루어지는 선형 보간법을 2차원인 이미지 평면에 적용시킨 방법입니다.
1) 선형 보간법 : 픽셀 A와 B 직선 사이에 선형 보간법으로 생성된 픽셀 C의 값은 아래와 같이 계산됩니다.
2) 이중 선형 보간법 : 2차원 평면에서 이루어지는 이중 선형 보간법은 가장 인접한 4개의 픽셀 값에 가중치를 곱한 값의 합으로 계산됩니다.
코드 설명
python3 기반 OpenCV 라이브러리를 사용했습니다.
cv2.resize(src, dsize, interpolation=None)
1) src : 바꾸고 싶은 source 이미지
2) dsize : 변형될 이미지의 사이즈. 튜플형태로 입력(ex. (256,256))
3) interpolation : 보간법 방법.
cv2.INTER_LINEAR | 선형 보간법 (default) |
cv2.INTER_NEAREST | 이웃 보간법 |
cv2.INTER_CUBIC | 큐빅 보간법 |
cv2.INTER_AREA | 영역 보간법 |
cv2.INTER_LANCZOS4 | Lanczos 보간법 |
예제
import cv2
import matplotlib.pyplot as plt
image = cv2.imread("test.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
output = cv2.resize(image, dsize=(500, 256), interpolation=cv2.INTER_NEAREST)
plt.subplot(1, 2, 1)
plt.imshow(image)
plt.title('Before')
plt.subplot(1, 2, 2)
plt.imshow(output)
plt.title('After')
plt.show()
1920X1280인 원본 이미지가 500X256 이미지로 크기가 변환된 것을 확인 할 수 있습니다.
'Image Processing (Python)' 카테고리의 다른 글
Image Read (이미지 불러오기) (0) | 2021.11.11 |
---|---|
Invert (색반전) (0) | 2021.11.10 |
Zero Padding (0) | 2021.11.09 |
Z-Score Standardization (표준화) (0) | 2021.11.08 |
Min-Max Normalization (정규화) (0) | 2021.11.04 |
댓글