본문 바로가기
Camera Model

[개념 정리] Image Projection 과 matrix

by xoft 2024. 5. 7.

3D point를 2D pixel로 변환하는 Image Projection방법에 관해 소개합니다.

 

1. Camera 좌표계로 변환

(임의점이 원점인) World 좌표계에서 (카메라가 원점인) Camera 좌표계로 변환합니다.

좌표계의 축을 회전(=Rotation변환)시키고 원점을 이동(=Translation변환)합니다.

Matrix연산을 통해, 회전, 이동이 가능합니다. 설명을 위해 2D좌표계의 변환을 나타냈으며, 각 행렬은 A에 해당합니다. $$ P_c = AP_w $$

$ P_c = TRP_w $         (1)
$ P_c = [R|T]P_w  $     (2)
$ P_c = RP_w + T $    (3)

3가지 형태가 될 수 있습니다. 분야마다 다른 방식으로 표기합니다.

  • (1)은 단순히 R와 T에 대해 matrix연산을 한번씩 수행합니다.
  • (2)는 Translate와 Rotate가 하나의 행렬로 만들 수 있기 때문에, 위 그림에서 가장 오른쪽 matrix에 해당합니다.
  • (3)는 Rotation은 3x3은 matrix형태이고, Translation은 (가장 마지막열로 구성된) 3x1인 matrix형태입니다.

지금까지 언급한 T와 R에 관한 matrix를 일반적으로 camera extrinsic matric (또는 extrinsic parameter)라고 합니다.

 

 

 

2. Pixel 좌표계로 변환

(3D point P를) 카메라의 원점 $O$ 에서 $f$만큼 떨어져있는 Image Plane내 2D point p로 이동합니다. 삼각법에 따라 $Z$만큼 떨어져있는 사물은 $f/Z$만큼 scale이 바뀝니다. x축과 y축에 대해 각각 scale을 변화해줍니다.

위 수식을 통해 (카메라가 원점인) Camera 좌표계에서 (이미지의 중심이 원점인) Image 좌표계로 바뀌었습니다. 추가적으로 Image좌표계에서 (이미지의 좌상단이 원점인) Pixel 좌표계로 변환이 필요합니다.

$\mu = f_x \cdot \frac{X}{Z} + c_x$ ,    $ \nu = f_y \cdot \frac{Y}{Z} + c_y $

matrix형태로 정리하자면,

$$ P_p = \begin{bmatrix}
\mu \\
\nu \\

\end{bmatrix} = 
\begin{bmatrix}
f_x & 0 & c_x \\
0 & f_y & c_y \\
0 & 0 & 1 
\end{bmatrix} 
\begin{bmatrix}
X/Z \\
Y/Z \\

\end{bmatrix}  $$

이며 이를 단순화하면, 아래와 같이 됩니다. 

$$ P_p = \frac{1}{Z} KP_c$$

일반적으로 matrix K로 표기하며 이를  camera intrinsic matrix(또는 intrinsic parameter)라고 합니다. 앞에서 설명한 extrinsic parameter와 같이 표기하면 최종적으로 아래와 식이 됩니다.

$$ P_p = \frac{1}{Z} K (R P_w + t) $$

보다 더 자세한 설명은 camera intrinsic/extrinsic글 참고 바랍니다.

댓글