[SLAM] Cameras and Images
Introduction
- 이 챕터에서는 observation equation에 속하는 내용으로, 로봇이 어떻게 외부 세계를 보는지를 다룬다.
- 카메라 기반 visual SLAM에서는 주로 image projection이 된다.
- 우리는 real life에서 다양한 사진들을 본다. 색상과 밝기 정보를 담은 사진들은 컴퓨터에 수백만 개의 픽셀로 표현된다.
- 3차원 물체에 반사된 빛은 카메라의 optical center를 통과하고 카메라의 imaging plane에 투영되게 된다. 다음으로 카메라의 빛 센서가 빛을 받으면, measurement를 생성하고 픽셀을 만들며, 이게 우리가 보는 사진이 된다. 이 과정이 수학적 수식으로 표현될 수 있을까?
- 이 챕터에서는 camera model에 대해 다루며, 이때의 projection relationship과 internal parameter에 대해 설명한다.
Pinhole Carmera Models
- 3D point를 2D image plane에 projection할 때 사용하는 geometric model에는 다양한 방식이 있다. 가장 간단한 방식으로는 pinhole model이 있는데, 우리는 이 pinhole model로 projection을 시작해 볼 것이다.
- 또한 카메라 렌즈 때문에 projection 동안에는 distortion이 발생한다. 그래서 전체 projection 과정을 묘사하기 위해 pinhole model과 함께 distortion model을 사용할 것이다.
Pinhole Camera Geometry
- 다들 고등학교 과학시간에 초로 projection하는 실험을 해봤을 것이다. 초가 어두운 상자 앞에 있고, 초의 불빛은 작은 구멍을 통해서 어두운 상자 뒤쪽 평면에 project된다. 그러면 수직으로 뒤집어진 초의 image가 이 평면에 맺히게 된다. 이 과정에서, 작은 구멍은 3차원 세계의 초를 2차원 imaging plane에 투영하게 된다.
마찬가지로 우리도 간단한 모델을 통해 camera의 imaging process를 표현할 수 있다. Figure 4-1을 보자.
- camera coordinate system
- image coordinates
- pixel coordinates
- matrix로 표현
- homogeneous coordinate \(K\)와 non-homogeneous coordinate \(P\)
- \(Z\)를 왼쪽에 놓으면
- internal parameter
- \(K\)는 카메라의 inner parameter matrix로 fixed된 값임
- external parameter
- 수식 4.6에서는 camera 좌표계를 사용했지만, 카메라가 계속 움직이기 때문에 원래 P의 좌표계는 world 좌표계임 (기호 \(P_w\))
- \(P_w\)가 camera pose에 따라 camera 좌표계로 변환됨
- camera pose는 rotation matrix \(R\)과 translation vector \(t\)로 표현
- relationship of world coordinates to pixel coordinates
- 마지막 식에서는 homogeneous coordinates를 non-homogeneous coordinates로 변환함
- \(TP_w\)에서 homogeneous coordinates를 사용하고, non-homogeneous coordinates로 변환하고, 그걸 \(K\)로 곱함
- internal parameter
- normalized coordinates
- projection 과정을 다른 관점으로 바라볼 수 있음
- 수식 4.8을 보면 world coordinate point를 camera coordinate으로 변환하고 마지막 차원을 제거해서 사용할 수 있다는 걸 보여준다.
- 즉, imaging plane의 깊이 정보는 삭제되고 이건 마지막 차원을 normalization하는 것과 같음
- 이러면 camera normalized plane 상에 point \(P\)의 projection를 얻을 수 있음
- normalized coordinates는 \(z=1\)인 plane의 한 점으로도 볼 수 있음
- pixel coordinates는 normalized plane 위의 point를 quantative measurement한 결과로도 볼 수 있음
Distortion
- 더 넓은 FoV(Field-of-View)를 얻기 위해서, 우리는 카메라 앞에 렌즈를 더함. 렌즈를 더하면 imaging 과정에서 빛이 들어올 때 왜곡이 발생함.
- (1) 렌즈의 모양 때문에 빛의 진행이 왜곡 (2) lens와 imaging plane이 완전히 평행하지 않아서 projection 시 position이 왜곡
- Pinhole camera vs Real photos
- pinhole camera에서는 빛이 일직선으로 진행하여 pixel plane에 정확한 상이 맺힘
- real environment에서는 빛에 curve가 생김
- 이미지의 edge에 가까워질 수록 이 현상은 심해짐
- Distortion의 종류
- 렌즈의 모양 때문에 발생하는 왜곡 (radial distortion)
- lens와 imaging surface가 완전히 평행하지 않아서 발생하는 왜곡
- 더 깊은 이해
- normalized plane의 한 점 \(p\)가 있을 때, \([x,y]^T\) 혹은 극좌표에서는 \([r,\theta]^T\)로 표현됨
- \(r\)은 point \(p\)와 원래 좌표계의 거리
- \(\theta\)는 수평 축으로의 각도
- radial distortion은 좌표점이 length를 따라 왜곡되는 것
- tangential distortion은 좌표점이 horizontal angle을 따라 왜곡되는 것
- normalized plane의 한 점 \(p\)가 있을 때, \([x,y]^T\) 혹은 극좌표에서는 \([r,\theta]^T\)로 표현됨
- normalized coordinates after distortion
Stereo Cameras
- single camera는 depth 정보를 제공하지 못함
- binocular camera나 RGB-D camera로 \(P\)의 depth가 결정될 때, 그 공간적 위치를 알 수 있음
- normalized plane 상에 점 \(P\)가 있을 때, 있을 것으로 예측되는 \(Real P\)의 위치를 보여줌
- pixel distance(depth)를 재는 방법
- 사람 눈은 왼쪽과 오른족 눈에서 보이는 scene의 차이로 물체의 거리를 측정함
- binocular camera도 똑같다.
- 왼쪽과 오른쪽 이미지를 동시에 얻고 이미지간 차이를 구하면, 각 픽셀의 depth가 측정됨
- binocular camera
- left-eye camera와 right-eye camera로 구성
- 두 카메라 모두 pinhole camera라고 가정하며, center가 모두 같은 x축 상에 있음
- 두 center간 차이를 baseline이라 부름
- 3D point \(P\)
- left-eye와 right-eye에 project되면 \(P_L, P_R\)이 됨
- 둘은 x축을 따라 이동했기 때문에, P의 image도 x축에서만 다르게 표현됨
- left pixel coordinate \(u_L\)과 right pixel coordinate \(u_R\)
- \(\triangle P P_L P_R\)과 \(\triangle P O_L O_R\)의 닮음에 의해, 다음과 같은 수식이 나옴
- 식을 다시 정리하면 다음처럼 됨
- \(d\)는 왼쪽과 오른쪽의 horizontal 좌표 사이의 차이이며, disparity 혹은 parallax라고 불림
- parallax는 distance와 반비례하는 관계
- parallax가 클수록, distance가 가까워짐
- parallax는 최소한 1픽셀 이상이어야 하므로, binocular depth의 이론적 최댓값은 \(fb\)임
- 연산량 때문에, binocular depth estimation은 GPU나 FPGA가 필요함
RGB-D Cameras
- binocular camera에 비해 RGB-D camera는 더 active하게 depth를 측정한다.
- RGB-D camera 종류
- structured infrared light으로 pixel distance를 측정하는 방식
- 카메라가 돌아오는 structured light pattern으로 물체와 카메라간 거리를 측정함
- time-of-flight (ToF)로 pixel distance를 측정하는 방식
- 카메라가 빛을 발사해 발사 시간을 통해 distance를 측정하는 방식
- structured infrared light으로 pixel distance를 측정하는 방식
- Output
- depth 측정 이후, RGB-D 카메라는 depth와 color map pixel 사이를 연결함
- pixel 단위로 호응되는 color image와 depth image를 출력
- 문제점
- infrared light을 사용하는 카메라는 일광이나 다른 센서의 방해에 취약해서 외부 환경에서 사용 불가
- 투명한 물체는 빛을 반사하지 못해서 측정 불가
Images
This post is licensed under CC BY 4.0 by the author.