Visual SLAM

Visual SLAM, 특징검출과 특징매칭, 카메라 자세 추정


1. Visual SLAM

1.1 SLAM기술이란?

동시적 위치추적 및 지도 작성기술(Simultaneous localization and mapping)
image

  • Mapping : 미지의 영역에 대해 환경지도를 작성.
  • Localization : 작성된 지도상에서 자신의 위치가 어딘지 추정. 자기 위치가 어딘지 알아야 새롭게 탐사한 영역에 대한 정보를 현재 지도에 정확히 붙일 수 있음.

1.2. Visual SLAM 이란?

시각 데이터를 이용해 동시적 위치추적 및 지도 작성을 하는 알고리즘.

1.3. Visual SLAM 응용분야

  • 자율주행 자동차
    인지 기술로 작동
    EX ) 구글의 웨이모
    지붕에 달린 라이다가 시각 센서로 작동하여 지도 정보가 없는 곳을 지나면 알고리즘으로 지도를 작성(Mapping)하고 이미 지도를 확보한 곳에서는 현재 자동차가 어디에 있는지를 파악함(Localization).

  • 증강 현실
    모바일 폰이나 HMD에 달린 카메라가 주변 환경에 대한 시각 데이터를 수집하고 Visual SLAM으로 환경지도와 현재 위치를 얻어낸다. 그리고 가상 물체를 지도상에 배치해 실제로 있는 것과 같이 표현.

  • 로봇청소기
    로봇청소기를 처음 사서 집을 한 번 훑어보게 하면 Visual SLAM이 지도를 작성함. 정확한 지도를 위해 위치 추정도 동시에 진행.

1.4. Challenge

  • Kidnapping
    전원이 꺼진 로봇청소기를 사람이 직접 들어 다른 방에 옮겨 놓고 전원을 켜는 경우.

  • 위치 재조정
    Kidnapping된 로봇이 전원이 꺼지기 전 마지막으로 알고 있던 위치는 잘못된 정보라는 것을 인지하고 지도에서 자신이 자리잡고 있는 새 위치를 빠르게 인식하는 것.

  • 업데이트
    자신이 기존에 알고 있던 지도를 현재 상황에 맞에 업데이트하는 것.

자율주행의 경우 시동이 꺼지기 전 자동차의 위치와 시동이 다시 켜진 위치가 다르거나 도로의 지형이 바뀌거나 지도에는 없는 큰 장애물이 나타나는 경우, 자율주행 자동차는 기존의 지도 정보를 업데이트해 가며 안전히 운행해야 함.

1.5. Visual SLAM System Component

  • Visual Sensor
    (일반적으로 카메라)이미지 데이터를 수집.

  • 특징점 검출과 매칭
    특징점 검출 : VisualSLAM System이 영상을 손쉽게 다루기 위해 필요한 영상처리 과정. 한 장을 빠르고 효과적으로 처리하기 위해 이미지로부터 특징이 되는 지점을 검출하는 과정 ** 특징점 매칭** : 서로 다른 두 영상에서 검출한 특징점 사이의 대응관계를 구하는 과정.

특징점 검출과 매칭으로 처리된 영상들이 VisualSLAM System에서 다음과 같이 활용됨.

  • 카메라 자세추정 : 같은 장면을 서로 다른 시점에서 바라본 이미지로 두 카메라의 상대적 위치를 추정 추후, 이미지 두 장으로부터 삼각 측량을 이용해 3차원 위치를 추정할 수 있음 (3차원 지도 작성)
  • 카메라 트래킹 : 카메라가 돌아다니면서 이미지를 얻을 때 이미지의 특징점으로 지도 내 카메라의 위치를 추정
  • 국소적 지도관리 : 카메라가 돌아다니면서 경계에 다다를 때 지도를 넓히는 것.
  • 전역 지도관리 : 전체 지형을 둘러볼 때 위상적으로 문제가 없도록 연결고리 형태로 지도 구성.

1.2. 특징 검출과 매칭


1.2.1. 특징 검출과 매칭이란?

