영상 기하학에서 사용되는 2D 변환 (2D Transformations)의 개념과 방법에 대한 정리

2D 변환 (2D Transformations)

개념 및 종류

Geometric Transformations

  • 기하학적인 구조를 가진 집합을 one-to-one mapping을 통해 옮기는 것으로, 쉽게말해서 점들의 집합을 이동시키는 것

기본 2D 변환

  • 기본이 되는 2D 변환으로는 평행이동(translate), 회전(rotate), 확대/축소(scale), 전단(shear), 대칭(reflect) 등이 있으며, 기본 2D 변환을 조합한 다양한 카테고리의 2D 변환 방법들이 있음
  • 2D 변환 참고: (Geometry) 2D 변환

1. Rigid Transformation (강체 변환)

가장 기본적인 변환으로써 유클리디언 변환(Euclidean transformation)이라고도 함

회전(rotation)과 평행이동(translation)만을 허용하는 변환(형태와 크기를 유지한체 위치와 방향만 변환)

1.1. 평행이동(translation)

  • 영상 이동체 추적 문제에 있어서 추적 대상의 크기가 고정이고 회전도 일어나지 않는 경우에는 위치 변화만을 추적하면 됨
  • 들의 평균, 들의 평균으로 쉽게 변환관계를 구할 수 있음

1.2. 회전(rotation)

  • (x, y)를 반시계 반향으로 라디안(radian) 만큼 회전시키는 회전행렬은 다음과 같음
  • 회전변환의 기준은 원점(0, 0) 이므로 물체는 원점을 기준으로 돌게됨
  • 회전변환의 자유도(DoF)는 1 이므로 하나의 매칭쌍으로 회전변환을 유일하게 결정할 수 있음

1.3. 강체 변환(Rigid Trans.)

  • 회전과 평행이동을 합친 변환
  • rigid 변환식은 자유도는 3이며, 변환을 추정하기 위해서는 최소 2개 이상의 매칭쌍이 필요함

2. Similarity Transformation (닮음 변환)

Similarity 변환 즉, 닮음 변환은 Rigid 변환에 추가적으로 스케일(scale) 변화까지 허용한 변환

회전(rotation), 평행이동(translation), 크기변화(scaling)로 구성되는 변환

2.1. 크기(Scale)

  • x축이나 y축 방향으로 늘리거나 줄이는 것
  • x축과 y축을 같은 배율만큼 scale 하는 것을 uniform scale이라 하고, 다른 정도로 scale 하는 것을 non-uniform scale이라 함
  • 이 때, 을 만족하면 uniform scale

2.2. 닮음 변환(Similarity Trans.)

  • uniform scale()이라 할 때, 닮음 변환의 식은 다음과 같음
  • 닮음 변환의 자유도는 4(회전, 스케일, x축이동, y축이동)이며, 변환을 유일하게 결정하기 위해서는 2개의 매칭쌍이 필요함

2.2.1. homogeneous 좌표 표현

  • (Image Geometry) 2. 동차 좌표계에서 다루었던 homogeneous 좌표 표현을 사용하면 닮음 변환을 다음과 같이 하나의 행렬 변환으로 표현할 수 있음
  • 에서 행렬 에서 로의 선형변환(linear transformation)임
  • homogeneous 형태의 선형변환으로 표현했을 때 가장 큰 장점은 여러 변환들을 행렬 곱으로 자유롭게 결합(composition)할 수 있다는 점
  • 예를 들어 변환 , 변환 , 변환 를 순서대로 적용하는 것은 가 되며, 또한 인 행렬을 구해서 와 같이 하나의 변환으로 표현할 수도 있음

3. Affine Transformation

Affine 변환은 직선, 길이(거리)의 비, 평행성(parallelism)을 보존하는 변환

Linear transformation의 일부 특징을 포함해서 다음과 같은 특징을 가짐

  • preserve lines (선 보존)
  • preserve parallel lines (평행선 보존)
  • preserve ratios of distance along a line (선 거리 비율 보존)

