갈루아의 반서재

기하학적 변환

Pillow 를 통해 크기 변환, 회전, 뒤집기와 같은 여러 가지 유형의 이미지 변환이 가능하다.


크기 변환 - 새로운 크기를 인수로 담는 resize() 함수를 이용한다.

resize_img = img.resize((500,300))
imshow(np.array(resize_img))
Out[12]:
<matplotlib.image.AxesImage at 0x7fab379a9c50>


회전 - 이미지의 회전 처리된 복사본을 반환한다. 센터를 기준으로 시계반대 방향(counter clockwise)으로 회전시킨 이미지를 반환한다.

rotate_img = img.rotate(90)
imshow(np.array(rotate_img))
Out[13]:
<matplotlib.image.AxesImage at 0x7fab379055c0>


이미지 향상

이미지의 대비, 밝기, 색상 밸런스, 선명도 변경 등의 작업을 포함한다.


이미지 밝기 변환 - enhance() 함수는 실수형 인수를 입력받아 이미지 밝기의 정도를 결정한다. 이 값이 1이면 원래 이미지를 출력한다.

from PIL import ImageEnhance
enhancer_brightness = ImageEnhance.Brightness(img).enhance(2)
imshow(np.array(enhancer_brightness))
Out[14]:
<matplotlib.image.AxesImage at 0x7fab378f4b38>


이미지 대비 변환 - 마찬가지로 실수형 인수를 입력받으며, 1보다 작으면 대비가 감소하고, 1보다 크면 대비가 증가한다.

enhancer_contrast = ImageEnhance.Contrast(img).enhance(2)
imshow(np.array(enhancer_contrast))
Out[15]:
<matplotlib.image.AxesImage at 0x7fab6667d358>


픽셀 접근 - 임계치 조정 등을 위해서 개별 픽셀에 접근하는 경우가 있다. 

getpixel() 함수는 (x, y) 좌표에 있는 픽셀 값을 반환한다. 튜플을 인수로 취해서 색상값의 튜플을 반환한다.

img.getpixel((300,300))
Out[16]:
(104, 101, 100)


putpixel() 함수는 (x, y) 좌표상의 색상값을 새로운 색상으로 변경한다. 이미지에 둘 이상의 대역이 있다면 튜플이 함수의 인수로 전달된다.

img.putpixel((300,300), (20, 230, 145))
img.getpixel((300,300))
Out[17]:
(20, 230, 145)