Visual SLAM (2)

JeongChaeJin·2022년 4월 15일
0

자율주행

목록 보기
4/4

1. 초기 카메라 추정

  • 초기 지도로 부터 전체 지도로 확장됨
    • 초기 지도 크기 (단위)가 전체 지도의 크기를 결정
    • 초기 지도 에러가 전체 지도에 전달 될 수 있음
    • 초기지도 작성이 중요

  • 매칭된 특징점에 대한 삼각 측량

Stereo Cam

  • 두 카메라의 상대적 자세를 미리 알고 있음

  • 충분한 너비 기준선, wide baseline 확보가 중요
  • 충분하 너비여야 삼각 측량 오차가 낮음
    • 강건한 삼각측량이 중요

강건한 삼각측량을 위한 필요 요소

  • 강건한 특징 매칭 획득
    • 유사성에만 기반하면 잘못된 결과 도출 가능
    • cycle consistency 를 이용한 오류 제거
    • epipolar constraint 이용한 오류 제거

  • epipolar constraint의 경우 매칭된 특징점이 3차원 공간에서 만나는지 여부를 이미지2에 대응되는 특징점이 해당 직선위에 놓여있는지 여부로 판단
    • 두 빛줄기가 만나지 않으면 에피폴라 제약을 불만족

  • 서로 다른 각도에서 동일한 평면을 찍었다면 동일 평면은 호모그라피 변환으로 설명될 수 있음
    • 호모그라피 변화를 만족하지 않는 다수의 잘못된 특징 매칭결과를 걷어 낼 수도 있음

Feature Tracking

  • Stereo Cam은 두 카메라를 기계적으로 구상하여 상대적 자세를 알 필요가 없으므로 이 방법을 활용할 필요가 없음
  • 위 방법을 이용시 한 대의 카메라로 흉내 가능
    • Monocular Visual SLAM

  • 시간이 지남에 따라 움직인다고 가정하여, 서로 다른 시간에 획득한 두 이미지를 활용한 삼각 측량
  • 강건성을 위해서는 시간적으로나 공간적으로 가까운 이미지 간에 계산은 피하는 것이 좋으며 적당히 떨어진 영상끼리 삼각 측량 하도록 Key Frame 개념을 가지고 있으면 좋음
    • Key frame : 시간적으로나 공간적으로나 충분히 멀리 떨어져있는 이미지
  • 시간에 따라 다른 위치에 놓인 카메라들에 대한 상대적 자세를 계산해야함
    • Feature matching 결과 활용 ? -> 매칭 결과에 노이즈가 있으면 정확한 카메라 자세 추정 어려움

  • 강건함 특징점 매칭을 위한 초기 특징점 추적
  • 연속 프레임 적용시 다른 키프레임의 특징점 추적 가능
  • 두 이미지의 특징점 매칭 결과가 있을 시 Fundamental Matrix를 찾아 행렬 분해를 계산하여 두 카메라의 상대적 자세를 추정해낼 수 있음

  • F : 기초 행렬

  • 기초 행렬은 7개 점이 있으면 구할 수 있음
  • 행렬 F를 분해하는 것으로 자세 추정

  • 행렬 F를 분해하면 4개의 변환 행렬이 계산됨
    • 4개 변환 행렬 중 카메라의 방향을 고려해 한개 선택

  • 내부/외부 파라미터를 모두 알 고 있으므로 삼차원 좌표 추정이 가능

지도 최적화

번들 조정

  • 이미지 상 특징점 위치를 기반으로 3차원의 특징점의 위치와 카메라의 위치를 조정

지도 형태

  • Dense map
    • 거의 모든 픽셀 정보가 있어 안정적으로 작동
    • 큰 지도 용량 -> GPU 지원 필요
  • Sparse map
    • 비교적 적은 지도 용량
    • 추가 연산 필요 (안정적 동작을 위해)

2. 카메라 트래킹

  • 주어진 지도 내에서 움직이고 있는 카메라 위치 추적
    • 자주 실행해서 지속적으로 추적

  • 카메라 트래킹은 직관적으로 카메라가 어떤 위치에서 어떤 방향으로 3차원 공간을 찍었기에 현재 이미지를 획득할 수 있었는지를 추정해내는 것
    • 그러므로 이미지가 중요한 인풋
  • 단안 카메라 기반에서는 포인트 클라우드가 지도정보로 대표적
  • 이전 시각 카메라 정보
    • 카메라 움직임은 물리적으로 급격하게 일어날수 없으므로 이전 시각 카메라 위치와 그리 멀지 않을 것. 대략적으로 카메라 위치를 예측하려면 정밀한 자세를 잡는데 이전 카메라 위치가 도움이 됨
  • 출력은 카메라 자세

기본 아이디어

  • 이전 프레임 상태를 기반으로 대략적 현재 카메라 자세 추정
  • 환경 지도 특징점 재투영
  • 패치 검색을 통한 특징 매칭
  • 카메라 자세 개선

