Visual SLAM

JeongChaeJin·2022년 4월 15일
1

자율주행

목록 보기
3/4

1. 개요

SLAM

  • 동시적 위치추적 및 지도 작성 기술
  • 작성된 지도 + Localization = SLAM
  • 시각데이터를 이용해 동시적 위치 추적 및 지도 작성을 하는 알고리즘

특징점 검출과 매칭

  • 특징점 검출 : 이미지 한 장을 빠르고 효과적으로 처리하기 위해 이미지로부터 특징이 되는 지점 거출
  • 특징점 매칭 : 서로 다른 두 영상에서 검출한 특징점 사이의 대응 관계를 구하는 과정
  • 카메라 자세 추정 : 서로 다른 시점에서 바라 본 이미지를 활용, 두 카메라의 상대적 자세 추정
    • 3차원 위치 추정이 가능
  • 카메라 트래킹 : 이미지 특징점으로 카메라 위치 추정
  • 국소적 지도 관리 : 카메라가 돌아다니며 경계에 다다를 때 지도를 넓히는 것
  • 전역 지도 관리 : 전체 지형을 둘러볼 때 위상적으로 문제가 없도록 연결고리 형태로 지도 구성

2. 특징 검출 & 특징 매칭

  • 특징 간 매칭 계산으로 SLAM 시스템을 위한 데이터 전처리 과정

  • 한 지점이 다른 지점과 비교해서 고유하게 인식될 수 있는 지점
  • 코너 포인트

해리스 코너 디텍션 알고리즘

  • 패치 안에서 고유하게 인식될 수 있는 지점인지 아닌지 여부확인

  • 확실히 다른 지점과 구분이 될 수 있는 Point를 특징점으로 결정

  • 다양한 방법이 존재
  • 각 알고리즘은 다른 장점이 있으므로 상황에 맞게 선택하여 사용
  • 특징점 추출은 적은 양의 특징적인 자료를 토대로 SLAM에서 사용하도록 함이다.

특징 매칭

  • 두 이미지의 유사한 특징점을 찾아 연관짓는 것
  • 특징 묘사 : 특징 묘사자라는 형태로 특징점 주변의 이미지 영역 설명
    • 좋은 특징묘사자는 사람이 눈으로 봤을 때 동일한 지점이라고 생각하는 경우
    • 특징점, 주변 패치 정보를 특징 묘사자로 변환
  • 특징 매칭 : 특징 묘사결과를 활용해 유사도가 높은 쌍끼리 매칭

  • 좋은 특징 묘사자는 확대/회전/어파인/투사변환/조명조건이 변화해도 동일 특징을 묘사해야함
  • 다른 지점은 완전히 다른 특징 묘사자여야함

SIFT

  • 특징점 주변에 어떤 방향으로 가장 밝기 변화가 컸는지에 대한 중심축을 잡음

  • 중심축만큼 회전한 패치를 잡고 회전된 지점마다 밝기 변화량이 가장 크게 일어나는 그래디언트 방향을 수집

  • 그래디언트를 부분별로 8개 주 방향에 대해 얼마나 많이 누적되어 있는지 대한 덩보를 수집

  • SIFT에서는 이런 누적 결과가 해당 지점 특징 묘사자로 쓰이고, 만일 두 특징점이 거의 동일한 특징 묘사자로 표현된다면 두 지점은 동일한 지점이라고 간주하게 됨

  • HOG, BRIEF 와 같은 다양한 묘사자가 있음

  • 특징 매칭이라는 것은 유사한 특징끼리 서로 짝은 지어주는 과정

  • 유사도 특징은 벡터거리 측정 방식이 주를 이름

  • 빠른 처리를 위해 병렬처리, GPU 가속이 필요

  • 잘못된 매칭의 경우 cycle consistency, epipolar constraint를 활용해 걸러낼 수 있음
  • 왼쪽 특징점을 기준으로 오른쪽 유사한 특징을 찾는 방식과 오른쪽 특징점 기준으로 왼쪽 특징과의 유사한 특징 매칭 방식이 서로 다르면 cycle consistency가 깨진 경우임
    • 매칭쌍이 있더라도 정확한 특징 매칭쌍이 아님
  • 삼각측량 사용 시 삼각형의 세 점은 항상 같은 평면에 놓여야된다는 epipolar constraint 등을 활용하면 잘못된 매칭 쌍을 추가로 걸러낼 수 있음

