이번 시간에는 3D에서 Image plane으로 obj가 어떻게 투영되는지 설명하고자 한다.
3D에서 Image plane으로 obj를 투영할 때 총 4번의 coordinate 변화를 거쳐야 한다.
World Coordinate → Camera Coordinate → Image Coordinate → Pixel Coordinate 을 순서로 3D에서 Image plane으로의 투영이 발생한다.
World Coordinate (3D coord)
어떤 obj의 world coordinate에 해당하는 좌표는 [x_w, y_w, z_w, 1]과 같은 homogenous coordinate으로 표현될 수 있고, 이렇게 homogenous coordinate으로 표현하는 이유는 이후 camera parameter에 해당하는 4x4 extrinsic matrix를 4x1의 world coordinate에 곱해줌으로써 obj의 World coordinate에서 Camera coordinate으로 변환할 때 계산을 편리하게 해주기 때문이다.
여기서 Extrinsic parameter는 rotation과 translation으로 구성되는데, rotation은 3D 공간(Camera coordinate 기준)에서 camera가 어디를 바라보고 있는지, translation은 3D 공간(Camera coordinate 기준)에서 camera가 어디에 위치하는지를 의미한다.
Camera Coordinate (3D coord)
world coordinate은 obj 좌표를 Scene 전체 안에서 고정된 global한 좌표로 표현했다면, camera coordinate은 camera를 기준으로 Scene 안의 obj 좌표를 local하게 표현했다고 생각하면 된다.
이때 camera coordinate도 4x1 matrix의 homogeneous coordinate으로 표현할 수 있고, obj의 world coordinate에 extrinsic matrix를 행렬곱하면 obj의 camera coordinate을 쉽게 구할 수 있다.
여기서 추가적으로, world coordinate에서의 camera Rc(rotation)과 C(translation)을 표현한 extrinsic matrix를 역행렬하면 camera coordinate에서의 camera R(rotation)과 t(translation)을 표현한 extrinsic matrix를 얻을 수 있다.
Image Coordinate (3D coord)
obj의 camera coordinate를 구한 후 Image coordinate으로 변환할 때 다음과 과정을 거쳐야 한다.
camera의 3x4 Intrinsic matrix를 obj의 camera coordinate에 행렬곱해주면 obj의 Image coordinate를 구할 수 있다.
여기서 intrinsic matrix는 camera의 extrinsic parameter가 고정돼 있을 때, 즉 rotation과 translation이 고정돼 있을 때 camera 내부 특성에 대한 정보이다.
Intrinsic matrix는 아래와 같이 크게 초점 거리(fx, fy), 비틀림 계수(s), 주점 좌표(x0, y0)로 구성된다.
fx와 fy에 해당하는 초점 거리는 렌즈와 이미지 센서 사이의 거리이고, s는 이미지 센서의 뒤틀림(일반적으로 s는 0이다.)이며, x0, y0는 이미지 센서의 중심 좌표이다.
하지만, image coordinate은 여전히 [x y w] 좌표로 표현되기 때문에 깊이 정보(w = Zc)가 완전히 제거된 2D image plane의 좌표인 pixel coordinate으로 변환해줘야 한다.
Pixel Coordinate (2D coord)
pixel coordinate은 이미지의 실제 픽셀 좌표 (u, v)를 얻기 위해서 image coordinate의 x와 y를 w로 나누어 정규화한 좌표계이다.
아래 이미지는 World coordinate ~ Pixel coordinate까지 정리한 최종 그림이다.
'글 & 논문 > Computer vision' 카테고리의 다른 글
[논문 리뷰] 3D gaussian-splatting (0) | 2024.05.29 |
---|---|
[PTAM] Mapping (0) | 2024.03.20 |
[PTAM] Tracking (0) | 2024.03.20 |
[PTAM] Map (0) | 2024.03.19 |
[PTAM] PTAM vs. SLAM (0) | 2024.03.18 |