본문 바로가기
함수 설명/컴퓨터 비전 (OpenCV, PIL)

[PIL] 이미지 투영 및 원근법 변환: Image.transform() 사용 및 설명

by First Adventure 2024. 10. 14.
반응형

소개

  Image.transform(size, method, data, resample=0, fill=1, fillcolor=None) 함수는 Pillow 라이브러리에서 이미지를 다양한 방법으로 변환할 때 사용됩니다. 이 함수는 이미지의 크기를 변경하거나, 투영 변환, 어핀 변환, 원근법 변환 등을 통해 이미지의 모양을 왜곡하거나 변형하는 데 유용합니다. 이를 통해 이미지의 시각적 효과를 크게 변경하거나 특정 변환 작업을 수행할 수 있습니다.

 

기본 사용법

from PIL import Image

# 이미지 열기
img = Image.open('sample_image.jpg')

# 어핀 변환 적용
transformed_img = img.transform((300, 300), Image.AFFINE, (1, 0.2, 0, 0.2, 1, 0))

# 변환된 이미지 저장
transformed_img.save('transformed_image.jpg')

상세 설명

  • size: 출력 이미지의 크기를 지정합니다. (width, height)의 튜플로 입력하며, 변환된 이미지의 해상도를 설정할 수 있습니다.
    • 예시: (300, 300)은 출력 이미지를 300x300 크기로 변환합니다.
  • method: 변환 방법을 지정합니다. 주요 옵션은 다음과 같습니다:
    • Image.AFFINE: 어핀 변환. 평행선 유지 및 회전, 이동, 스케일 조정 등의 선형 변환을 수행합니다.
    • Image.EXTENT: 이미지의 일부분을 잘라서 새로운 이미지 크기로 변환합니다.
    • Image.PERSPECTIVE: 원근법 변환을 적용하여 이미지가 멀리 보이는 것처럼 왜곡합니다.
    • Image.QUAD: 이미지의 각 변을 지정된 4개의 좌표로 변환합니다.
  • data: 변환을 정의하는 매개변수로, 변환의 형태에 따라 다릅니다. 예를 들어, 어핀 변환에서는 변환 행렬을, 원근법 변환에서는 4개의 좌표를 입력해야 합니다.
    • 예시: 어핀 변환을 위한 행렬 (a, b, c, d, e, f).
  • resample (선택사항): 리샘플링 필터를 지정합니다. Image.NEAREST, Image.BILINEAR, Image.BICUBIC, Image.LANCZOS 중 하나를 선택할 수 있으며, 이미지 변환의 품질을 제어할 수 있습니다.
    • 예시: Image.BICUBIC은 고품질 리샘플링을 지원합니다.
  • fill (선택사항): 변환 후 빈 공간을 채울지 여부를 설정합니다. 기본값은 1로 설정되어 있습니다.
  • fillcolor (선택사항): 변환 후 빈 공간을 채울 색상을 지정합니다. 기본적으로는 투명 또는 검은색으로 채워지며, 원하는 색상으로 지정할 수 있습니다.
  • 활용
    • 이미지 변환: 어핀 변환을 통해 이미지의 회전, 이동, 스케일 조정을 처리하거나, 원근법 변환을 통해 시각적으로 흥미로운 왜곡을 만들 수 있습니다.
    • 이미지 보정: 이미지의 투영 변환을 적용하여 왜곡된 이미지를 수정하거나, 특정 각도에서 찍은 이미지를 평면으로 보정할 수 있습니다.
    • 디자인 및 편집: 이미지를 다양한 시각적 효과로 변형하여 예술적 작업이나 포스터, 광고 디자인에서 사용할 수 있습니다.

 

라이센스

  Pillow 라이브러리는 PIL 라이센스를 따릅니다. 자세한 라이센스 정보는 Pillow GitHub에서 확인할 수 있습니다.

 

관련 내용

  [PIL] 이미지 투영 및 원근법 변환: Image.transform() 사용 및 설명
  [PIL] 이미지 상하 대칭 변환: ImageOps.flip() 사용 및 설명
  [PIL] 이미지 좌우 대칭 변환: ImageOps.mirror() 사용 및 설명

 

반응형