Xiang Gao, Tao Zhang 저자의 'Introduction to Visual SLAM from Theory to Practice' 책을 통해 SLAM에 대해 공부한 내용을 기록하고자 한다.
책의 내용은 주로 'SLAM의 기초 이론', 'system architecture', 'mainstream module'을 다룬다.
포스팅에는 기초 이론만 다룰 것이며, 실습을 해보고 싶다면 다음 github를 참조하자.
https://github.com/gaoxiang12/slambook2
GitHub - gaoxiang12/slambook2: edition 2 of the slambook
edition 2 of the slambook. Contribute to gaoxiang12/slambook2 development by creating an account on GitHub.
github.com
Visual Odometry 이전 과정인 feature extraction 및 feature matching 과정에 대한 내용은 다음 글을 참조하자.
https://jjuke-brain.tistory.com/entry/Visual-Odometry-1-ORB-Feature-Feature-Matching
Visual Odometry (1) - Feature Method, ORB Feature, Feature Matching
Xiang Gao, Tao Zhang 저자의 'Introduction to Visual SLAM from Theory to Practice' 책을 통해 SLAM에 대해 공부한 내용을 기록하고자 한다. 책의 내용은 주로 'SLAM의 기초 이론', 'system architecture', 'ma..
jjuke-brain.tistory.com
목차
이전 포스팅에서 feature extraction, feature matching에 대해 알아보았다.
Feature matching 결과는 카메라의 motion을 추정하는 데 쓰인다.
Motion estimation 방법은 어떤 카메라를 사용하는지 혹은 카메라의 설정에 따라 3가지로 나뉜다고 하였다.
그중 이번에는 2D-2D case를 다루어볼 것이다.
2D-2D: Epipolar Geometry
Epipolar Constraints
두 이미지에서 매칭된 feature point 쌍의 일치성을 통해 두 프레임 간에 카메라가 어떻게 움직였는지를 알아낼 수 있다.
간단한 예시를 통해 알아보자.

목표는 image plane
이때 카메라의 motion은
각 image를 얻을 때의 카메라의 중심은
이때, 세 점
그리고 직선
그리고 polar plane과 image plane이 교차하는 직선
첫 번째 frame에서, 반직선
그런데 feature matching을 통해
이를 통해 최종적으로 카메라의 움직임도 추론하게 될 것이다.
Epipolar Constraint 유도 과정
첫 번째 프레임에서의
Pinhole camera model을 사용하여 다음과 같이 pixel position을 나타낼 수 있다.
(Pinhole camera model의 자세한 내용은 링크를 참조하자.)
이때
또한, Homogeneous coordinate를 사용하면 벡터에 0이 아닌 상수를 곱해도 원래 벡터와 같게 된다. 따라서 projection relationship을 나타내기 좋다. 이를 'equal up to a scale'이라고 표현하고, 수식으로 나타내면 다음과 같다.
이를 pinhole camera model에 적용하면 다음과 같이 표현이 가능하다.
두 픽셀
양변을
다시 왼쪽에
이와 같은 형태의 식을 유도할 수 있다.
여기서 좌변의
이에 따라 식의 좌변이 strictly zero (정확하게 0)이 되므로, 0이 아닌 상수를 곱해도 여전히 0이 되고, 따라서
따라서 다음 식을 얻게 되고,
위 두 식 모두 epipolar constraint이다.
Epipolar Constraint의 특징
기하학적으로 보면,
또한 식에서도 알 수 있듯이, epipolar constraint는 translation과 rotation 둘 다 encoding한다.
그리고 이 식에서 나타나는 중요한 두 matrix를 정의한다.
- Essential Matrix :
- Fundamental Matrix :
따라서 epipolar constraint를 위 matrix로 정의하면 다음과 같다.
Epipolar constraint를 통해 우리는 두 matching point의 공간적인 관계를 알 수 있다.
따라서 camera pose estimation 문제는 다음 두 단계로 간단히 요약할 수 있다.
- 매칭된 point의 픽셀 위치에 기반하여
혹은 를 찾는다. - 찾은
나 로 를 찾는다.
SLAM task에서는 internal parameter는 알고있다고 가정하기 때문에, 더 간단한 형태인
그럼 essential matrix에 대해 좀 더 자세히 살펴보자.
Essential Matrix
정의에 따르면, essential matrix는 크기가 3 × 3인 행렬이고,
또한 다음과 같은 특징을 갖는다.
- 서로 다른 scale에 대한 equivalence
- Essential matrix는 epipolar constraint에 의해 정의되는데, epipolar constraint는 '... = 0 (equal-to-zero)' 형태의 식이므로 0이 아닌 상수를 곱해도 성립한다.
- 따라서 scale이 달라져도
는 동일하다.
- Internal properties
- 정의에 따라
의 singular value는 의 형태를 갖는다. (자세한 증명은 생략한다.)
- 정의에 따라
- Translation과 rotation은 3DoF를 갖기 때문에,
인 essential matrix는 6DoF를 갖게 된다. 하지만, scale에 대한 equivalence 성질을 가지므로 5DoF를 갖는다.
Essential matrix
하지만, internal property가 nonlinear이기 때문에,
이를 eight-point-algorithm이라 한다.
Eight-point method
Eight-point-algorithm은
매칭된 점 한 쌍이 있다고 가정하자. 이들의 normalized coordinate는 각각
Polar constraint에 대입하면 다음을 만족한다.
i번째 feature point 쌍을
위 linear equation system의 계수행렬(coefficient matrix)은 2D feature point의 위치(좌표)로 구성되며, 사이즈는 8 × 9이다.
이 말은 곧
Internal property를 굳이 사용하여 5DoF를 갖게 될 수도 있으나, 계산이 매우 복잡해지고, 실제로는 수많은 feature points 쌍을 얻을 수 있으므로, 8개 쌍을 얻을 때에 비해 5개 쌍을 얻을 때가 큰 이점이 없다.
따라서 선형으로 비교적 간단히 구할 수 있기 때문에 일반적으로 eight-point-algorithm을 사용한다.
다음으로는 드디어 카메라의 움직임, 즉
Essential matrix로부터 카메라의 움직임 구하기
여기서
여기서

