동차 좌표계의 기초

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

동차 좌표계의 개념

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

2D에서 3D로의 확장

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

x=xhw,y=yhwx = \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=xhw,y=yhw,z=zhwx = \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}$를 통해 다음과 같이 변환될 수 있다.

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

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

T=[t11t12t13t21t22t23t31t32t33]\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 공간에서 직선은 동차 좌표계에서 다음과 같이 나타낼 수 있다.

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

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

lTp=0\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}$는 다음과 같이 표현된다.

p=l1×l2\mathbf{p} = \mathbf{l_1} \times \mathbf{l_2}

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

무한원점과 평행선

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

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

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

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

사영 변환과 동차 좌표계

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

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

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

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

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

평행 이동(Translation)

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

T=[10tx01ty001]\mathbf{T} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}

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

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

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

회전(Rotation)

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

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

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

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

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

스케일링(Scaling)

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

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

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

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

사영 변환(Projective Transformation)

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

H=[h11h12h13h21h22h23h31h32h33]\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}$는 다음과 같이 변환된다.

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

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

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

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

Last updated