영상 기하학에서 다루는 3D 변환 (3D Transformations)의 개념과 방법에 대한 정리
3D 변환 (3D Transformations)
컴퓨터 비전에서 관심있는 3D 변환은 회전과 평행이동 (즉,rigid 변환). 실세계의 객체가 갑자기 커지거나 모양이 변하는 것 등은 관심사항이 아님
1. 3D 기본 변환
1.1. 회전
3차원 공간의 점(X, Y, Z)를 각각 X축, Y축, Z축 (roll, pitch, yaw)을 중심으로 라디안(radian) 만큼 반시계 방향으로 회전시키는 행렬은 각각 다음과 같음
- X 축
- Y 축
- Z 축
위 3개의 기본 회전변환을 조합하면 임의의 3D 회전을 다음과 같이 표현함
1.2. 평행이동
1.3. Rigid 변환 (회전 + 평행이동)
회전변환 , 평행이동 를 이용한 일반적인 3D Rigid 변환은 다음과 같음
2D 변환과 마찬가지로, 3D 변환에서도 homogeneous 좌표계를 사용하여 다음과 같이 하나의 선형변환 형태로 표현 가능
2. 변환관계 구하기
3D 공간에서 비행기 한대가 마음대로 이동한다고 했을 때, 비행기 동선의 임의의 두 지점 사이의 변환관계는 회전변환과 평행이동만으로 표현이 가능함
2.1. 회전변환 구하기
- 크기가 같은 임의의 두 벡터 , 가 있을 때, 를 로 이동시키는 회전변환은 다음과 같이 구할 수 있음 (는 회전축의 단위벡터)
- 는 두 벡터 , 사이의 사잇각이며 벡터의 내적을 이용하여 구함
- 회전축은 두 벡터 , 에 의해 결정되는 평면에 수직인 벡터 즉, 벡터의 외적을 이용하면 됨
- 좌표축이 아닌 임의의 단위벡터 을 회전축으로 한 회전변환 행렬은 다음과 같음
2.2. 회전 행렬의 성질
- 회전 행렬은 을 만족하는 orthogonal matrix 이므로, 그 역행렬은 음의(반대) 방향으로의 회전 행렬을 나타냄
- 즉,
2.2. Rigid 변환 구하기
- 3차원 공간에서 회전과 평행이동을 고려한 위치관계를 구하기 위해서는 최소 3개의 점 매칭쌍이 필요함
- 특히, 컴퓨터 비전 문제에서 카메라는 Rigid(강체)로서 Rigid 변환을 사용하여 카메라의 움직임을 수학적으로 표현함
2.2.1. 역변환
- Rigid 변환을 다음과 같이 표현할 때
를 구하는 역변환식은 다음과 같다
3. 좌표축 변환
3.1. 카메라 좌표계 - 월드 좌표계
- 참고: (Image Geometry) 1. 영상 좌표계
- 월드 좌표계 상에서 카메라 초점(카메라 좌표계의 원점)의 좌표: ()
- 월드 좌표축을 카메라 좌표축 방향과 일치되도록 하는 회전변환 행렬(좌표축변환):
- 월드 좌표계 점()의 카메라 좌표계의 점(으로 표현식
- 좌표축 변환과 좌표변환은 서로 역변환 관계 (증명 필요)
- 예를들어 카메라 좌표계가 월드좌표계로 맞춰질때의 회전행렬에는 카메라 자체의 각도 변환이 포함되어있다. 카메라 좌표계에서 표현된 점의 입장에서는 반대방향으로 회전한다고 생각해야함?
3.2. opencv solvePnP
- solvePnP에서 반환되는 R은 월드좌표→카메라좌표 변환행렬
- openCV의 solvePnP 함수가 반환하는 rvec은 회전변환에 대한 Rodrigues 표현이기 때문에 실제 회전변환 행렬 R을 구하기 위해서는 openCV의 Rodrigues() 함수를 취함