카메라가 찍은 이미지에 대한 특징을 검출하고 서로 다른 이미지에서 검출된 특징간의 매칭을 계산하는 과정으로 SLAM을 돌리기 위한 가장 기본적인 데이터 전처리 과정임.

1.2.2. 특징 검출

3차원 장면을 카메라로 찍게되면 너비x높이의 개수만큼 픽셀로 구성된 이미지를 얻게되는데, 이는 SLAM이 처리하기에 너무 방대함. 따라서, SLAM시스템에서 이미지 전체에 대한 데이터를 넘겨주기 보다는 특징 검출을 통해 이미지를 특징점 위주로 줄인 후 해당 지점만 SLAM System에 넘겨줌. 그럼 SLAM System이 가볍고 빠르게(효율적으로) 돌아갈 수 있음.

1.2.2.A. 특징점

그렇다면 어떤 점이 특징점이 될 수 있을까?
주변의 다른 지점과 비교했을 때 고유하게 인식될 수 있는 지점을 특징점이라고 함. 보통 특징점은, 육안으로 봤을 때의 모서리 지점(corner point)에 해당함.

1.2.2.B. 특징 검출 알고리즘

Harris corner detection 알고리즘
해리스가 제안한 자가유사도(Self similarity) 기반의 알고리즘.

  1. 다음과 같이 주어진 이미지에 빨간색, 노란색, 녹색으로 표시된 3지점을 살펴봄.
    image

  2. 먼저 빨간색 지점(작은 빨간 박스). 빨간색 지점 중심으로 이미지 조각인 패치를 생성(커다란 빨간박스).
    빨간색 패치 내의 한 픽셀을 새로운 지점(주변 지점)으로 삼고 그 지점에 대한 새로운 패치를 생성(커다란 회색박스).
    이때 빨간색 패치와 회색 패치를 비교해 보면 둘이 같아서 구분이 안됨.
    빨간색 패치 내의 다른 지점들도 이런 방식으로 보면 비슷해서 구분 안됨. 따라서 빨간색 지점은 특징점이 될 수 없음.
    image

  3. 노란색 지점을 중심으로 패치를 잡고 위와 같은 방식으로 진행함. 만약 edge방향으로 주변 지점을 잡으면 회색패치와 구별이 안됨.
    노란색도 특징점이 될 수 없음.
    image

  4. 녹색 지점을 중심으로 패치를 잡고 다시 반복. 어떤 지점을 잡아도 주변 지점과 확실하게 구별됨. 특징점
    image

FAST corner detector, ORB corner detector등 다양한 알고리즘이 있음.

1.2.3. 특징매칭

두 이미지에서 따로 뽑은 특징점이 실제로 같은 지점이라고 생각된다면 서로 짝을 지어줌. 두 이미지 사이의 관계 계산에 사용.
이미지에 찍힌 내용이 다른 이미지에도 들어 있어 두 영상이 유사한지 여부를 측정하거나, 카메라 자세 추정에 활용. 특징묘사와 특징매칭 단계로 구성된다.

1.2.3.A. 특징묘사

특징점을 비교 가능한 자료 형태(특징 묘사자)로 바꿔줌. 동일한 지점은 같은 특징묘사자로, 다른 지점은 확연히 다른 특징 묘사자로 구별할 수 있게 하는 것이 쫗은 특징 묘사자임. 어떤 지점이 확대되거나 축소되거나 회전되거나 어파인 또는 투사변환 된다든지 조명 조건이 살짝 달라진 환경에서도 동일 지점은 거의 비슷한 특징 묘사자를 만들어내야 함. 특징점 묘사 결과를 활용하여 유사도가 높은 쌍끼리 매칭

