2023.12.07 DAY57
profiler와 evo를 다 실행, 분석해보고 ORB SLAM에 대해 제대로 알고 싶어 코드를 공부하기 시작했다. 코드...정리가 잘되어 있는 것 같지만 양이 많고 함수를 타고타고 가야해서 많이 복잡하다ㅠㅠ 사실 ORB SLAM에 대해 명확하게 이해가 되지 않아서 코드를 보면 이해할 수 있을까 싶어 코드 공부를 하기 시작했다. 그런데 내용을 잘 모르니 이해하기 더 어려운 것 같다. 그!래!도! 시간이 걸리더라도! 분석해보고 싶다ㅎㅎ 화이팅!!
ORB SLAM
unique_lock
- 하나의 thread에만 접근할 수 있도록 lock을 걸어준다
- 이 함수의 장점은 {} 또는 함수가 끝날때 자동으로 unlock 된다
FAST 알고리즘
- grid를 나누고 각 grid 안에서 FAST를 사용하여 corner point를 검출
- grid 마다 corner poins를 가지고 있다
BRIEF로 descriptor 계산 방법
- keypoint 주변의 랜덤 픽셀 쌍을 선택하여 두 픽셀을 비교하여 1, 0를 return한다
- BRIEF는 128번 반복하여 keypoint마다 128bit의 vector를 생성
- ORB의 경우 BRIEF를 keypoint 방향에 따라 조종하여 rotation invarient하게 만든다
- bitpattern_31
- 두 개의 픽셀쌍을 고를 때 낮은 상관도와 높은 분산을 가진 pair를 원한다
- 미리 여러 쌍을 학습하여 좋은 256개의 pair를 남긴다
keypoint angle 계산
- 이 부분이 도저히 이해가 가지 않아서 강사님께 질문드렸다
- y축 방향(세로)와 x축 방향(가로)의 gradient를 계산
- gradient를 계산할 때 중심 keypoint에서의 거리x밝기값 으로 계산
- 이 두 방향을 통해 angle을 계산