SLAM筆記(六)直接法介紹

本章整理自高翔的SLAM十四講之《直接法的原理與實現》以及PAMI上的《Direct Sparse Odometry》

1

之前總結的方法都需要先從圖片中提取特徵點並進行匹配,然後進行優化求解,這類方法稱為特徵法間接法。由於提取、匹配的過程中耗時很大,因此有人提出是否能不計算關鍵點或描述子,直接根據影象的畫素資訊來計算相機運動,這類方法稱為直接法。隨著一批不需提取特徵的方法,如LSD(選取整幅影象中有梯度的部分來採用直接法,這種方法稱為半稠密方法(simi-dense)),SVO(選取關鍵點來採用直接法,這類方法稱為稀疏方法(sparse)),直接法漸露其自身優勢。

1.1間接法與直接法的區別:

這裡寫圖片描述
除了提取和匹配耗時,在使用特徵點時,也忽略了除特徵點以外的所有資訊,因此丟棄了很多可能有用的影象資訊.
間接法通過最小化幾何誤差geometric error)(因為預先得到的點或光流向量都是幾何度量,常用的有重投影誤差(projection error)等)來進行優化從而得到相機運動;直接法通過最小化測量誤差(photometirc error,即畫素之間的誤差).直接法的好處:直接法讓單獨一個點不具備識別意義,而是將大量的點組織起來,因此它的表達是一種細粒度的幾何表示。

1.2 直接法的基本假設

同一空間三維點在各個視角下測到的灰度值不變(因此假設所在平面是漫反射,沒有遮擋,沒有光照變化);

1.3 直接法原理

這裡寫圖片描述
I1(Cpi)I_1(Cpi)與I2(CRpi t)I_2(CRp_i t)分別為pi在影象對應點的灰度值。
隨後用非線性優化求解最小測量誤差J,得到目標函式:

minJ=∑t=1N||I1(Cpi)−I2(C(Rpi t))||22

\min J = \sum_{t=1}^N||I_1(Cp_i)-I_2(C(Rp_i t))||^2_2(1)
用ξ\xi表示相機位姿[R,t;0,1]對應的李代數,則:
Rpi t=exp(ξ)Rp_i t = exp(\xi )
上式的單個誤差項:
eie_i為I1(Cpi)−I2(Cexp(ξ)piI_1(Cp_i)-I_2(Cexp(\xi)pi(2)
如何求解這個目標函式,可以用
1>梯度下降法
則Ji=∂ei∂ξJ_i = \frac {\partial e_i}{\partial \xi} (3)
2>高斯牛頓法
這裡寫圖片描述(4)
這裡的δξ∗\delta \xi^*是ξ\xi的增量
如何求(3)呢:
可以令:空間三維點座標 q=exp(ξ\^)pq=exp(\xi \^)p;(從世界座標系到相機座標系)
畫素點座標:u = Cq(C為相機內引數;表示從相機座標系到畫素座標系)
這裡寫圖片描述
三個導數分別代表(從左往右)影象對畫素的導數,畫素對空間點的導數,空間點對位姿的李代數的導數。
其結果分別為:
這裡寫圖片描述
第一個是影象對畫素的求導,相鄰灰度值求導;
第二個可以根據u=Cq中的
u=fxxz−cxu = \frac{f_x x}{ z}-c_x
v=fyyz−cyv = \frac{f_y y}{ z}-c_y
也容易求得;
第三個比較難,基本做法是對其做一個左微擾,具體操作是先左乘一個exp(δξ^)exp(\delta \hat\xi ),再減去本身,最後除以δξ\delta\xi
這裡寫圖片描述
這裡寫圖片描述

1.4分類

a.
Sparse Indirect:非直接法(即特徵點法)SLAM,基本套路是:特徵點 匹配 優化方法求解最小化重投影誤差。
典型代表:
Mono-SLAM,PTAM,ORB-SLAM,以及現在大部分SLAM
b.
Dense Indirect:
基本方法:光流場的平滑度 幾何誤差(光流求導)
典型代表
DTAM;
LSD-SLAM;
DSO
直接法評價:
It is expected to be more robust to motion blur or poorly-textured environments.a direct method its
performance can be severely degraded by unmodeled effects like rolling shutter or non-lambertian reflectance(ORBSLAM2中評價)