특징 묘사자 종류

  • SIFT(Scale- Invariant Feature Transform)
    David Lowe가 제안한 대표적인 특징 묘사자. 이미지의 크기와 회전에 불변하는 특징을 추출.
    1. 특징점 주변에 밝기 변화 크기에 대한 중심축 잡기. 밝기 변화가 큰 방향으로 축을 잡음.
      image
  1. 축과 같은 방향으로 패치를 잡고 패치 내 각 지점마다 밝기 변화량이 가장 크게 일어나는 Gradient방향 수집.
    image

  2. 수집한 Gradient를 부분별로 8개의 주 방향에 대해 얼마나 많이 누적되어 있는지에 대한 정보를 수집. 이 누적 결과가 특징 묘사자로 쓰임.
    image

  • HoG : 각 지역별 Gradient를 고려

  • BRIEF : 임의의 패턴을 이용해서 고른 두 주변 지점에 대해, 상대적으로 어둡고 밝은 패턴을 기록

1.2.3.B. 특징매칭

특징 묘사자의 유사도를 정의하고 서로 다른 이미지에서 등장한 유사한 특징끼리 서로 짝을 지어주는 과정, 유사도 측정은 특징 묘사자 벡터 거리 측정 방식이 주를 이룸. 매칭으로 고려할 쌍이 너무 많으므로 병렬처리나 GPU를 이용한 가속을 고려.

잘못된 매칭을 거르는 방법

  • Cycle consistency: A이미지에서 뽑힌 특징점을 기준으로 B에서 유사한 특징점을 찾는 방식과, B에서 뽑힌 특징점을 기준으로 A에서의 유사한 특징점을 찾는 방식이 다른 경우 Cycle consistency가 깨진 것.

  • Epipolar consistenccy: 삼각측량을 사용할 때 삼각형의 세 점을 항상 같은 평면에 놓여야 한다는 점을 이용해 잘못된 매칭 쌍을 걸러냄.

1.3. 카메라 자세 추정


1.3.1. 카메라 기하 구조 - 단일 시점 기하

카메라 한 대가 정의하는 기하구조, 한 점이 3차원 공간에서 빛줄기로 해석됨. 카메라는 렌즈, 바디, 필름 또는 CCD센서로 구성됨. Camera obscura로부터 만들어짐 따라서 가장 단순한 카메라의 구조는 빛이 통과하는 핀 홀과 상이 맺히는 이미지만으로 구성된다고 가정. 이 때 다음과 같이 f:거리이미지 = d:실제이미지 image

그런데 상이 뒤집혀 맺히므로 좌표계의 부호를 엄밀히 고려해야 하는 계산상의 불편함이 있으므로 다음과 같이 이미지가 카메라의 앞에 위치한다고 가정할 수 있음.
image

이미지만으로 초점거리를 바로 알아내기는 쉽지 않음. 이를 추정하는 걸 카메라 내부 파라미터 추정이라 함.
image

1.3.1.A. 카메라 내부 파라미터

주점(Principle Point)의 위치, 초점거리 등을 말함.
주어진 정보가 이미지 뿐일 때 이를 분석해 카메라 내부 설정을 추정하는 것을 카메라 내부 파라미터 추정이라한다. SLAM의 지도 작성과 위치추정에 필요하다.

  • 이미지의 주점, 초점거리를 알 수 없는 경우
    일반적으로 주점은 이미지의 중심인데 이미지가 크롭해서 저장되면 주점이 이미지의 중심이 아닐수 있음. 인터넷에서 다운받은 이미지는 크롭됐는지 여부를 알 수 없으므로 주점이 이미지의 중심인지 확정할 수 없음.
    초점거리를 알 수 없는 경우도 많음. 초점거리가 특징되지 않으면 특징점의 위치를 알아도 핀홀과 특징점을 잇는 빛줄기를 파악할 수 없음. 즉, 같은 이미지를 얻어도 서로 다른 초점거리로 찍혔다면 3차원 공간에서 서로 다른 빛줄기로 상이 맺했다고 생각할 수 있음.

  • Calibration 카메라 내부 파라미터 추정 기능 지원
    • openCV : calibrateCamera() 함수
    • MATLAB : calibration tool box
  • 카메라 내부 행렬
    카메라 내부 파라미터를 수학적으로 표현한 행렬.
    image
    f_x, f_y : 초점거리
    C_x, C_y : 주점의 위치

