[ORB SLAM 2] Bundle adjustment (한동대 황성수 교수님 강좌)

아킬라·2023년 8월 16일
0

개념 공부

목록 보기
4/6

Bundle adjustment

  • 맵 상의 3차원 포인트들을 키프레임 이미지 들에 투영시킨 위치와 해당 영상 프레임에서 실제 관측된 위치의 차이와 해당 영상 프레임에서 실제 관측된 위치의 차이
  • 즉, reprojection error를 최소화하도록 3차원 포인트의 위치 및 카메라의 위치를 최적화하는 과정

Bundle Adjustment Flow chart


이미지 입력 -> 특징점 검출 -> 카메라 자세 추정(Rotation, Translation) -> 3차원 점 계산 Triangulation(삼각측량법) -> 카메라 자세, 3차원 점 보정(Bundle Adjustment) -> 보정된 카메라 자세 & 3차원 점

Triangulation(삼각측량법)

이미지 2개로부터 3차원 포인트의 좌표를 계산하는 방법

ORB SLAM에서의 Bundle Adjustment

  • Bundle Adjustment는 정확한 지도 생성을 도와줌

1. Motion only BA

  • Tracking thread에서 카메라 포즈를 최적화
  • Tracking thread에서 수행
  • 카메라의 회전 R과 평행 이동 t를 최적화


: 영상 이미지 상의 점(X^i)과 Rotation 및 Translation 이동(RX^i+t) 후 이미지 plane에 투영(pi)된 점 사이의 차이를 최소화하는 index를 구함(argmin)

2. Local BA

  • Local mapping thread에서 Local map에 대한 키프레임과 맵 포인트를 최적화

  • Local Mapping Thread에서 수행됨

  • covisible Keyframes와 Keyframe에서 보이는 모든 맵 포인트들을 최적화한다.

    Covisible keyframes: 같은 맵 포인트들을 바라보고 있는 키프레임들
    Rotation, Translation(RX+t)을 통해 이동된 점을 투영(pi)시킨 점과 영상 이미지 상에서 3차원 포인트의 위치의 차이를 에러 E로 설정하여 에러가 최소화되는 방향으로 최적화

3.Full BA

  • Loop closing 이 후 모든 키프레임과 맵 포인트를 최적화

  • 루프 클로징 이후 수행됨

  • 맵 생성 시 누적된 오차 수정

  • 맵의 모든 키프레임과 포인트를 최적화

  • 수식은 Local BA 식에서 모든 키프레임과 포인트로 확장

Reference

https://www.youtube.com/watch?v=ajCv1grYQPw&list=PLoJdZ7VvEiRNUxlIXlgy7Fh8ziyt4Hw50&index=4

https://velog.io/@claude_ssim/%EC%8B%9C%EA%B0%81%EC%A7%80%EB%8A%A5-Triangulation

profile
자율 주행 개발자가 목표입니다.

0개의 댓글

관련 채용 정보