logo

[computer-vision] PIL

 

PIL 라이브러리

  • Python Imaging Library
  • 스웨덴 기업 Secret Lab AB가 1995년부터 개발, 2011년에 중단
  • Pillow라는 이름으로 포크(fork)되어 현재까지 지속 중
  • 이미지 파일 열기, 닫기, 변환 등 기본적인 기능 제공
 

이미지 열기

PIL 라이브러리

from PIL import Image

이미지 파일인 balloon.webp를 열기

img = Image.open("balloon.webp")

img 객체를 출력

img

이미지 파일의 형식을 나타내는 문자열을 반환

img.format
'WEBP'
 

컴퓨터 그래픽의 방식

  • 비트맵 방식: 이미지를 점으로 표현. 하나의 점이 픽셀(pixel)
  • 벡터 방식: 이미지를 선으로 표현
  • 포인트 클라우드 방식: 점의 3차원 좌표로 표현
  • 일반적으로 컴퓨터 비전에서는 비트맵 방식을 사용
 

비트맵 방식 bitmap

  • 이미지를 작은 정사각형 모양의 픽셀이라고 하는 점들로 저장하는 방식
  • 각각의 픽셀이 밝기를 가짐
  • 픽셀이 꺼지면(밝기 0) 검은 색이 되고, 최대로 켜지면 흰색. 그 중간에서는 회색.
  • 대부분의 사진 및 비디오 파일 형식, 이미지 처리나 컴퓨터 비전에서도 주로 사용
  • 비트맵 방식은 이미지를 확대하거나 축소할 때 왜곡이 생길 수 있음
    • 작은 이미지를 크게 확대해보시면 이미지가 흐릿해지는 것을 볼 수 있음
  • 이미지의 크기가 커지면, 이미지 한 장에 들어가는 점의 개수도 늘어나기 때문에 용량이 커짐
 

컬러 비트맵 이미지

  • 여러 개의 픽셀을 합쳐서 표현
  • 빛의 삼원색(RGB)
    • 빨강(R)
    • 초록(G)
    • 파랑(B)
  • 인쇄용 이미지는 CMYK를 사용
  • 색상이 중요하지 않으면 흑백으로 변환하여, 계산량을 절약
 

비트맵 저장 형식

  • JPEG(Joint Photographic Experts Group)
    • 대부분의 사진이나 이미지에 사용되며, 손실 압축 방식으로 이미지를 압축
    • 편집/저장을 반복하면 화질이 열화됨
  • GIF(Graphics Interchange Format)와 PNG(Portable Network Graphics)
    • 작은 애니메이션 이미지나 로고, 아이콘 등에 사용
    • 비손실 압축 방식으로 그래픽이나 웹 디자인에 많이 사용
  • WebP
    • Google에서 웹 페이지에서 더욱 빠르게 로딩되도록 개발한 영상/이미지 파일 포맷
    • 기존의 JPEG와 PNG, GIF의 장점을 모두 합쳐서 손실 압축과 비손실 압축을 모두 지원
    • 더 효율적인 압축 방식을 사용하기 때문에 파일 크기는 더 작고, 이미지 품질은 더 높은 특징
  • tiff Tagged Image File Format 출력용
  • raw Raw Image File 비압축 원본
 

벡터 방식 vector

  • 벡터 방식은 이미지를 수학적인 곡선과 모양으로 표현
  • 그래픽 디자인 및 로고 등에 사용
  • 이미지를 확대하거나 축소할 때도 깨지지 않고 선명한 이미지를 유지
  • 수학적인 곡선이므로 계산만 다시하면 이미지를 무한히 확대나 축소할 수 있어서, 이미지의 크기와 용량이 관계가 없음
  • 카메라로 찍은 사진 등은 픽셀 방식의 형태여서 벡터 방식으로 저장하려면 변환이 필요
  • 컴퓨터 비전에서는 벡터 방식은 잘 쓰지 않음
  • 저장 형식:
    • pdf Portable Document Format 문서용
    • eps Encapsulated PostScript 문서용 (pdf로 대체)
    • svg Scalable Vector Graphics 주로 웹 사이트에서 사용
 

포인트 클라우드

  • 3D 이미지에 사용하는 방식
  • 각각의 포인트는 이미지의 한 점을 나타내며 색상 정보도 함께 저장
  • 주로 라이다(LiDAR) 같은 장비로 찍은 이미지를 표현할 때 사용
 

이미지 파일의 크기

img.size
(1024, 1024)

이미지 파일의 크기를 나타내는 (가로, 세로) 형식의 튜플(tuple)을 반환 해당 코드를 실행하면, 이미지 파일의 가로와 세로 크기가 나타남

이미지 파일의 색상 모드

img.mode
'RGB'
  • RGB: 빨강, 초록, 파랑 3가지 색을 사용하는 모드
  • RGBA: 빨강, 초록, 파랑 3가지 색과 투명도(알파 채널)를 사용하는 모드
  • L: 이미지를 흑백으로 표현하는 모드
    • 각 픽셀의 색상은 0부터 255까지의 값으로 표현
    • 0은 검은색, 255는 흰색을 의미
  • CMYK: 색상을 시안(Cyan), 마젠타(Magenta), 노랑(Yellow), 검정(Black) 4가지 색으로 나타내는 모드
    • 주로 인쇄를 위한 이미지 파일에 사용

모드를 흑백(L)으로 변환

img.convert("L")
Previous
지도학습의 원리 실습