이렇게 알아낸 내부 행렬을 이용해 이미지 상의 한 점카메라 좌표계 기준의 3차원 빛줄기로 변환.

1.3.1.B. 카메라 외부 파라미터

SLAM이 만들어 낸 3차원 환경지도는, 카메라가 지도작성 좌표계를 기준으로 어떻게 회전하고 이동하였는지에 대한 정보(카메라가 세상에 놓인 자세). 카메라의 회전이동 정보를 합친 행렬 rt형태를 띰.

카메라가 세상에 놓인 자세를 추정했다고 가정하면 카메라의 외부 행렬을 이용해 카메라 좌표계로 표현된 정보를 월드 좌표계로 변환할 수 있음. image

카메라 내부 파라미터카메라 외부 파라미터
이미지의 한점->카메라 좌표계로 표현된 빛줄기카메라 좌표계로 표현된 정보 -> 월드 좌표계

즉, 이미지의 한 점이 월드 좌표계로 변화

  • Calibration 카메라 외부 파라미터 추정 기능 지원
    • openCV : calibrateCamera() 함수
    • MATLAB : calibration tool box
  • 카메라 외부 행렬 카메라 외부 파라미터를 회전과 이동이 결합된 형태로 표현
    image 월드 좌표계가 빨간색, 녹색, 파란색 축으로 표현된 것은 현재 카메라의 회전과 위치를 정확히 추정한 결과임.

1.3.2. 카메라 기하 구조 - 이중 시점 기하

카메라 두 대가 정의하는 기하구조, 사람의 두 눈과 같이 삼각측량을 통해 두 장의 이미지로부터 3차원을 인식. 단일 시점 기하와 거의 같지만, 핀 홀 중심으로 카메라의 3차원 좌표계를 고려함.
image

상이 카메라 앞에 맺힌다고 가정. 물체 위의 한 지점을 카메라 좌표계(x,y,z)로 표현. 해당 지점이 초점거리 f에 위치한 상에 맺힌다면 상에 맺힌 지점의 좌표는 (f * x/z, f * y/z, f). 즉, 이미지가 초점거리 f만큼 떨어져 있다면 이미지상의 한 점은 3차원 좌표계로 표시됨. 이처럼 이미지의 한 점이 2차원 좌표계가 아닌 3차원 좌표계로 표시되는 경우를 동차좌표계라고 함. 빛줄기 상의 어떤 점이든 카메라 핀홀로 날아와 초점거리 f만큼 떨어진 상에 맺히면 그 지점의 동차좌표계는 항상 (f * x/z, f * y/z, f).
image

주어진 두 카메라에 대해 상대적 회전과 이동거리를 안다면 그림과 같이 매칭된 특징점을 이용해 삼각측량을 할 수 있음. 삼각측량을 통해 해당 지점의 3차원 위치를 알 수 있음. 두 카메라의 상대적 자세 추정은 두 이미지에서 매칭된 특징점 쌍을 이용해 알 수 있음. 카메라의 내부 파라미터는 이미 구해져 있어야 함.
image

1.3.2.A. 삼각측량

두 카메라의 상대적 자세를 통해 해당 지점의 3차원 위치를 추정하는 것. 두 카메라의 상대적 위치는 8-point algoritm(8개 이상의 특징점 쌍들이 주어지면 두 카메라의 상대적 회전과 이동정도를 알아 낼 수 있음)이나 Oepn CVfindEssentialMat() 함수decomposeEssentialMat() 함수를 사용해 구할 수 있음.
각 카메라마다의 내부,외부 파라미터를 알고 있으므로 각 이미지의 특징점들로부터 월드 좌표계에서 각각 빛줄기를 그릴 수 있고 이 두 빛줄기가 만나는 한 지점이 해당 특징점의 3차원 좌표값임.

image

Open CV의 triangulatePoints()함수로 구현.

1.4. 특징점 탐색 실습


2. Visual SLAM 기술 기초


2.1. 초기 카메라 추정


