동차 좌표계(Homogeneous coordinates)는 컴퓨터 비전과 컴퓨터 그래픽스에서 주로 사용되는 기법으로, 변환의 표현을 단순화하고 기하학적 관계를 더욱 직관적으로 다룰 수 있게 해준다. 특히, 에피폴라 기하학에서 카메라 모델과 3D 복원 작업에서 중요한 역할을 한다.
동차 좌표계의 개념
동차 좌표계는 일반적인 유클리드 좌표계에서 한 차원을 더 추가하여 점, 직선, 평면 등의 기하학적 객체를 보다 쉽게 다루도록 하는 좌표 체계이다. 일반적으로 2D에서 3D로, 3D에서 4D로 좌표계를 확장하는 방식으로 이루어진다.
2D에서 3D로의 확장
2D 공간에서 점 (x, y)는 동차 좌표계에서 (x_h, y_h, w)로 표현된다. 여기서 x_h와 y_h는 새로운 좌표계에서의 좌표이고, w는 척도(scale factor)로 불린다. 이때, 동차 좌표계에서 유클리드 좌표계로의 변환은 다음과 같이 정의된다.
이때 w가 0이 아닌 경우 동차 좌표계에서 유클리드 좌표계로 변환이 가능하다. w = 0인 경우는 무한원점(point at infinity)을 의미하게 된다. 동차 좌표계는 이러한 무한원점을 포함할 수 있어, 무한대로 나가는 직선이나 평면을 보다 쉽게 표현할 수 있게 한다.
3D에서 4D로의 확장
3D 공간에서 점 (x, y, z)는 동차 좌표계에서 (x_h, y_h, z_h, w)로 표현된다. 이때 3D 유클리드 좌표계에서 동차 좌표계로 변환하는 과정은 다음과 같다.
마찬가지로, w = 0인 경우는 무한원을 나타내며, w \neq 0인 경우는 유한한 좌표를 의미한다. 이를 통해 카메라 모델에서의 변환과 사영 기하학(projective geometry)을 동차 좌표계로 표현할 수 있다.
행렬 표현
동차 좌표계에서 변환은 주로 행렬 곱을 통해 표현된다. 예를 들어, 2D 평면에서의 점 \mathbf{p} = (x, y, 1)^T는 변환 행렬 \mathbf{T}를 통해 다음과 같이 변환될 수 있다.
여기서 변환 행렬 \mathbf{T}는 회전, 평행 이동, 스케일링 등을 포함할 수 있는 3x3 행렬로 나타낼 수 있다.
따라서 동차 좌표계는 단순한 좌표 변환을 행렬 곱셈으로 표현할 수 있으며, 다양한 기하학적 변환을 통합된 방식으로 다룰 수 있게 한다.
직선의 동차 좌표 표현
동차 좌표계에서 점뿐만 아니라 직선도 표현할 수 있다. 2D 공간에서 직선은 동차 좌표계에서 다음과 같이 나타낼 수 있다.
여기서 \mathbf{l}은 직선의 방정식 ax + by + c = 0을 나타낸다. 동차 좌표계에서 점 \mathbf{p} = (x_h, y_h, w)는 직선 \mathbf{l}과 다음의 관계식을 만족한다.
이 방정식은 점 \mathbf{p}가 직선 \mathbf{l} 위에 있다는 조건을 의미하며, 동차 좌표계에서는 이러한 점과 직선의 관계를 직관적으로 다룰 수 있게 된다.
교차점의 동차 좌표 표현
동차 좌표계에서 두 직선의 교차점은 외적(cross product)을 사용하여 계산할 수 있다. 두 직선 \mathbf{l_1} = (a_1, b_1, c_1)^T와 \mathbf{l_2} = (a_2, b_2, c_2)^T의 교차점 \mathbf{p}는 다음과 같이 표현된다.
이때 교차점은 동차 좌표계에서 표현되며, 이를 유클리드 좌표계로 변환하려면 앞서 설명한 방식으로 w를 사용하여 변환하면 된다.
무한원점과 평행선
동차 좌표계의 중요한 특징 중 하나는 무한원점을 포함할 수 있다는 점이다. 2D 유클리드 공간에서 평행한 두 직선은 동차 좌표계에서 무한원점에서 만나는 것으로 해석된다. 즉, 평행한 직선들은 동차 좌표계에서 동일한 무한원점으로 수렴하게 된다.
예를 들어, 두 직선 \mathbf{l_1}과 \mathbf{l_2}가 평행하다면, 그들의 교차점은 동차 좌표계에서 다음과 같이 무한원점으로 나타난다.
여기서 w = 0인 경우 무한대의 점을 의미하며, 이러한 개념은 사영 기하학에서 매우 유용하게 사용된다.
사영 변환과 동차 좌표계
동차 좌표계는 사영 변환(Projective Transformation)을 간단하게 표현하는 데 사용된다. 사영 변환은 직선을 직선으로, 점을 점으로 이동시키며, 유클리드 기하학적 변환의 일반화된 형태이다. 2D에서의 사영 변환은 다음과 같은 3x3 변환 행렬 \mathbf{H}에 의해 표현된다.
여기서 \mathbf{H}는 사영 변환을 나타내는 3x3 행렬이며, \mathbf{p}는 변환될 점의 동차 좌표이다. 사영 변환은 평행선의 교차점이 무한원점에서 만난다는 특성을 가지며, 이러한 변환을 통해 카메라에서 바라본 장면의 기하학적 왜곡을 설명할 수 있다.
동차 좌표계에서의 변환 종류
동차 좌표계에서는 여러 가지 기하학적 변환을 통일된 방식으로 다룰 수 있다. 주로 다루는 변환에는 평행 이동, 회전, 스케일링, 사영 변환 등이 있다.
평행 이동(Translation)
동차 좌표계에서 2D 공간의 점 \mathbf{p} = (x_h, y_h, w)를 평행 이동시키는 변환은 다음과 같은 행렬로 표현된다.
여기서 t_x와 t_y는 각각 x축과 y축 방향으로의 이동 거리이다. 이 변환 행렬을 사용하여 점 \mathbf{p}를 평행 이동시키면 다음과 같이 계산된다.
즉, 평행 이동 변환은 단순한 덧셈 연산을 행렬 곱으로 표현할 수 있으며, 이를 통해 여러 기하학적 변환을 동시에 처리할 수 있다.
회전(Rotation)
동차 좌표계에서 2D 공간의 점을 회전시키는 변환은 회전각 \theta에 따라 다음과 같은 3x3 행렬로 표현된다.
이 회전 변환을 사용하여 점 \mathbf{p}를 회전시키면 다음과 같이 계산된다.
이때 회전 변환은 점이 원점을 기준으로 시계방향 또는 반시계방향으로 회전하는 효과를 나타낸다.
스케일링(Scaling)
동차 좌표계에서 스케일링 변환은 점의 크기를 조정하는 방식으로 이루어진다. 이는 다음과 같은 3x3 행렬로 표현된다.
여기서 s_x와 s_y는 각각 x축과 y축 방향으로의 스케일링 팩터이다. 이 변환 행렬을 사용하여 점 \mathbf{p}의 크기를 조정하면 다음과 같이 계산된다.
사영 변환(Projective Transformation)
사영 변환은 동차 좌표계에서 가장 일반적인 변환 중 하나로, 직선의 기하학적 속성을 유지하면서도 왜곡된 투영을 처리할 수 있다. 2D에서의 사영 변환은 다음과 같은 3x3 행렬로 표현된다.
사영 변환을 통해 점 \mathbf{p}는 다음과 같이 변환된다.
이때 사영 변환은 평행한 직선이 무한대에서 만나게 되며, 카메라 투영 시스템에서의 기하학적 관계를 설명하는 데 매우 유용하다.
동차 좌표계의 기하학적 의미
동차 좌표계는 단순히 차원을 확장하는 것 이상의 기하학적 의미를 지닌다. 특히, 원근법과 투영법에서의 기하학적 관계를 간단하게 표현할 수 있으며, 여러 개의 변환을 일관되게 처리할 수 있다는 장점이 있다. 이러한 이유로 동차 좌표계는 컴퓨터 비전, 컴퓨터 그래픽스, 로봇 공학 등에서 필수적인 도구로 사용된다.