3. 카메라 자세 추정

  • 단일 시점 기하 : 카메라 한대가 정의하는 기하구조로 이미지 한점이 3차원 공간에서 빛줄기로 해석됨
  • 이중 시점 기하 : 카메라 두 대가 정의하는 기하구조 -> 삼각 측량을 통해 두 장의 이미지로 부터 3차원 인식이 가능

카메라

  • 카메라 Obscura로 부터 만들어짐 pin hole - 상이 맺히는 이미지 구조

  • 닮은 꼴 관계가 유지되므로 상이 앞에 맺힌다고 가정하고 보는 것이 편함
    • 계산상 편함

  • 이미지가 초점거리 f 만큼 떨어져 있다면 이미지 상의 한 점은 3차원 좌표로 표시될 수 있음
  • 이미지의 한 점이 2차원 좌표계가 아닌 3차원 좌표계로 표시 될 때, 이를 동차 좌표계라고 함
  • 동차좌표계 한 점은 카메라 핀홀로부터 이미지의 한 점을 통과하는 빛줄기로 해석될 수 있음
  • 빛줄기 상에 있는 어떤 점도 카메라 핀홀로 날아와 초점거리 f만큼 떨어진 상에 맺히면 그 지점의 동차 좌표계는 항상 f(x/z), f(y/z), f가 됨

카메라 내부 파라미터

  • 정보가 이미지 뿐일 때 이를 분석해 카메라 내부 설정을 추정하는 것
  • 주점 위치, 초점 등
  • 이미지에 대한 주점, 초점거리를 알 수 없는 경우
    • 보통 주점은 이미지 중심이지만, 카메라가 떨림 보정인 경우 카메라가 찍은 이미지를 바로 저장하지 않고 떨림 보정을 위해 크롭 과정을 한 후 이미지를 저장하게 됨 이 경우, 주점은 이미지 중심에 위치하지 않을 수 있음
    • 웹에서 받은 이미지는 그 이미지가 크롭되었으므로 역시 주점이 이미지의 중심에 위치한다고 확신할 수 없음
    • 주점 계산 필요성
  • 이미지 초점거리가 특정되지 않으면 특징점을 잇는 빛줄기를 특정할 수 없음
    • 다른 초점거리고 찍었다면, 같은 이미지도 다른 빛줄기 상에 맺혔다고 생각할 수 있음

  • 초점거리 fx, fy, 주점 위치 cx, cy

카메라 외부 파라미터

  • 카메라가 세상에 놓인 자세
  • 카메라가 지도 작성 좌표계를 기준으로 어떻게 회전하고 이동했는지에 대한 정보
  • 여러 군데서 찍은 이미지들을 이용해 3차원 환경 지도를 만들어 내야하므로 각 이미지를 찍은 카메라가 3차원에서 어떤 자세를 가지고 있었냐에 대한 정보를 추정해야함

  • 카메라 자세를 알 수 있는 행렬이 있다면 카메라의 좌표계로 표현된 정보를 세상의 중심 좌표계인 월드 좌표계로 변환할 수 있음

  • 즉, 외부 파라미터까지 안다면 카메라 내부 좌표계를 이용해 이미지 한 점을 카메라 좌표계로 표현된 빛줄기로 변환할 수 있는데, 이미지의 한 점을 월드 좌표계로 표현된 빛줄기로 해석할 수 있게 된다.
    • 회전 + 이동이 결합된 행렬

이중 시점 기하

  • 사람의 두 눈이 하는 일과 유사한 동작으로 위치를 추정
  • 삼각 측량
  • 두 카메라 사이 상대적 자세 변환 및 상대적 회전, 이동거리를 알아야함
  • Eight-point algorithm
    • 8개 특징점 쌍을 통해 두 카메라의 상대적 회전, 이동 정도를 알아내는 알고리즘
    • OpenCV findEssentialMat(), decomposeEssentialMat() 등으로 상대적 자세 변환 추정 가능
profile
OnePunchLotto

0개의 댓글