2.1.1. 초기 지도(initial Map)작성

초기 지도부터 서서히 확장해 나가면서 전체 지도를 구성하게 됨. 기 지도에서 결정된 단위 거리가 전체 지도의 단위 거리를 결정하고 초기 지도 작성시 발생한 에러가 누적되어 전체 지도에 퍼질 수도 있기 때문에 강건하고 정밀하게 작성하는 것이 중요.

2.1.1.A. 강건한 초기 지도를 위해 필요한 것들

강건한 특징점 매칭 + 강건한 카메라 자세 추정 + 강건한 삼각측량 기법

2.1.1.B. 매칭된 특징점에 대한 삼각측량

3차원 장면에 있는 한 점 P_i는 이를 서로 다른 각도에서 찍은 두 카메라에 담기게 됨. 만일 두 카메라의 상대적 자세와 두 카메라 이미지들 간의 특징점 매칭 결과를 알고 있다하면, 두 카메라의 중심을 잇는 직선과 각 카메라에서 점 P_i로 향하는 각도를 알고 있는 셈. 따라서 삼각형의 원리로 P_i의 3차원 위치를 측정할 수 있게 됨.
image

2.1.2 양안 카메라(Stereo Camera)

삼각 측량의 기본 원리를 활용한 장비. 사람의 두 눈처럼 카메라를 특정 거리만큼 떨어뜨려 놓고 설치하는 방식으로 카메라의 상대적 자세를 미리 알 수 있도록 장치를 구성하는 것.

2.1.2.A. 양안 카메라를 이용한 삼각측량

삼각 측량을 위해 필요한 정보 중 카메라의 상대적 자세는 이미 정확히 알고 있으므로 두 이미지의 특징 매칭으로부터 비교적 정확한 삼각 측량 결과를 얻을 수 있음.

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

2.1.3.A. 충분한 너비 기준선 확보가 중요

image
기준선이 좁으면 특징 매칭에서 발생한 조그마한 오차도 매우 큰 범위로 증폭됨. 충분히 멀면 특징 매칭에서 생긴 조그마한 오차는 무시할 만큼의 범위로 좁아짐. 야간 카메라시에 기준선을 넓게 하면 좋음. 근데 넘 극단적으로 넓으면 두 이미지의 공통 부분이 줄어들어 특징 매칭이 잘 안돼서 오히려 강건한 삼각측량 X. 해결하려는 문제에 따라 정닥한 기준선 선택.

2.1.3.B. 강건한 특징 매칭 획득

이미지의 특징 검출 결과에 대한 유사성에만 기반. 잘못된 결과가 나올 수도 있음. 잘못된 결과 거르는 방식

  • Cycle consistency(순환일관성)
    특징 매칭 된 두 이미지의 특징점에 대해 서로 가장 최선의 선택으로 뽑은 결과였는지를 묻는 것. 이미지1 -> 이미지2 로 선택한 특징점과 이미지2 -> 이미지1로 선택한 특징점이 서로 같은지 묻는 것. 같으면, 서로를 원해서 선택한 것이므로 강건한 매칭이 됨.

  • Epipolar
    특징 매칭된 3차원 지점과 두 카메라의 3차원 위치는 삼각형을 이뤄야 하므로 한 평면에 놓여야 한다는 제약조건.

  • Homography 서로 다른 각도에서 동일한 평면을 찍었다는 3차원 장면의 사전정보가 있다면 homography변환을 만족하지 않는 특징 매칭결과를 제거. image

2.1.3.C. 특징 추적

양안 카메라는 두 카메라를 기계적으로 구상한 것이므로 두 카메라의 상대적 자세를 알 필요가 없기 때문에 특징 추적 필요 없음. 한 대의 카메라로 양안 카메라를 흉내 내어 Monocular Visual SLAM(단안 카메라 기반 슬램) 구현하는데, 이때 각 위치에 따른 카메라의 자세를 추정할 필요가 있다. 이때 사용하는 방법임. (특징 매칭으로 자세 추정을 할 수도 있지만 노이즈 발생 가능성 있음.)

