AI/Computer Vision

이미지 영상의 어파인 변환 (Affine Transformation)이란 무엇인가?

방황하는 데이터불도저 2023. 11. 17. 18:51

어파인 변환은 이미지/영상의 기하학적인 변환들 중에 하나이다.

 

밝기 조절이나 필터링과 같은 이미지의 픽셀값을 수정하는 변환과 달리 기하학적 변환은 픽셀값은 그대로 유지하되 픽셀값의 위치를 변환하는 것. 즉, 이미지 픽셀값의 배치를 변경하는 것이다.

 


아래는 기하학적 변환에 대한 chatGPT의 설명이다.

 

이미지의 기하학적 변환은 이미지의 형태를 변경하는 데 사용되는 여러 가지 기법을 포함합니다. 다양한 기하학적 변환의 종류는 다음과 같습니다:

  1. 이동(Translation): 이미지를 좌우 또는 상하로 이동시키는 변환으로, 모든 픽셀을 일정한 거리만큼 이동합니다.
  2. 회전(Rotation): 이미지를 중심을 기준으로 회전시키는 변환입니다. 주어진 각도에 따라 이미지의 회전을 수행합니다.
  3. 크기 조절(Scaling): 이미지의 크기를 확대 또는 축소시키는 변환입니다. 픽셀의 크기를 변경하여 이미지를 확대하거나 축소합니다.
  4. 거울 이미지(Reflection): 이미지를 대칭시키는 변환으로, 수평적으로나 수직적으로 이미지를 뒤집습니다.
  5. 원근 변환 / 투시 변환(Perspective Transformation): 원근감을 표현하기 위해 사용되는 변환으로, 3D 공간의 장면을 2D로 투영합니다.
  6. 비선형 변환(Non-linear Transformation): Affine transformation보다 더 복잡하며, 선형성을 보장하지 않는 변환입니다. 곡률을 부여하거나 이미지를 왜곡시키는 데 사용됩니다.
  7. 등고선 매핑(Contour Warping): 이미지의 등고선 또는 윤곽선을 변경하여 이미지를 왜곡시키는 변환입니다.
  8. 스플라인 보간(Spline Interpolation): 이미지를 부드럽게 곡선화하여 왜곡시키는 변환 기법 중 하나입니다.
  9. 케글린 변환(Keystone Transformation): 기하학적 왜곡을 보정하는 변환으로, 주로 건물의 기울기를 보정하는 데 사용됩니다.

이러한 기하학적 변환들은 컴퓨터 비전, 이미지 처리, 컴퓨터 그래픽스 등의 다양한 분야에서 사용되며, 이미지의 형태를 원하는 방향으로 조작하거나 보정하는 데 활용됩니다.

 

위의 기하학적 변환들 중에서 1번~4번까지의 변환 등을 통칭하여 우리는 Affine Transformation이라고 한다.

 

examples

 

픽셀위치값인 (x y 1).T 벡터에 위의 예시에 나와있는 어파인 변환 행렬(affine transformation matrix)를 곱해주면 (x' y' 1) 벡터가 결과값으로 출력되고, x' y' 가 픽셀값의 새로운 위치좌표이다. 위의 행렬에서 3행은 생략해줄 수 있다. 따라서, 6개의 파라미터를 통해 x, y 좌표를 변환시키는 어파인 변환을 해줄 수 있다.

 

반대로 원본 영상과 어파인 변환된 영상이 있을 때, 어파인 변환 행렬을 구해주기 위해서는 이미지 중 최소 3개의 점 위치 이동관계를 알아야 한다. x → x' 에 대한 방정식 3개, y →y' 에 대한 방정식 3개로 총 6개 방정식을 통해 affine transformation matrix의 파라미터 개수(6개)와 동일한 개수로 구해줄 수 있다. 

 

OpenCV 라이브러리에서 제공하는 affine transformation 함수들

  • getAffineTransform : 어파인 변환 행렬을 구하는 함수
  • warpAffine : 이미지에 대한 어파인 변환한 이미지를 반환하는 함수
  • transform : 이미지의 포인트(위치 벡터 / 위치 행렬)에 대해 어파인 변환한 포인트들을 반환하는 함수
  • 이동 변환, 전단변환은 위의 함수를 이용하여, 코드를 짤 수 있다.

아래의 변환들은 따로 function을 제공한다.

 * OpenCV modules

 

 

* ref. Affine Transformation- Image Processing In TensorFlow- Part 1

 

Affine Transformation- Image Processing In TensorFlow- Part 1

Affine Transformation helps to modify the geometric structure of the image, preserving parallelism of lines but not the lengths and angles.

medium.com