이전 카메라 상태 기반 대략적 현재 카메라 자세 추정

  • 이미 알고 있는 짧은 시간 동안의 자세를 통해 얼마만큼의 회전, 이동이 발생했는지 추적

  • 짧은 시간 동안 급격하게 카메라 움직임이 바뀌지 않았다고 가정하면, 현재 시각의 카메라 자세 수정은 이전 시각의 카메라 자세 수정과 같다고 가정
    • 어림 짐작이므로 정확하지 않음

환경지도 특징점 재투영

  • 어림한 자세로 놓인 카메라에 투영하는 작업
  • 내부 파라미터와 어림한 카메라 자세에 해당하는 외부 파라미터를 활용해 계산
  • 정확한 위치에 맺혀있지 않지만 근처에 대응되는 특징점이 있을 수 있음

패치 검색을 통한 특징 매칭

  • 환경지도의 특징점이 재투영된 위치에서 적당한 크기의 패치를 잡은 다음 그 패치 내에서 대응하는 특징점을 계산

  • 환경지도와 현재 이미지 특징점간의 대응 관계를 구하게됨
    • 이 들간의 거리는 식으로 측정
    • 현재 카메라 자세를 어림한 것으로부터 발생한 오차로 인지

카메라 자세 개선

  • 재투영 오차를 최소화하는 카메라 자세
  • 최적화된 카메라 위치는 재투영 오차를 최소화하는 카메라 자세를 찾아내는 최적화 문제로 바꾸어 생각
    • 이 재투영 오차를 최소화하는 자세를 찾아내면 t 시각에 대한 카메라 자세를 찾아내게 되어 카메라 위치를 업데이트 할 수 있게됨
  • 재투영 오차 최소화하는 카메라 자세 문제 -> 비선형 최적화 문제 (카메라 회전을 최적화하는 부분이 비선형 문제)

  • 대략적인 자세 추정 -> 정확한 자세 추정
    • 적은 수의 특징점 사용에서 많은 특징점을 사용
    • 특징 매칭 시 거리가 먼 특징점들만 매칭한 것에서 거리가 짧은 특징점들도 매칭

최적화 기법

  • 가중치를 고려한 최소 자승법

  • 오차의 제곱합을 줄이는 최적화 방법
  • 가중치 : 오차가 큰 매칭이 자세 추정의 결과에 주는 영향을 줄이는 역할 (wi)

  • 재투영 오차를 선형형태로 바꿔 컴퓨터를 이용해 빠르게 풀 수 있도록 함
    • 유사한 근사치로

  • 변환행렬을 6개 값으로 표현한 pt (6차원 벡터)
  • J는 오차에 대한 함수 (2차원 벡터)

  • pt가 더이상 업데이트 되지 않을 때까지 반복하거나 일정 획수 반복하여 pt를 업데이트

3. 국소지도 확장 & 전역지도 정합

  • 국소 지도 확장 : 지도에 새롭게 보이는 장면에 대해 현재 지도 정보를 추가 확장
    • 오차가 지속적으로 누적되어 카메라의 자세와 특징점 3차원 위치가 점점 부정확해짐
    • 전역 지도 관리 기법으로 해결

국소지도 확장

  • 카메라 트래킹을 하는 도중 지도 안에 현재 카메라가 위치하고 있으면 국소 지도 확장 기능은 수행할 필요 없음 카메라 위치가 지도를 벗어나려고 하면 국소 지도 확장 기능이 수행되어야함
  • 카메라 트래킹 중 삼차원 지도에 반영되지 않은 이미지 특징점이 많으면 필요하다고 판단할 수 있음

삼각 측량

  • 한장은 현재 이미지, 다른 한장은 key frame
    • 상대적 자세 구함 (카메라 트래킹)
  • 상대적 자세와 각 이미지의 특징점 검출 결과가 있으므로 강건한 특징 매칭을 수행
    • 두 이미지의 특징 매칭 결과를 먼저 구한 후 특징 매칭 결과에 대한 순환 일관성 검사를 수행하여 양쪽 이미지가 모두 가장 유사하다고 판단된 특징점 쌍에 대해서만 특징 매칭을 허용
    • 에피폴라 제약 추가
  • 지도에 없는 매칭쌍에 대해 삼각 측량을 통한 위치를 계산하여 지도에 추가

전역 지도 정합

전역 카메라 자세 및 지도 조정

  • 국소 지도 확장 지도에 경계면을 카메라가 넘을 때 조금씩 이뤄짐
    • 수치적 오차 누적현상
  • 전역 지도 정합으로 오차 누적 현상 해결
  • 전역지도 조정은 지금까지 획득한 모든 카메라 정보와 지도 정보를 다 함꼐 놓고 최적화
    • 매우 느림
    • 백그라운드 작업으로 정기적으로 수행되는 경우가 많음