Monocular Visual SLAM
카메라가 시간이 지남에 따라 움직인다고 가정하고 서로 다른 시간에서 획득한 두 이미지를 마치 양안 카메라가 찍은 두 이미지처럼 처리하는 방식. 시공간적으로 너무 가까운 이미지는 계산하지 않는 것이 좋음. 이처럼 적당히 멀리 떨어져있는 이미지를 Keyframe이라고 함. 또 양안카메라와 달리 서로 다른 위치에 대한 상대적 자세 추정이 필요.

특징점 추적 방법

  • 초기 특징점 추적을 위한 가정
  • 카메라가 수평방향으로 이동 : 제자리에서 회전하는 움직임은 이미지 처리로만으로 알아낼 수 없음
  • 카메라가 빠르게 움직이지 않음 : 너무 빠르면 알고리즘이 안돌아감
  • 이미지의 특징점 위치가 급격히 바뀌지 않음 : 1초에 많은 프레임을 찍으므로 현재 프레임이나 이전 프레임의 차이가 크지 않음

    1. 처음 프레임에서 특징점 위치를 찾아두었다고 했을 때, 이전 프레임의 특징점 위치를 현재 프레임에 그대로 가져다 놓음.
      (그러면 특징점 매칭을 위해 이미지 전체를 찾을 필요 없이 이전 프레임의 특징점을 기반으로 예측한 위치 인근에서 탐색하면 됨)
    1. 특징점의 이전 위치 근처의 특징점들 중 가장 유사한 특징점 탐색
    1. 가장 유사한 특징점의 위치를 현재 프레임의 특징점 위치로 재설정
    1. 연속된 프레임 간에 위의 방식 반복하면 다른 키프레임의 특징점 추적 가능.

2.2. 카메라 트래킹


2.2.1. 카메라 트래킹

이미 만들어진 지도 내에서 카메라가 움직이고 있을 떄 지금 카메라가 어디에 있는지 위치를 추정하는 알고리즘. 자주 실행되어 지속적으로 카메라의 위치를 추적해야 함.

2.2.2. 카메라 트래킹에 필요한 정보(Input)

  • 현재까지 획득한 지도 정보

  • 현재 시각 카메라가 찍은 이미지 정보
    어떤 위치에서 어떤 각도로 찍었기에 현재 이미지를 획득했는지.

  • 이전 시각 카메라의 자세 정보
    카메라의 움직임이 물리적으로 급격하게 일어날 수 없으므로 현재 위치가 이전 위치와 크게 멀지 않을 것이므로 현재 위치 추정의 기반

  • output : 현재 시각의 카메라 자세 출력

2.2.3. 카메라 트래킹 과정

  • 이전에 미리 얻은 카메라의 자세정보를 이용해 현재 카메라의 대략적인 자세 정보 추정
  • 추정된 곳에 카메라가 놓여있다고 가정하고 환경지도의 여러 특징점을 해당 빛으로 투영해 봄.(정확하진 않을 것)
  • 투영된 위치에서 패치를 잡아 패치 내에서 특징점 위치를 찾아냄.
  • 모든 특징점 위치가 정확히 맞아떨어지도록 카메라의 자세를 개선.

2.2.3.A. 현재 카메라의 대략적인 자세 추정

  • 현재 시각 t, 이전 시각 t-1, t-2일 때 rotation과 translation에 대한 행렬을 시각 t-1과 t-2에 대해 알고 있음.
  • 시각 t-2에서 t-1으로 바뀔 때 카메라가 얼만큼 회전하고 이동했는지 측정.(모두 예전에 일어난 일이므로 우리가 알고 있는 정보임)
  • 시각 t-1에서 t로 바뀔 때 카메라의 자세 수정은 위의 단계와 완전히 같다고 가정해서 현재 카메라 자세 어림짐작.
    image

