컴퓨터 그래픽스를 다루는 많은 글들에서 시점투영행렬(perspective projection matrix) 또는 시점투영변환(Perspective Projection Transform) 를 투영행렬(Projection matrix) 또는 투영변환이라고 불러 버린다(참고5). 그런데 컴퓨터그래픽스에서 다루는 개념들이 (컴퓨터비전에서) 핀홀카메라 모델을 설명하며 나타나는 개념들과 1:1 대응되지 않아서 혼동을 만든다. 두 학문에서 공통적으로 나타나는 투영행렬/투영변환 이라는 것을 다룰 때 특히 더 그렇다.
컴퓨터 비전에서 3x4 형태의 3D → 2D 관계를 모델링하는 행렬은 (참고3) 카메라행렬(camera matrix) 또는 투영행렬(‣ Projection matrix) 이라고 불린다. 현실세계:3D → 이미지:2D 관계를 모델링하려면, 현실세계에서 카메라가 어디에 위치하는지의 관계를 담은 camera extrinsic matrix 와 카메라 내에서 이미지평면이 어디에 위치하는지 정보를 담은 camera intrinsic matrix 를 모두 알고 있어야 한다(참고1). 즉, camera matrix 는 camera extrinsic matrix 와 intrinsic matrix 의 곱이다(참고2).
컴퓨터 비전에서 월드좌표에 카메라 행렬(camera matrix)을 곱하는 과정은 컴퓨터 그래픽스 파이프라인(참고6)의 world space → view transform → camera space (eye space) → 투영변환(projection transform) → clip space 과정과 유사하다고 볼 수는 있지만 분명히 동일한 과정이라고 보기는 어렵다. Camera extrinsic matrix 를 곱하는 과정을 view transform 이라고 보고 camera intrinsic matrix 를 곱하는 과정을 투영변환(projection transform) 에 대응시켜볼 수는 있지만 절대 동일하지 않다는 이야기이다. 일례로 eye space 에는 픽셀이라는 개념이 수반되지 않는다. 따라서 컴퓨터 그래픽스 파이프라인의 투영변환행렬에는 focal length(초점거리) 나 principal point (주점) 같은 것들에 대한 정보가 일체 필요하지 않는다는 특징이 있다 (참고4). 반면 camera matrix 의 구성요소인 camera intrinsic matrix 에는 초점거리, 주점 정보 등이 포함되어 있다.
컴퓨터그래픽스의 perspective projection matrix 는 3D → 2D 관계를 모델링하지 않는다는 점에서도 차이를 보인다. 컴퓨터그래픽스의 perspective projection matrix 는 3D → 3D 관계를 모델링하며 eye space 의 view frustum 과 NDC 사이의 관계를 모델링한다 (참고4).
supplementary
참고
6.