동차 좌표계(Homogeneous coordinates)는 컴퓨터 비전과 컴퓨터 그래픽스에서 주로 사용되는 기법으로, 변환의 표현을 단순화하고 기하학적 관계를 더욱 직관적으로 다룰 수 있게 해준다. 특히, 에피폴라 기하학에서 카메라 모델과 3D 복원 작업에서 중요한 역할을 한다.

동차 좌표계의 개념

동차 좌표계는 일반적인 유클리드 좌표계에서 한 차원을 더 추가하여 점, 직선, 평면 등의 기하학적 객체를 보다 쉽게 다루도록 하는 좌표 체계이다. 일반적으로 2D에서 3D로, 3D에서 4D로 좌표계를 확장하는 방식으로 이루어진다.

2D에서 3D로의 확장

2D 공간에서 점 (x, y)는 동차 좌표계에서 (x_h, y_h, w)로 표현된다. 여기서 x_hy_h는 새로운 좌표계에서의 좌표이고, w는 척도(scale factor)로 불린다. 이때, 동차 좌표계에서 유클리드 좌표계로의 변환은 다음과 같이 정의된다.

x = \frac{x_h}{w}, \quad y = \frac{y_h}{w}

이때 w가 0이 아닌 경우 동차 좌표계에서 유클리드 좌표계로 변환이 가능하다. w = 0인 경우는 무한원점(point at infinity)을 의미하게 된다. 동차 좌표계는 이러한 무한원점을 포함할 수 있어, 무한대로 나가는 직선이나 평면을 보다 쉽게 표현할 수 있게 한다.

3D에서 4D로의 확장

3D 공간에서 점 (x, y, z)는 동차 좌표계에서 (x_h, y_h, z_h, w)로 표현된다. 이때 3D 유클리드 좌표계에서 동차 좌표계로 변환하는 과정은 다음과 같다.

x = \frac{x_h}{w}, \quad y = \frac{y_h}{w}, \quad z = \frac{z_h}{w}

마찬가지로, w = 0인 경우는 무한원을 나타내며, w \neq 0인 경우는 유한한 좌표를 의미한다. 이를 통해 카메라 모델에서의 변환과 사영 기하학(projective geometry)을 동차 좌표계로 표현할 수 있다.

행렬 표현

동차 좌표계에서 변환은 주로 행렬 곱을 통해 표현된다. 예를 들어, 2D 평면에서의 점 \mathbf{p} = (x, y, 1)^T는 변환 행렬 \mathbf{T}를 통해 다음과 같이 변환될 수 있다.

\mathbf{p'} = \mathbf{T} \mathbf{p}

여기서 변환 행렬 \mathbf{T}는 회전, 평행 이동, 스케일링 등을 포함할 수 있는 3x3 행렬로 나타낼 수 있다.

\mathbf{T} = \begin{bmatrix} t_{11} & t_{12} & t_{13} \\ t_{21} & t_{22} & t_{23} \\ t_{31} & t_{32} & t_{33} \end{bmatrix}

따라서 동차 좌표계는 단순한 좌표 변환을 행렬 곱셈으로 표현할 수 있으며, 다양한 기하학적 변환을 통합된 방식으로 다룰 수 있게 한다.

직선의 동차 좌표 표현

동차 좌표계에서 점뿐만 아니라 직선도 표현할 수 있다. 2D 공간에서 직선은 동차 좌표계에서 다음과 같이 나타낼 수 있다.

\mathbf{l} = (a, b, c)^T

여기서 \mathbf{l}은 직선의 방정식 ax + by + c = 0을 나타낸다. 동차 좌표계에서 점 \mathbf{p} = (x_h, y_h, w)는 직선 \mathbf{l}과 다음의 관계식을 만족한다.

\mathbf{l}^T \mathbf{p} = 0

이 방정식은 점 \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}는 다음과 같이 표현된다.

\mathbf{p} = \mathbf{l_1} \times \mathbf{l_2}

이때 교차점은 동차 좌표계에서 표현되며, 이를 유클리드 좌표계로 변환하려면 앞서 설명한 방식으로 w를 사용하여 변환하면 된다.

무한원점과 평행선

동차 좌표계의 중요한 특징 중 하나는 무한원점을 포함할 수 있다는 점이다. 2D 유클리드 공간에서 평행한 두 직선은 동차 좌표계에서 무한원점에서 만나는 것으로 해석된다. 즉, 평행한 직선들은 동차 좌표계에서 동일한 무한원점으로 수렴하게 된다.