2.2.3.B. 환경 지도 특징점 재투영

  • 카메라 내부 파라미터와 외부 파라미터인 어림짐작으로 구한 카메라의 자세를 이용.
  • 환경지도의 특징점을 어림해 구한 카메라의 위치로 재투영
  • 정확한 위치에 맺히지는 않지만 그 근처에 대응되는 특징점이 있을 수 있음. image

2.2.3.C. 투영된 위치에서 패치 잡기

image

  • 환경 지도의 특징점이 재투영된 위치에서 적당한 크기의 패치를 잡음
  • 그 패치 내에서 자신과 대응하는 특징점을 계산 (현재 이미지에 대한 특징점은 특징 검출 알고리즘으로 계산)
  • 환경지도에 특징점과 현재 이미지 특징점간의 대응관계를 구하고 둘 간의 거리(어림한 것이므로 발생한 오차)를구함.
  • 이 거리(오차), 즉 재투영 오차를 최소화하는 카메라 자세를 찾아내는 비선형최적화 문제로 풀 수 있음. image
  • 그렇게 찾아낸 카메라 자세로 카메라 위치 업데이트

2.2.4. 카메라 트래킹 최적화 기법

2.2.4.A. 기본 아이디어

재투영 오차를 최소화하는 카메라를 찾는 것으로, 비선형최적화문제임.

image
전체 오차를 대략적으로 빠르게 줄인 다음 정확한 오차 계산을 통해 최적화하는 두 단계를 거침.
모든 특징점에 대해 재투영 오차를 생각하지 않고 적은 수의 특징점만 골라 최적화하거나, 재투영 오차가 큰 특징점들만 우선 고려하여 최적화…

2.2.4.B. 수학적 관점

가중치를 고려한 최소 자승법을 사용함.

  • 최소 자승법 : 모든 오차의 제곱의 합을 최소화하는 카메라 자세를 찾아내므로 재투영 오차가 큰 특징점이 결과에 영향을 많이 미침. 단, 재투영 오차가 큰 특징점은 노이즈일 수 있기 때문에 이를 해결하기 위해 가중치를 고려.

  • 가중치 : 오차가 큰 매칭이 자세 추정의 결과에 미치는 영향을 줄여줌. image

재투영 오차를 찾기 위해 선형 시스템의 형태로 표현. 컴퓨터로 빠르게 계산 가능하고 선형 문제 해결을 위한 기존 라이브러리의 도움도 받을수 있기 때문. image

3. Visual SLAM 기술 심화


3.1. 국소지도 확장과 전역지도 정합


3.1.1. 국소지도 확장

카메라가 지금까지 만들어진 지도를 벗어나면 새로운 장면을 보게 됨. 이때, 지도에 새롭게 보이는 장면에 대해 현재 지도 정보를 추가 확장 하는 것.

3.1.1.A. 국소지도 확장 과정

  • 국소지도 확장을 수행해야 하는지 아닌지 여부 판단
    • 알고있는 지도일 때는 할 필요 없음, 지도에 반영되지 않은 이미지 특징점이 많은 경우
    • 지도를 벗어나면 수행
  • 지도에 반영되어 있지 않은 이미지의 특징점 반영
    • 삼각측량 기법활용
    • 상대적 자세 변환을 아는 두 장의 영상이 필요 : 한 장은 현재 이미지, 한 장은 현재 위치 근처의 키프레임.
    • 두 이미지에서의 카메라 자세를 알고 있고 특징점 검출 결과가 있으므로 강건한 특징 매칭 수행
    • 강건한 특징 매칭 : Cycle consistency, Epipolar이용
    • 이 특징매칭 결과로 지도에 반영되지 않은 특징점을 추가해 줌.
  • 특징 매칭과 삼각 측량만 수행하고 별도의 최적화 기법이 없으므로 매 프레임마다 빠르게 수행됨.

3.1.2. 전역지도 정합

지도의 경계면을 카메라가 넘으면 조금씩 이루어지므로 국소지도 확장만 계속 하면 오차가 누적되어 카메라의 자세와 특징점의 3차원 위치가 점점 부정확해짐. 이러한 오차 누적을 해결하는 것. 지금까지 획득한 모든 카메라 정보와 지도 정보를 다 함께 놓고 최적화 image
모든 데이터를 한꺼번에 다루다보니 수행시간이 매우 느릴 수 있음. 따라서 매 프레임마다 수행될 수는 없고 백그라운드 작업 등으로 정기적인 수행.

