본문 바로가기
AI/Computer Vision

[3D] 3차원 좌표계 변환, World 좌표 → Camera 좌표

by 미뇽도리 2025. 12. 5.

 

12.1 3차원 기하와 캘리브레이션

Calibrataion : 어떤 좌표계 상의 점  → 다른 좌표계의 점 



1) 세계 좌표계와 카메라 좌표계

카메라는 세계 좌표계를 기준으로 이동 $\textbf{t}=\left(t_x,t_y,t_z\right)$  과 회전 $ r_1, r_2, \ldots, r_9 $  진행

 

세계 좌표계를 카메라 좌표계로 변환 :

$ (x_w,y_w,z_w)\to(x_c,y_c,z_c) $

 

회전과 이동이 작용하는 것을 나타내기 위해 보통 3 x 4 행렬 $(\textbf{R}|\textbf{t})$ 사용 (외부 행렬 extrinsic matrix)

 

$\begin{pmatrix}x_c\\y_c\\z_c\end{pmatrix}=\begin{pmatrix}r_1&r_2&r_3&t_x\\r_4&r_5&r_6&t_y\\r_7&r_8&r_9&t_z\\\end{pmatrix}\begin{pmatrix}x_w\\y_w\\z_w\\1\\\end{pmatrix}=(\textbf{R}|\textbf{t})\begin{pmatrix}x_w\\y_w\\z_w\\1\\\end{pmatrix}$

 

2) 영상 좌표계

3차원 점 $ (x_c,y_c,z_c) $ 은 영상 공간 $(u,v) $ 점으로 투영됨

$f$ : 카메라 좌표계에서 영상 평면까지 거리 | 초점거리, focal length

삼각비에 의해 아래 식 성립 : 

$x = \dfrac{f x_c}{z_c},\; y = \dfrac{f y_c}{z_c}$

 

$ x', y', z' $ : 동차 좌표를 구성하는 요소


동차 좌표 : n차원 사영 공간을 n+1개의 좌표로 나타내는 좌표계 

ex. 2차원 공간은 3개의 좌표 $(x,y,z)$ 로 나타냄, 3차원 공간은 4개의 좌표 $(x,y,w,z)$로 나타냄

3D  2D 투영식에는 나눗기가 존재하는데 나누기는 행렬로 나타낼 수 없음

- 연산은 곱셈, 덧셈인 선형 형태로 존재해야 함

 

EX)

2D 좌표 $(u,v)$  동차 좌표 → $(u',v',w')$

실제 좌표 : $u=\frac{u'}{w'},v=\frac{v'}{w'}$ 

마지막 좌표 $w$로 나누면 실제 좌표 나옴


 

$x-y$ 좌표계의 원점은 $(0,0)$,   $u-v$ 좌표계를 기준으로 하면 $(c_x, c_y)$ 

$x$축과 $y$축이 기울 수 있기 때문에 $\gamma $ 반영함 

(문헌에 따라 기울임이 없다고 가정해서 $\gamma = 0$으로 설정하기도 함.  

 

$\textbf{K}$ : 카메라 내부 파라미터, 내부 행렬(intrinsic matrix


$\begin{pmatrix}u'\\v'\\w'\end{pmatrix}=\begin{pmatrix}f_x&\gamma&c_x\\0&f_y&c_y\\0&0&1\\\end{pmatrix}\begin{pmatrix}x_c\\y_c\\z_c\end{pmatrix}=\textbf{K}\begin{pmatrix}x_c\\y_c\\z_c\end{pmatrix}$

 

요소 한 개씩 뜯어보면 다음과 같이 진행됨

  • $x_c$가 초점거리 $f_x$에 의해 확대되고, $y_c$가 $\gamma$를 통해 기울임이 보정되며, 중심점 $c_x$가 $z_c$를 통해 동차좌표 형태로 보정
  • $y_c$가 초점거리 $f_y$에 의해 확대되고, 중심점 $c_y$가 $z_c$를 통해 동차좌표 형태로 보정
  • 깊이 값 $z_c$를 그대로 반영

$\begin{pmatrix} u' \\ v' \\ w' \end{pmatrix} = \begin{pmatrix} f_x x_c + \gamma y_c + c_x z_c \\ f_y y_c + c_y z_c \\ z_c \end{pmatrix}$

 

동차 좌표 정규화 진행 : 

$u = \dfrac{u'}{z_c} = \dfrac{f_x x_c}{z_c} + \dfrac{\gamma y_c}{z_c} + c_x$

 

$v = \dfrac{v'}{z_c} = \dfrac{f_y y_c}{z_c} + c_y$

 

동차 좌표 보통 좌표로 변환

$u = \dfrac{u'}{w'},\; v = \dfrac{v'}{w'}$

 

 

[최종 순서]

1. 카메라를 통해 세계 좌표계를 기준으로 $(x_w, y_w, z_w)$ 측정

2. 카메라 외부 행렬 $(\textbf{R}|\textbf{t})$ 을 통해 카메라 좌표계 $(x_c, y_c, z_c)$로 변환

3. $\textbf{R}$을 통해 영상 평면의 동차 좌표 $(u', v', w')$로 변환

4. 보통 좌표로 변환 $(u,v)$