번들 정합

  • 각 카메라 중심에서 특징점 3차원 위치를 잇는 모든 빛줄기들을 생각하고 이들간 오차가 최소화 되도록 카메라의 자세와 특징점의 삼차원 위치를 최적화하는 기법

  • 번들 : 각 카메라 중심과 특징점의 삼차원 위치를 잇는 빛다발의 개념

  • 한 특징점의 3차원 위치를 정할 때, 모든 카메라를 고려하지 않아 오차가 발생했던 것인데, 한 특징점이 여러 카메라에 관찰 될 수 있음을 고려해 빛다발내 모든 빛줄기, 각 카메라의 자세와 특징 점의 3차원 위치를 잇는 대응 관계를 최대한 설명할 수 있는 최적의 카메라 위치와 최적의 특징점 위치를 계산하는 것이 목표

  • 입력 : 이미지 특징 검출 결과, 이미지간 특징 매칭 결과, 키프레임 카메라 자세(오차누적된), 지도(오차누적된 카메라의 삼차원 위치)

  • 출력 : 정밀해진 키프레임 카메라 자세, 정밀해진 지도 (삼차원 위치)

  • 절대 값 : 특징점이 재투영된 좌표값이 이미지에 실제로 나타낸 위치와 얼마나 차이나는지를 측정
  • 카메라 트래킹과 유사한데, 트래킹에서는 특징점의 3차원 위치는 진실된 값으로 최적화 대상은 아니라고 봄
  • 번들 정합에서는 카메라 자세뿐아니라 특징점의 3차원 위치 Xj 모두 최적화 대상으로 봄

4. 루프 결합과 카메라 위치 재조정

루프 결합 문제

  • 이전에 방문했던 위치로 다시 돌아온 경우
  • 같은 위치라고 알려주지 않으면 번들 정합으로도 오차 누적은 여전히 일어날 수 있음
    • 키프레임들이 시간 순으로 연관성을 가져 처음 키프레임과 마지막 키프레임의 빛줄기는 연결성을 갖지 못함
  • 처음 키프레임과 다시 방문해서 생긴 키프레임은 사실 거의 같은 위치라는 것을 알려줘야 한다.
    • SLAM 시스템에

  • 모든 키프레임 이미지 및 카메라 자세 정보와 현재 이미지 및 자세 정보를 입력해서 처음 키프레임과 다시 방문해서 생긴 키프레임 사이 빛줄기들이 연결성을 갖도록 하는 것이 루프 결합의 최종 목표

  • Loop detection

    • 현재 카메라에 담긴 이미지와 거의 같은 위치에서 찍은 이전 키프레임이 있는지 알아내는 작업
    • 이미지 매칭
  • Loop correction

    • 해당 키프레임과 현재 이미지 사이에서 나타난 모든 특징점은 전역지도에서 동일한 특징점으로 간주할 수 있도록 연결하는 작업

Image matching for Loop Detection

  • Bag of Visual Words 기반
  • 각 이미지에 대한 특징을 시각 단어에대한 빈도로 표현하는 방식
  • 시각 단어 빈도가 유사하면, 두 이미지는 거의 유사한 내용을 담고 있다고 간주

Loop Correction

  • 루프 인식된 위치를 업데이트
  • 전체 카메라 자세에 대해서 최적화 수행

Pose Graph Optimization

  • 자세 그래프
    • 노드 : 키 프레임에서의 카메라 자세
    • 엣지 : 하나의 노드 자세에서 이웃 노드 자세로의 변환 정보
      • 카메라 트래킹 단계에서 추정한 변환
    • 루프 결합 등으로 인해 특정 노드에서의 카메라 자세에 차이가 생기는 경우 필요
  • 각 노드 카메라 자세와 이웃 노드의 카메라 자세로부터 계산된 카메라 자세의 차이를 줄이는 과정
    • 노드에 담겨있는 자세 정보를 최적화
    • 엣지에 있는 노드 간의 변환 정보는 업데이트 하지 않고 제약조건으로만 활용

Camera Relocalization

  • 지도가 이미 만들어진 상황에서 최초로 정보를 획득했을 시
  • 카메라 트래킹에 실패했을 시 필요
  • 이미지 인식, 특징점 매칭 방법이 있음
  • 이미지 인식 : 현재 이미지를 지도에 저장되어있는 이미지들과 매칭해서 가장 유사한 이미지를 찾는다. 가장 유사한 이미지를 찾으면 해당 이미지의 카메라 자세를 현재 자세로 설정
    • 실제로 현재 자세는 다를 수 있으나 대략적 자세에서 카메라 트래킹이 시작하게 되면 카메라의 정확한 자세를 추정할 수 있게 된다.

  • 특징점 매칭 방법 : 현재 이미지 특징점들과 지도에 모든 특징점들을 매칭했을 때 강건하게 매칭되는 경우 사용 가능한 방법
profile
OnePunchLotto

0개의 댓글