3.1.2.A. 번들정합

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

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

  • 국소 지도 확장과의 차이점 |국소지도확장| 한 특징점의 3차원 위치를 정할 때 모든 카메라를 전부 고려하지 않고 해당 특징점을, 먼저 관찰한 두 카메라만 고려하여 3차원 위치를 결정하게 됨. 여러 카메라를 동시에 고려하지 않았기 때문에 오차 발생.| |:——|:——| |번들정합|한 특징점이 여러 카메라에서 관찰될 수 있음을 고려. 한 특징점의 빛다발 내 모든 빛줄기, 즉, 각 카메라의 자세와 특징점의 3차원 위치를 잇는 대응 관계를 최대한 설명할 수 있는 최적의 카메라 위치와 최적의 특징점 위치 계산|

  • 번들정합알고리즘

|* 이미지의 특징검출 결과

  • 이미지 간의 특징 매칭 결과
  • (오차가 누적된) 키프레임 카메라 자세

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

3.2.1. 루프결합

SLAM 시스템이 이전에 방문했던 위치로 돌아왔을 때 전역 최적화 문제에서 발생하는 오차를 수정하기 위해 필요한 알고리즘요소. 성을 둘러보면서 이미지를 획득해 슬램의 지도를 작성한다고 가정. 그럼 처음과 마지막은 같은 장면이여야 함. 그런데 처음과 마지막 장면이 같은 장면을 보고 있다는 것을 SLAM시스템이 알려주지 않으면 번들 정합을 해도 오차 누적을 피할 수 없음. 키프레임들이 시간 순으로 연관성을 가지기 때문에 처음과 마지막의 키프레임은 연결성을 가지지 못함. 즉, 실제로 동일한 3차원 위치였지만 전역지도에서는 2개의 다른 지점으로 간주됨. 같은 지점임을 SLAM에게 전달해 루프결합 문제를 해결. image

  • 입력
    • 모든 키프레임 이미지 및 카메라 자세 정보
    • 현재 이미지 및 카메라 자세 정보
  • 출력
    • (루프 결합된) 카메라 자세 정보

3.2.1.A. 루프인식

현재 카메라에 담긴 이미지와 거의 같은 위치에서 찍은 이전 키프레임이 있는지를 알아내는 작업. 이미지 매칭 문제로 생각할 수 있음.

  • Bag of Visual Words방식 각 이미지에 대한 특징을 시각 단어에 대한 빈도로 표현. 두 이미지에 대한 시각 단어 빈도가 유사하다면 두 이미지는 거의 유사한 내용을 담고 있나고 생각하는 것.
[FAST corner detector]
[ORB corner detector]
HMD

Head Mounted Display(=Face Mounted Display), 안경처럼 착용하고 사용하는 모니터.
image

Affine transform

영상을 구성하는 픽셀의 배치 구조를 변경함으로써 영상 모양을 변경하는 geometric transform의 일종으로 영상의 평행이동, 확대 및 축소, 회전 등의 조합으로 만들 수 있는 기하학적 변환을 통칭한다. 픽셀의 위치를 일정한 규칙에 따라 옮김으로써 영상 변화를 이루는 것.

투사 변환

3차원 도형을 2차원 평면 위에 표시하기 위한 투영 변환 중 하나.

[병렬처리]
GPU가속

CPU가 맡았던 연산을 GPU에도 사용해 연산 속도를 향상 시키는 기술이다. 흔히 ‘하드웨어 가속’이라고 하면 GPU를 가리키는 경우가 많다.

CCD센서

전하결합소자, 빛을 전하로 변환시켜 화상(畵像)을 얻어내는 센서

[Camera obscura]

조그만 구멍으로 빛을 통과시켜 맞은편 벽에 상을 맺게하는 암실