The axes are [down, right, backwards] or [-y, x, z] where the camera is facing forwards -z. The COLMAP frame is [right, down, forwards] or [x, -y, -z] (참고1)

‘좌표계의 기준이 [아래쪽, 오른쪽, 뒷쪽] 이다 혹은 $[-y, x, z]$ 이다.’ 라는 말은 무슨 말일까? 그렇다면 ‘COLMAP(참고2)에서 제시하는 좌표계(frame)는 $[x, -y, -z]$ 이다' 같은 말은 도대체 무슨 뜻일까(참고1)? 둘이 다른 말이라면, 둘은 무슨 차이가 있을까?

Case 1

그림 (참고1)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/410cca27-f265-4a82-a2e5-7f5dccfc6741/kvjqbiO.png

위 그림을 보자. 위 그림에는 카메라 원점 좌표계와 이미지 평면 그려져 있고, 카메라 정규 좌표계는 생략되어 있다. 이 그림에 따르면, 카메라가 바라보는 방향이 $+z$ 이다. 그러니까 ‘전방’ 이다. 오른손으로 위 그림의 좌표계를 표현해 보았다. 검지손가락을 나에게서 멀어지는 방향으로 두고 $+z$ 방향이라고 둔다면, $+x$ 은 왼쪽 방향, $+y$ 는 윗쪽 방향이라고 할 수 있겠다.

카메라 원점 좌표

카메라 원점 좌표

카메라 원점 좌표 (빨강), 이미지 좌표 (연녹). 기저벡터의 길이 차이를 표현했다.

카메라 원점 좌표 (빨강), 이미지 좌표 (연녹). 기저벡터의 길이 차이를 표현했다.

3D 공간상에 존재하는 점인데, 카메라 원점 좌표계의 언어로 해석한 좌표값 ${}$$\mathrm{x_{(o_x,o_y,o_z)}}$를(혹은 정규 이미지 좌표계의 언어로 해석한 좌표값 $\mathrm{x_{(u,v)}}$를(from4)), 이미지 평면 좌표계 ****의 언어 $\mathrm{x_{(p,q)}}$로 해석하고 싶다고 생각해 보자(from3). 둘 사이의 관계를 정의하는 변환 $\mathrm{K}$ 는 다음과 같이 표현 가능하다. 이때 좌표들이 동차좌표라는 뜻을 담기 위해 $\mathrm{HG}$ 를 적어 주었다(from2).

$$ (1):\mathrm{x_{(p,q)}^{HG}=Kx_{(o_x,o_y,o_z)}} $$

$$ (2):\mathrm{x_{(p,q)}^{HG}=Kx_{(u,v)}^{HG}} $$

카메라 내부 파라미터의 정의에 따라, $f>0$ 이다. 또한, 위 그림으로 보았을 때 $k_x, k_y<0$ (from5)이고, $c_x, c_y<0$ 이다. 동차좌표의 정의에 따라, $\mathrm{x_{(p,q)}}=(p,q)=(hp,hq,h)^{\mathrm{HG}}=\mathrm{x_{(p,q)}^{HG}}$ 이므로, $(1)$ 이든 $(2)$ 이든 여부에 상관없이 $\mathrm{K}$ 는 다음과 같이 모델링 가능하다. $h$ 의 부호는 당연히 모른다.

$h * (k_xf)$ 0 $h*c_x$
0 $h * (k_yf)$ $h*c_y$
0 0 $h$

부호를 관찰해 보자. $h$ 가 양수이면, 다음과 같은 결과가 나온다.

- -
- -
+