본 포스트는 공부 목적으로 작성하였습니다.
혹시 보시는 도중 잘못된 부분이나 개선할 부분이 있다면 댓글이나 메일주시면 확인 후 수정하도록 하겠습니다.
해당 포스트는 앞서 pdf 파일로 정리했던 자료를 포스팅한 글입니다.
자세한 내용은 다음 링크를 통해 확인해주세요.
https://www.facebook.com/groups/slamkr/permalink/1043277826031861/
해당 포스트는 visual odometry 알고리즘에서 포즈를 계산하는 대표적인 두가지 방법인 feature-based와 direct method의 차이점에 대해 설명한다. feature-based는 ORB SLAM2 코드를 참조하여 작성하였고 direct method는 DSO 코드를 참조하여 작성하였다.
두 방법 모두 처음 SLAM 알고리즘을 작동시킬 때는 초기 두 프레임 간 3차원 map point depth 값을 초기화하는 과정을 거친다. 이를 Initialization이라고 하며 해당 과정이 완료되면 2D-3D matching 알고리즘을 사용하여 카메라의 포즈를 계산한다. 본 포스트에서는 Local Bundle Adjustment (LBA), Global Bundle Adjustment (GBA), Pose Graph Optimization (PGO)의 내용은 다루지 않고 단순한 sequential odometry 계산 방법만을 다룬다.
Feature-based method

Feature-based method는 이미지 상에서 특징점을 추출한 후 카메라가 이동함에 따라 변하는 특징점의 위치를 추적하여 카메라의 포즈를 계산하는 방법이다. 예를 들어, 핀홀카메라가 위와 같이 차량을 보고 있다고 가정해보자.

feature-based method는 영상 내에서 특징점을 추출하는 다양한 알고리즘(FAST, SIFT, SURF, ORB,...)를 사용하여 키포인트를 추출하고 이 키포인트에 고유한 ID를 부여하기 위해 다양한 descriptor 알고리즘 (BRIEF, BRISK, ORB,...)를 사용한다. ORB SLAM2 알고리즘의 경우 키포인트와 descriptor 모두 ORB를 사용한다.

해당 키포인트에 해당하는 3차원 맵포인트

다음 카메라


Direct method

Direct method는 카메라가 이동함에 따라 변하는 픽셀의 밝기 변화를 추적하여 카메라의 포즈를 계산하는 방법이다. 예를 들어, 핀홀카메라가 위와 같이 차량을 보고 있다고 가정해보자.

두 번째 카메라

이러한 픽셀의 밝기 변화를 추적하여 카메라의 포즈를 계산한다. feature-based 방법과 달리 키포인트와 descriptor를 사용하지 않고 바로 카메라의 포즈를 계산하므로 direct method라고 불린다.

디테일한 설명을 위해 위와 같이 하나의 픽셀 밝기 변화만을 설명한다.

feature-based와 동일하게 해당 포인트에 해당하는 3차원 맵포인트

다음 카메라


밝기 오차가 있는 모든 포인트에 대해서 오차를 최소화하는 최적의 카메라 포즈를 계산한다. 앞서 말했듯이 이러한 포인트를 얼마나 많이 사용하느냐에 따라서 sparse, semi-dense, dense direct method로 구분된다.
'Fundamental' 카테고리의 다른 글
[SLAM] Optical Flow와 Direct Method 개념 및 코드 리뷰 (0) | 2022.06.16 |
---|---|
[SLAM] Bundle Adjustment 개념 리뷰 (3) | 2022.06.10 |
[SLAM] Pose Graph Optimization 개념 설명 및 예제 코드 분석 (20) | 2022.01.05 |
다중관점기하학(Multiple View Geometry in Computer Vision) 책 내용 정리 Part 3 (0) | 2022.01.05 |
다중관점기하학(Multiple View Geometry in Computer Vision) 책 내용 정리 Part 2 (1) | 2022.01.05 |