빨간 점으로 표시된 projected point(
위와 같이 4가지 가능한 경우가 생기는데, 4가지 중 depth값(distance)이 두 카메라의 중점
그런데, linear equation으로 구한
이 때에는
기하학적으로 보면, linear equation으로 구한 해를 실제
또한,
Homography
Fundamental matrix와 essential matrix 말고도 two-view geometry에서 또다른 common matrix가 있는데, 바로 homography matrix
이는 두 평면간의 mapping 관계를 나타낸다. Image formation 중 Perspective Transformation에서 이 행렬을 본 적이 있을 것이다.
(이미지의 formation의 종류를 알고싶다면 링크를 참조하자.)
Scene에서의 feature point가 모두 같은 평면에 존재할 때, (예를 들어 wall, ground 등) 이 행렬을 사용하여 카메라의 motion을 추정할 수 있다.
표현은 약간 다르지만, OpenCV 공식 문서에 소개된 다음 그림을 참조하자.

이미지
Pinhole camera model에 따라 다음이 성립한다.
여기서
또한 3 × 3 크기를 갖고, essential matrix에서와 마찬가지로 matching points쌍을 통해 이 행렬을 계산한 후 SVD를 적용하여 rotation과 translation을 찾을 수 있다.
위 식을 풀어쓰면 다음과 같다.
Homogeneous coordinates에서 non-homogeneous coordinates로 변환하는 과정을 살펴보자.
equal sign이
보통
이에 따라 정리하면,
Matching points 한 쌍이 두 개의 constraints를 구성할 수 있으므로, 8DoF를 갖는
이 식은 위의
위 식에서 coefficient matrix가 나오므로 SVD를 통해
4가지 solution이 나오게 되는데, depth 값이 모두 양수인 경우를 통해 2가지를 제외시키고, scene plane의 normal vector
Feature point들이 모두 같은 평면에 위치하는 경우, 카메라는 pure rotation만 하게 되고, fundamental matrix
(Degeneration이란, 실제 데이터에 존재하는 noise에 의해 redundant freedom이 결정되는 현상을 말한다.)
따라서 eight-point method와 homography를 둘 다 사용하여 motion을 추정해보고, 더 작은 reprojection error를 갖는 결과를 최종적으로 선택해야 할 것이다.
최근댓글