내부 파라미터

카메라 모델에서 내부 파라미터는 카메라 내부의 물리적 특성을 나타내며, 이미지 센서와 관련된 요소들을 설명한다. 이러한 내부 파라미터는 일반적으로 카메라 캘리브레이션 과정을 통해 계산되며, 주요 파라미터들은 다음과 같다.

  1. 초점 거리 f: 카메라 렌즈에서 이미지 평면까지의 거리를 나타낸다. 이는 이미지 센서에서 발생하는 확대/축소 비율을 결정하며, 보통 수평 및 수직 방향의 초점 거리를 구분하여 나타낸다. 초점 거리는 다음과 같은 형태로 나타낼 수 있다.
\mathbf{K} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}

여기서 f_xf_y는 각각 수평 및 수직 초점 거리이며, c_xc_y는 이미지 좌표계에서의 주점(principal point)을 나타낸다.

  1. 주점 (c_x, c_y): 카메라 렌즈의 중심이 이미지 센서에 투영된 지점을 말한다. 일반적으로 이미지 센서의 중심 근처에 위치하지만, 정확한 위치는 캘리브레이션 과정에서 추정된다.

  2. 왜곡 계수: 대부분의 렌즈는 광학적인 왜곡을 가지고 있다. 이를 보정하기 위해 왜곡 계수가 사용된다. 일반적인 왜곡은 두 가지로 구분된다:

  3. 방사 왜곡 (Radial distortion): 렌즈 중심으로부터 거리가 멀어질수록 발생하는 왜곡이다. 이 왜곡은 보통 다음과 같은 수식으로 모델링된다.
r_{\text{distorted}} = r(1 + k_1 r^2 + k_2 r^4 + k_3 r^6)

여기서 r는 원래의 거리, k_1, k_2, k_3는 방사 왜곡 계수이다.

x_{\text{distorted}} = x + [2p_1 xy + p_2 (r^2 + 2x^2)]
y_{\text{distorted}} = y + [p_1 (r^2 + 2y^2) + 2p_2 xy]

여기서 p_1, p_2는 접선 왜곡 계수이다.

외부 파라미터

외부 파라미터는 카메라가 월드 좌표계에서 어떻게 위치하고 방향을 가리키는지 설명한다. 즉, 월드 좌표계와 카메라 좌표계 간의 관계를 나타내며, 회전 행렬 \mathbf{R}이동 벡터 \mathbf{t}로 구성된다.

  1. 회전 행렬 \mathbf{R}: 월드 좌표계에서 카메라 좌표계로 변환하기 위한 회전 변환을 나타낸다. 회전 행렬은 일반적으로 3x3 행렬로 표현되며, 각 축에 대한 회전을 나타낸다. 이 행렬은 다음과 같은 형태를 가진다.
\mathbf{R} = \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}
  1. 이동 벡터 \mathbf{t}: 카메라의 위치를 나타내며, 월드 좌표계에서 카메라 좌표계로 이동하는 벡터이다. 이 벡터는 카메라의 중심이 월드 좌표계에서 어느 위치에 있는지를 설명한다. 이동 벡터는 다음과 같이 표현된다.
\mathbf{t} = \begin{bmatrix} t_x \\ t_y \\ t_z \end{bmatrix}

회전 행렬과 이동 벡터는 카메라 좌표계를 월드 좌표계로 변환하기 위한 기본 요소이며, 둘을 결합하여 외부 파라미터 행렬로 나타낼 수 있다.

\mathbf{P}_{ext} = \begin{bmatrix} \mathbf{R} & \mathbf{t} \end{bmatrix}

이는 3x4 크기의 행렬로, 카메라 좌표계를 월드 좌표계로 변환하는 과정을 설명한다.

외부 파라미터의 활용

외부 파라미터는 월드 좌표계에서의 3D 점을 카메라 좌표계로 변환하는 데 사용된다. 이 변환은 다음과 같은 수식으로 표현된다.

\mathbf{X_c} = \mathbf{R} \mathbf{X_w} + \mathbf{t}

여기서, - \mathbf{X_c}는 카메라 좌표계에서의 3D 점 좌표 \begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix}, - \mathbf{X_w}는 월드 좌표계에서의 3D 점 좌표 \begin{bmatrix} X_w \\ Y_w \\ Z_w \end{bmatrix}, - \mathbf{R}는 회전 행렬, - \mathbf{t}는 이동 벡터이다.

즉, 외부 파라미터는 월드 좌표계에서 카메라 좌표계로의 좌표 변환을 정의한다. 변환된 좌표는 다시 카메라의 내부 파라미터를 통해 2D 이미지 평면으로 투영된다.

투영 행렬

내부 파라미터와 외부 파라미터를 결합하면, 월드 좌표계에서 카메라 좌표계로, 그리고 최종적으로 이미지 평면으로의 투영을 나타내는 투영 행렬을 정의할 수 있다. 투영 행렬 \mathbf{P}는 다음과 같이 표현된다.

\mathbf{P} = \mathbf{K} [\mathbf{R} | \mathbf{t}]

여기서 \mathbf{K}는 카메라의 내부 파라미터 행렬이며, [\mathbf{R} | \mathbf{t}]는 외부 파라미터 행렬이다. 이 행렬을 사용하면 3D 공간의 점을 2D 이미지 평면으로 변환할 수 있다.

\mathbf{x} = \mathbf{P} \mathbf{X_w}

여기서, - \mathbf{x}는 이미지 평면에서의 2D 점 좌표 \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}, - \mathbf{X_w}는 월드 좌표계에서의 3D 점 좌표이다.

이 수식을 통해 카메라가 3D 공간의 어떤 점을 어떻게 2D 이미지로 투영하는지 계산할 수 있다.