예를 들어, 두 직선 \mathbf{l_1}\mathbf{l_2}가 평행하다면, 그들의 교차점은 동차 좌표계에서 다음과 같이 무한원점으로 나타난다.

\mathbf{p} = (x_h, y_h, 0)^T

여기서 w = 0인 경우 무한대의 점을 의미하며, 이러한 개념은 사영 기하학에서 매우 유용하게 사용된다.

사영 변환과 동차 좌표계

동차 좌표계는 사영 변환(Projective Transformation)을 간단하게 표현하는 데 사용된다. 사영 변환은 직선을 직선으로, 점을 점으로 이동시키며, 유클리드 기하학적 변환의 일반화된 형태이다. 2D에서의 사영 변환은 다음과 같은 3x3 변환 행렬 \mathbf{H}에 의해 표현된다.

\mathbf{p'} = \mathbf{H} \mathbf{p}

여기서 \mathbf{H}는 사영 변환을 나타내는 3x3 행렬이며, \mathbf{p}는 변환될 점의 동차 좌표이다. 사영 변환은 평행선의 교차점이 무한원점에서 만난다는 특성을 가지며, 이러한 변환을 통해 카메라에서 바라본 장면의 기하학적 왜곡을 설명할 수 있다.

동차 좌표계에서의 변환 종류

동차 좌표계에서는 여러 가지 기하학적 변환을 통일된 방식으로 다룰 수 있다. 주로 다루는 변환에는 평행 이동, 회전, 스케일링, 사영 변환 등이 있다.

평행 이동(Translation)

동차 좌표계에서 2D 공간의 점 \mathbf{p} = (x_h, y_h, w)를 평행 이동시키는 변환은 다음과 같은 행렬로 표현된다.

\mathbf{T} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}

여기서 t_xt_y는 각각 x축과 y축 방향으로의 이동 거리이다. 이 변환 행렬을 사용하여 점 \mathbf{p}를 평행 이동시키면 다음과 같이 계산된다.

\mathbf{p'} = \mathbf{T} \mathbf{p}

즉, 평행 이동 변환은 단순한 덧셈 연산을 행렬 곱으로 표현할 수 있으며, 이를 통해 여러 기하학적 변환을 동시에 처리할 수 있다.

회전(Rotation)

동차 좌표계에서 2D 공간의 점을 회전시키는 변환은 회전각 \theta에 따라 다음과 같은 3x3 행렬로 표현된다.

\mathbf{R} = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

이 회전 변환을 사용하여 점 \mathbf{p}를 회전시키면 다음과 같이 계산된다.

\mathbf{p'} = \mathbf{R} \mathbf{p}

이때 회전 변환은 점이 원점을 기준으로 시계방향 또는 반시계방향으로 회전하는 효과를 나타낸다.

스케일링(Scaling)

동차 좌표계에서 스케일링 변환은 점의 크기를 조정하는 방식으로 이루어진다. 이는 다음과 같은 3x3 행렬로 표현된다.

\mathbf{S} = \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix}

여기서 s_xs_y는 각각 x축과 y축 방향으로의 스케일링 팩터이다. 이 변환 행렬을 사용하여 점 \mathbf{p}의 크기를 조정하면 다음과 같이 계산된다.

\mathbf{p'} = \mathbf{S} \mathbf{p}

사영 변환(Projective Transformation)

사영 변환은 동차 좌표계에서 가장 일반적인 변환 중 하나로, 직선의 기하학적 속성을 유지하면서도 왜곡된 투영을 처리할 수 있다. 2D에서의 사영 변환은 다음과 같은 3x3 행렬로 표현된다.

\mathbf{H} = \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix}

사영 변환을 통해 점 \mathbf{p}는 다음과 같이 변환된다.

\mathbf{p'} = \mathbf{H} \mathbf{p}

이때 사영 변환은 평행한 직선이 무한대에서 만나게 되며, 카메라 투영 시스템에서의 기하학적 관계를 설명하는 데 매우 유용하다.

동차 좌표계의 기하학적 의미

동차 좌표계는 단순히 차원을 확장하는 것 이상의 기하학적 의미를 지닌다. 특히, 원근법과 투영법에서의 기하학적 관계를 간단하게 표현할 수 있으며, 여러 개의 변환을 일관되게 처리할 수 있다는 장점이 있다. 이러한 이유로 동차 좌표계는 컴퓨터 비전, 컴퓨터 그래픽스, 로봇 공학 등에서 필수적인 도구로 사용된다.