Photometric bundle adjustment (PBA).前端
目前的PBA無法處理reobservation.後端
咱們提出DSM(direct sparse mapping).session
邊緣化策略經過移除舊的相機和點來減小計算量, 可是還保持系統對於不可觀的自由度(絕對的位姿和pose)的一致性.app
一般光度收斂半徑在1-2個像素. 因此一個標準的PBA不能補償drift. 因此, 咱們提出了multi-scale PBA來成功處理收斂性的難題.框架
咱們須要保證PBA對於spurious(假的) observations的魯棒性. 他們主要由稀疏的關鍵幀形成, 會致使阻擋和場景的reflections這樣會破壞光度一致性的假設. 咱們用基於t-distribution的influence function融合進PBA來處理.dom
VINS-mono的前段和OKVIS相似, 可是用了額外的BRIEF來作迴環檢測.ide
LSD-SLAM用了FAB-MAP.函數
LDSO在DSO上接了一個ORB-DBoW.oop
他們都有如下缺點:學習
一直相對的, Full SLAM像ORB-SLAM和DSM複用了地圖.
DVO提出了probabilistic formulation給直接法的關聯. [16]提出了用t-distribution魯棒性. [17]提出在光度偏差李t-distribution好使, 可是幾何偏差很差使.
有front-end和back-end.
前端跟蹤幀和點, 也提供了粗略的初始化.
後端決定用哪些幀構成局部滑窗, 共同優化全部的關鍵幀和地圖點.
每一個地圖點有一個主幀, in which it was spawn, 由逆深度表示.
投影: \(\mathbf{u}=\pi(\mathbf{p})=\mathbf{K}\left(p_{x} / p_{z}, p_{y} / p_{z}, 1\right)^{T}\)
反投影: \(\mathbf{p}=\pi^{-1}(\mathbf{u}, \rho)=\rho^{-1} \mathbf{K}^{-1}\left(u_{x}, u_{y}, 1\right)^{T}\)
A. Photometric Model
\(E_{p}=\sum_{\mathbf{u}_{k} \in \mathcal{N}_{p}} w_{k}\left(\left(I_{i}\left[\mathbf{u}_{k}\right]-b_{i}\right)-\frac{e^{a_{i}}}{e^{a_{j}}}\left(I_{j}\left[\mathbf{u}_{k}^{\prime}\right]-b_{j}\right)\right)\)
\(w_{g_{k}}=\frac{c^{2}}{c^{2}+\|\nabla I\|_{2}^{2}}\)
B. Photometric Bundle Adjustment
\(E=\sum_{I_{i} \in \mathcal{K}} \sum_{\mathbf{p} \in \mathcal{P}_{i}} \sum_{j \in \operatorname{obs}(\mathbf{p})} \sum_{\mathbf{u}_{k} \in \mathcal{N}_{p}} w_{k} r_{k}^{2}(\boldsymbol{\xi})\)
LMCW複用地圖點, 其中的初始解不在收斂半徑內, PBA也無法優化.
因此提出了coarse-to-fine的優化框架over all active keyframes. 在每一層, 咱們迭代直道收斂, 結果做爲下一層的初值.
咱們用LM. 每一次迭代的增量爲: \(\delta \boldsymbol{\xi}^{(t)}=-\mathbf{H}^{-1} \mathbf{b}\)
這裏\(\mathbf{H}=\mathbf{J}^{T} \mathbf{W} \mathbf{J}+\lambda \operatorname{diag}\left(\mathbf{J}^{T} \mathbf{W} \mathbf{J}\right), \mathbf{b}=\mathbf{J}^{T} \mathbf{W} \mathbf{r}\), \(\mathbf{W} \in \mathbb{R}^{m \times m}\)是對角陣, 由權重\(\omega_k\)組成.
是用來選擇active關鍵幀和地圖點的策略.
LMCW包括兩部分: 1. temporal. 2. covisible
\(N_t\)很重要, 由於至關於探索, 初始新的點. 當一個新的關鍵幀被插入, 咱們把它插入到temporal part, 而後移除另外一個. 因此咱們維護了固定大小的temporal KFs.
第二個部分是\(N_c\)共視的關鍵幀. 咱們但願選擇和temporal part共視的幀.
LMCW選擇了widely separated關鍵幀可是沒有考慮任何光度一致性. 因此有可能有些點不能產生廣度一致的圖像. 他們多是由於遮擋或者是場景反光致使的.
爲了使得PBA對於缺乏光度一致的狀況的魯邦, 咱們提出了一種外點管理策略 based on photometric error distribution.
最大後驗機率MLP等價於最小化負對數機率(negative log-likelihood). \(\boldsymbol{\xi}^{*}=\underset{\boldsymbol{\xi}}{\operatorname{argmin}}-\sum_{k}^{n} \log p\left(r_{k} | \boldsymbol{\xi}\right)\)
上面的式子等價於讓導數爲0. 也就是re-weighted最小二乘. \(w\left(r_{k}\right)=-\frac{\partial \log p\left(r_{k}\right)}{\partial r_{k}} \frac{1}{r_{k}}\)
因此這個解直接被光度偏差的分佈\(p(r_k)\)(看[15])影響. 而後咱們考慮不一樣的分佈.
Gaussian Distribution: 若是偏差s被認爲是在0附近的正態分佈\(\mathcal{N}(0, \sigma^2_n)\), 那麼偏差分佈的模型就是: \(p\left(r_{k}\right) \propto \exp \left(r_{k}^{2} / \sigma_{n}^{2}\right)\). 這個模型致使constant distribution of weights, 也就是標準的最小二乘. 可是它等價的對待全部點, 這樣外點也不能被neutralized. \(w_{n}\left(r_{k}\right)=\frac{1}{\sigma_{n}^{2}}\)
Student's t-distribution: [15] 分析了RGB-D里程計的稠密光度偏差. 它展現說t-distribution解釋了稠密光度偏差比正態分佈更好, 權重函數是: \(w_{t}\left(r_{k}\right)=\frac{\nu+1}{\nu+\left(\frac{r_{k}}{\sigma_{t}}\right)^{2}}, \quad\) when \(\mu=0\)
咱們學習了稀疏光度偏差, 而後結論是t-distribution也合理的解釋了稀疏模型.
與正態分佈相比, t-distribution快速的下降權重由於errors move to the tail, 外點被分配了一個更小的權重.
除此之外, [15]固定了\(\nu=5\), 咱們學習了當\(\nu\)和尺度\(\sigma_t\)切合時的表現.
爲了切合t-distribution, we minimize the negative log-likelihood of the probability density function with respect to ν and σt using the gradient free iterative Nelder-Mead method [20].
Besides, we filter out the gross outliers before fitting the t-distribution. We approximate the scale value \(\hat{\sigma}\) using the Median Absolute Deviation (MAD) as \(\hat{\sigma}=1.4826\) MAD and reject errors that \(r_{k}>3 \hat{\sigma}\)
M-estimators: 當偏差的分佈難以獲知的時候, 或者它被認爲是正態分佈的. 只用M-estimator是一個流行的方案. 就是huber estimator. 由於它沒有徹底移除高偏差的觀測, 只是下降了他們的影響力, 這個對於再觀測處理很關鍵. \(w_{h}\left(r_{k}\right)=\left\{\begin{array}{ll}{\frac{1}{\sigma_{n}^{2}}} & {\text { if }\left|r_{k}\right|<\lambda} \\ {\frac{\lambda}{\sigma_{n}^{2}\left|r_{k}\right|}} & {\text { otherwise }}\end{array}\right.\)
這裏\(\lambda\)通常是固定的, 或者動態的改動讓\(\lambda = 1.345\sigma_n\) 對應 \(\mathcal{N}(0, \sigma_n^2)\). 這樣的話, huber給外點線性的影響.
咱們研究了在每一個關鍵幀的偏差分佈, 結論說他們之間是有區別的. 這些變化可能來自於運動模糊, 遮擋或者是噪聲. 因此, 咱們對於每個關鍵幀來擬合偏差分佈. 這樣使得PBA對於不一樣的場景能夠有調節, 好比一個特定的偏差可能在常規的狀況是外點, 可是在motion blur的狀況下是內點.
每一個觀測有8個像素. 爲了考慮一個像素觀測是否是內點, 它須要在目標關鍵幀的偏差分佈的95%內. 對於比較挑戰的關鍵幀, 這個閾值能夠高一些, 更permissive(許可的). 當局部的PBA完成的時候, 咱們會在mask裏計算內點的個數. 當一個觀測的外電像素大於30%的時候, 這個觀測會被標記爲外點, 並從地圖點的觀測list中移除. 另外, 在優化的時候, 若是外點像素超過60%, 這個觀測會直接被捨棄, i.e. \(\omega(r) = 0\).
Frame-tracking: 每一幀用local map來跟蹤. 初始估計由速度模型給出. 咱們用coarse-to-fine的優化策略, 跟在PBA裏同樣, 來估計初始估計比較粗糙的狀況. 對於大偏差的物理和session 5同樣. 另外, 咱們用[21]裏的inverse compositional approach來處理每次迭代重複計算雅克比的過程.
New Keyframe Decision: 當移動至沒有探索過的區域的時候, 會插入新的關鍵幀.
一個綜合的分數會被用於肯定是否插入關鍵幀: \(w_{u} s_{u}+w_{t} s_{t}+w_{a} s_{a}>1\)
New Map Point Tracking: 每個關鍵幀有一列候選點. 咱們用新跟蹤的幀初始化候選點的逆深度. 在極線上搜索最小光度偏差的匹配. 只有distinctive points with low uncertainty會被激活.
記住, 這個延遲的策略會要求幾個匹配來得到一個好的初始化, 當極線比較小的時候, 同時也產生比較小的視差. 爲了保證有足夠的初始化好的點來激活, 咱們保持keyframe的候選點直道這個關鍵幀掉出滑窗.
1. Coarse-to-fine PBA: 咱們衡量了金字塔層數\(N_p\).
沒有金字塔的時候, DSM-SM(滑窗版本) 比DSM效果好. 這時候DSM無法從reobservation獲利. 可是DSM在有更多金字塔層級的時候, 能夠複用地圖點從而得到更高的準確度.
儘管coarse-to-fine的策略對DSM提高明顯, 對於DSM-SW卻沒有啥提高. 這個也是可預見的, 由於DSM須要更大的收斂半徑, 可是DSM-SW缺不須要.
注意DSM在80%的runs下得到低於0.1m的RMS ATE的精度, 可是DSM-SW只有40%.
2. Robust Influence Function: 咱們研究了model和權重的選擇.
3. Number of covisible keyframes in the LMCW:
即便用persistent map, 咱們也知道不可能處理全部的再觀測. 在大場景下, 累計偏差使得重複檢測地圖點再觀測成爲不可能.