본문 바로가기
Image Processing (Python)

Resize

by HanByol Jang 2021. 11. 3.
728x90

함수 설명

Resize 함수는 원하는 크기로 이미지를 조절할때 사용하는 방법입니다.

 

이미지의 크기를 확대 혹은 축소 시켜 변형하는 경우변형된 이미지의 픽셀 값을 추정해서 할당해야만 합니다픽셀 값을 추정하는 방법을 보간법 (Interpolation)이라고 합니다.
보간법에는 이웃 보간법 (Nearest neighbor Interpolation), 선형 보간법 (Linear Interpolation), 이중 선형 보간법 (Bilinear Interpolation), 큐빅 보간법 (Cubic Interpolation) 등이 있습니다

여러 보간법 중 이미지 처리에서 가장 많이 사용하는 보간법은 이중 선형 보간법입니다.
이중 선형 보간법은 1차원 직선에서 이루어지는 선형 보간법을 2차원인 이미지 평면에 적용시킨 방법입니다.

1) 
선형 보간법 : 픽셀 A B 직선 사이에 선형 보간법으로 생성된 픽셀 C의 값은 아래와 같이 계산됩니다.

< 그림 1. 선형 보간법>


2) 이중 선형 보간법 : 2차원 평면에서 이루어지는 이중 선형 보간법은 가장 인접한 4개의 픽셀 값에 가중치를 곱한 값의 합으로 계산됩니다.

< 그림 2. 이중 선형 보간법>


코드 설명

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 이미지로 크기가 변환된 것을 확인 할 수 있습니다.

 

 

728x90

'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

댓글