카메라 캘리브레이션에서 중요한 부분은 카메라 파라미터와 이들의 상호 관계를 정확히 이해하는 것이다. 카메라 파라미터는 크게 두 가지로 구분된다: 내부 파라미터와 외부 파라미터. 이 두 가지 파라미터는 카메라 이미지와 실제 월드 좌표계 사이의 관계를 정의하며, 이를 수학적으로 설명하는 것이 매우 중요하다.

내부 파라미터 (Intrinsic Parameters)

내부 파라미터는 카메라 내부의 물리적 특성을 반영한다. 이러한 파라미터들은 3D 좌표를 2D 이미지 평면으로 투영할 때 영향을 미치는 요인들이다. 카메라의 내부 파라미터는 보통 다음과 같은 요소로 구성된다:

내부 파라미터는 일반적으로 다음과 같은 형태의 카메라 매트릭스로 표현된다:

\mathbf{K} = \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix}

여기서, f_xf_y는 각각 x축과 y축의 초점 거리, c_xc_y는 이미지 중심점의 좌표이다.

외부 파라미터 (Extrinsic Parameters)

외부 파라미터는 카메라가 바라보는 세계의 좌표계와 카메라 좌표계 간의 관계를 나타낸다. 이는 카메라의 위치와 방향을 의미하며, 일반적으로 회전 행렬과 평행 이동 벡터로 표현된다.

외부 파라미터는 다음 두 가지로 구분된다:

외부 파라미터는 다음과 같은 형태로 표현된다:

\mathbf{[R|T]} = \begin{pmatrix} r_{11} & r_{12} & r_{13} & t_1 \\ r_{21} & r_{22} & r_{23} & t_2 \\ r_{31} & r_{32} & r_{33} & t_3 \end{pmatrix}

여기서, \mathbf{R}는 3x3 회전 행렬이고, \mathbf{T}는 3D 평행 이동 벡터이다.

이제 이 내부 파라미터와 외부 파라미터가 어떻게 조합되어 이미지 평면에서의 2D 좌표를 얻는지 설명하겠다. 월드 좌표계에서의 3D 점 \mathbf{P_w} = (X_w, Y_w, Z_w)^\top가 카메라 좌표계에서 어떻게 변환되는지를 수학적으로 표현하면 다음과 같다:

\mathbf{P_c} = \mathbf{R} \mathbf{P_w} + \mathbf{T}

이 과정에서 월드 좌표계의 점이 카메라 좌표계로 변환된다. 여기서 \mathbf{P_c}는 카메라 좌표계에서의 점을 나타낸다.

다음으로, 변환된 카메라 좌표계의 점이 이미지 평면으로 투영된다. 이 과정에서 내부 파라미터 매트릭스 \mathbf{K}가 사용된다.

\mathbf{p} = \mathbf{K} \begin{pmatrix} X_c \\ Y_c \\ Z_c \end{pmatrix}
\mathbf{p} = \mathbf{K} \mathbf{P_c}

여기서, \mathbf{p}는 이미지 좌표계에서의 점을 나타낸다. 이 식을 풀면 다음과 같다:

\mathbf{p} = \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} f_x \cdot \frac{X_c}{Z_c} + c_x \\ f_y \cdot \frac{Y_c}{Z_c} + c_y \\ 1 \end{pmatrix}

따라서, 월드 좌표계에서의 3D 점은 카메라 좌표계로 변환되고, 최종적으로 이미지 평면 상의 2D 좌표로 투영된다.

이제 내부 파라미터와 외부 파라미터의 결합을 통해 전체적인 투영 모델을 살펴보겠다. 카메라의 투영 과정을 종합하면, 월드 좌표계에서의 3D 점이 이미지 좌표계에서의 2D 점으로 변환되는 과정을 다음과 같은 방식으로 표현할 수 있다.

세계 좌표에서 이미지 좌표로의 변환

카메라 모델을 통합적으로 나타내는 매트릭스는 내부 파라미터 매트릭스 \mathbf{K}, 회전 행렬 \mathbf{R}, 그리고 평행 이동 벡터 \mathbf{T}로 구성된다. 이들을 하나로 합쳐서, 월드 좌표계에서 이미지 평면으로의 변환을 다음과 같이 표현할 수 있다.

\mathbf{p} = \mathbf{K} [\mathbf{R} | \mathbf{T}] \mathbf{P_w}

이 식에서: - \mathbf{p}는 이미지 좌표계에서의 2D 점, - \mathbf{K}는 내부 파라미터 매트릭스, - \mathbf{R}은 회전 행렬, - \mathbf{T}는 평행 이동 벡터, - \mathbf{P_w}는 월드 좌표계에서의 3D 점을 나타낸다.

이 전체 투영 과정을 단계별로 설명하면: 1. 3D 세계 좌표 \mathbf{P_w}가 회전 행렬 \mathbf{R}과 평행 이동 벡터 \mathbf{T}에 의해 카메라 좌표계 \mathbf{P_c}로 변환된다.

\mathbf{P_c} = \mathbf{R} \mathbf{P_w} + \mathbf{T}
  1. 변환된 카메라 좌표계의 점 \mathbf{P_c}가 내부 파라미터 매트릭스 \mathbf{K}에 의해 이미지 평면 상의 2D 점 \mathbf{p}로 투영된다.
\mathbf{p} = \mathbf{K} \mathbf{P_c}

이를 하나의 식으로 결합하면 다음과 같은 최종 투영 방정식이 도출된다:

\mathbf{p} = \mathbf{K} [\mathbf{R} | \mathbf{T}] \mathbf{P_w}

이 식은 3D 세계에서의 좌표 \mathbf{P_w}가 어떻게 카메라 시스템을 통해 2D 이미지 좌표 \mathbf{p}로 변환되는지를 나타내며, 카메라 캘리브레이션의 핵심적인 원리이다.

예제

이 투영 방정식을 이해하기 위해 예를 들어 보겠다. 월드 좌표계에서 한 점 \mathbf{P_w} = (X_w, Y_w, Z_w)이 있다고 가정해 봅시다. 이 점을 이미지 평면에서 어떻게 표현할 수 있을까요? 우선, 해당 점은 카메라 좌표계로 변환된 후, 이미지 좌표계에서의 2D 좌표로 투영된다.

  1. 월드 좌표계의 점 \mathbf{P_w}는 회전 행렬 \mathbf{R}과 평행 이동 벡터 \mathbf{T}에 의해 카메라 좌표계의 점 \mathbf{P_c} = (X_c, Y_c, Z_c)로 변환된다:
\mathbf{P_c} = \mathbf{R} \mathbf{P_w} + \mathbf{T}
  1. 카메라 좌표계의 점 \mathbf{P_c}는 내부 파라미터 매트릭스 \mathbf{K}에 의해 이미지 평면으로 투영된다:
\mathbf{p} = \mathbf{K} \mathbf{P_c}
  1. 투영된 결과는 다음과 같은 형태로 표현된다:
\mathbf{p} = \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} f_x \cdot \frac{X_c}{Z_c} + c_x \\ f_y \cdot \frac{Y_c}{Z_c} + c_y \\ 1 \end{pmatrix}

이 과정을 통해, 세계 좌표에서의 3D 점이 이미지 평면에서 2D 좌표로 변환되는 원리를 알 수 있다.