3.1. Affine Trans.

  • affine 변환은 회전, 평행이동, 스케일 뿐만 아니라 shearing, 반전(reflection)까지를 포함한 변환
  • homogeneous 형태로 표헌
  • affine 변환의 자유도는 6이며, 3쌍의 매칭쌍이 있으면 affine 변환을 유일하게 결정할 수 있음
  • 일반식을 전개하여 다음과 같이 표현할 수 있음
  • affine 변환을 직관적으로 이해하는 한 방법은 임의의 삼각형을 임의의 삼각형으로 매핑시킬 수 있는 변환이 affine이다 (단, 평행성을 보존하면서) 라고 이해하는 것
  • 평행성을 보존한다는 의미는 예를 들어 위 그림과 같이 점 p1, p2, p3를 p1’, p2’, p3’으로 매핑시키는 affine 변환을 구했을 때, 이 affine 변환을 가지고 p4를 매핑시키면 p4’이 나와야 한다는 의미

4. Homography (Projective Transformation)

Planer surface(평면형) 물체의 경우에는 3D 공간에서의 2D 이미지로의 임의의 원근투영변환(perspective projective transformation)을 두 이미지 사이의 homography로 모델링할 수 있음

어떤 planar surface가 서로 다른 카메라 위치에 대해 이미지 A와 이미지 B로 투영되었다면 이미지 A와 이미지 B의 관계를 homography로 표현할 수 있다는 것

4.1. Homography

  • Homography는 homogeneous 좌표계에서 정의되며 그 일반식은 다음과 같음
  • Homography는 자유도가 8이며 따라서 homography를 결정하기 위해서는 최소 4개의 매칭쌍을 필요로함. Homography의 자유도가 9가 아니라 8인 이유는 (x,y,1), (wx’,wy’,w)이 homogeneous 좌표이므로 homography의 scale은 무시되기 때문(일반적으로 요소는 1로 설정함)
  • homography 변환 에서 은 homogeneous 좌표이기 때문에 도 성립하게 됩니다. 즉, 가 homography 행렬이라면 임의의 0이 아닌 에 대해 도 또한 동일한 homography 행렬이 됨
  • Homography를 직관적으로 이해하기 위한 한 좋은 방법은 2D 평면에서 임의의 사각형을 임의의 사각형으로 매핑시킬 수 있는 변환이 homography 라고 생각하는 것
  • Homography 계산 방법 참고: [MVG] 2차원 사영변환(Homography) 추정 (+ CPP 코드)
  • 비정상 Homography 변환이 발생하는 경우 참고: 다크 프로그래머 :: [영상 Geometry #4] Homography 보완

5. OpenCV 에서 2D 변환 함수

OpenCV에서는 homography만 3×3 행렬로 표현하고, affine 등 그 외 변환은 2×3 행렬로 표현함

  • estimateRigidTransform() : 다수의 매칭쌍으로부터  similarity 변환이나 affine 변환을 구할 때 사용 (파라미터로 선택 가능). 내부적으로 RANSAC을 이용
  • getAffineTransform() : 3쌍의 입력 매칭쌍으로부터 affine 변환을 구해줌
  • invertAffineTransform() : affine 변환의 역변환을 구해줌
  • getPerspectiveTransform() : 4쌍의 입력 매칭쌍으로부터 homography 행렬을 계산해 줌
  • findHomography() : 다수의 매칭쌍으로부터 homography 행렬을 계산해 줌 (근사 방법은 전체 데이터 fitting, RANSAC, LMedS 중 선택)
  • transform() : 2×2 또는 2×3 변환행렬(similarity, affine 등)을 이용하여 좌표변환을 할 때 사용
  • perspectiveTransform() : 3x3 homography 변환행렬 또는 4×4 변환행렬을 이용하여 좌표변환을 할 때 사용

5.1. 변환 모델의 선택

  • Homography는 가장 일반적인 2D 변환 모델이며 planar한 물체의 모든 가능한 3D 변화를 표현할 수 있는 모델
  • Detection 문제에 있어서는 문제 특성에 따라 적절한 변환을 선택하면 되지만, Tracking의 경우에 있어서는 3D 모션이 있더라도 굳이 homography를 사용할 필요가 없으며 대부분 similarity나 affine으로 충분함
  • 문제의 특성에 따라 가능한 낮은 자유도의 변환을 사용하는 것이 좋음

참고


Prev: (Image Geometry) 2. 동차 좌표계

Next: (Image Geometry) 4. 3D 변환