论文阅读: Direct Monocular Odometry Using Points and Lines
Direct Monocular Odometry Using Points and Lines
Abstract
大多數VO都用點: 特征匹配 / 基于像素intensity的直接法關聯.
我們做了一種直接法算法結合了點和edge.
它在紋理少的場景下工作的更好,而且對于光線的變化和快速的運動的情況下通過擴大收斂域(convergence basin - 盆)的方式提升魯棒性.
我們對于關鍵幀保持了depth map.
Tracking: 相機位姿是通過最小化廣度誤差和幾何誤差(匹配的edge)來恢復相機位姿.
Mapping: edge被用來提速和提高stereo matching的準確度.
Introduction
在單目VO中, edge受到的關注很少.
edge的檢測對于自然光照的影響更不敏感.
如圖1所示,使用點的直接法由于小圖像地圖可能根本不能魯邦的工作. 但是我們依舊能夠檢測到很多線.
在我們的框架中,我們保持了關鍵幀的semi-depth map.
我們對每幀也檢測了和匹配edge.
- 在tracking部分,我們同時優化光度誤差和幾何誤差.
- 在mapping部分,edge也可以用來指導和加速stereo search, 同時也提升深度圖的質量(by edge regularizing).
我們的contribution:
Related Work
A. Feature-based VO
...
B. Direct VO
...
C. Edge-based VO
除了點以外, edge也是人造場景中另一個很重要的特征.
在[14], [15] 中基于線的BA已經在SLAM / SfM中使用了, 但是很費計算力, 對于有效的優化也需要至少3幀.
在VO中用線但是沒有BA也有人用了.
Kuse(一個人) 最小化結合誤差到最近的edge pixel, 但是有可能會導致錯誤的匹配.
也有一些工作只優化兩個edge端點的幾何誤差但是很有可能會產生更大的誤差因為單目相機的不準確的深度估計.
Problem Description
A. System Overview
我們的算法是一個frame-to-keyframe的單目VO.
我們為關鍵幀的高梯度的像素保持一個深度圖.
對于每一個新幀,我們會做三步:
- 檢測line segments, 然后和關鍵幀的edge匹配
- camera pose tracking, 優化光度誤差和幾何誤差.
- 通過variable baseline stereo, 更新深度圖.
B. Notations
...
Tracking
A. Overview
Ref幀的深度圖是假設不變的.
當前圖像用光度誤差\(r(\xi)\)和線的重投影誤差\(g(\xi)\)來關聯.
\[ E(\xi)=\sum_{i \in \Omega} r_{i}(\xi)^{T} \Sigma_{r_{i}}^{-1} r_{i}(\xi)+\sum_{j \in M} g_{j}(\xi)^{T} \Sigma_{g_{j}}^{-1} g_{j}(\xi) \]
光度誤差\(r_i\)的定義如下:
\[ r_{i}=I_{r e f}\left(x_{i}\right)-I\left(\tau\left(x_{i}, D_{r e f}\left(x_{i}\right), \xi\right)\right) \]
\(g_j\)是像素\(x_i\)對于它對應的線\(l_j\)的重投影誤差:
\[ g_{j}=l_{j}^{T} \widehat{\tau}\left(x_{i}, D_{r e f}\left(x_{i}\right), \xi\right) \]
這里\[\widehat{\tau}(. )\]標識取homogeneous coordinate.
我們用Gauss-Newton優化能量函數.
B. Tracking Uncertainty Analysis
不同誤差項的權重和誤差Variance\(\Sigma_r和 \Sigma_g\)成比例.
我們分析下\(\Sigma_g\), 因為光度誤差的不確定性在[6]里面分析過了.
一般情況下, 一個函數\(f(x)\)的輸出的不確定性是從輸入的不確定性傳播的:
\[ \Sigma_{f} \approx J_{f} \Sigma_{x} J_{f}^{T} \]
line equation是用兩個線端點叉乘計算的: \(l_j = p_1 \times p_2.\)
我們可以假設\(p_1\)和\(p_2\)的不確定性$ \Sigma_p\(是一個bi-dimensional Gaussian (\)\sigma = 1$).
最后的重投影誤差是兩個不確定性源的結合:
\[ \Sigma_{g_{j}}=l_{j}^{T} \Sigma_{x_{i}^{\prime}} l_{j}+x_{i}^{\prime T} \Sigma_{l_{j}} x_{i}^{\prime} \]
Mapping
A. Overview
深度圖\(D_{ref}\)會用逆深度濾波框架的stereo triangulation來更新, 再用line regularization來提升精度.
深度優化的能量函數如下:
\[ E(D)=\sum_{i} r_{i}(d)^{T} \Sigma_{r_{i}}^{-1} r_{i}(d)+\sum_{j} G_{j}(d)^{T} \Sigma_{G_{j}}^{-1} G_{j}(d) \]
這里\(r_i\)表示stereo匹配的光度誤差. 計算整個圖像patch的SSD用來提高魯棒性.
對于一根線\(l_j\), 我們希望它的像素也可以在反投影之后在3D空間形成一條線.所以\(G_j\)是一個edge regularization cost, 代表edge像素的3D點和3D線的距離. 這種regularization技術也在其他稠密建圖的算法中使用[12], [21].
如果只使用了第一個項\(r_i\),那么所有的像素都是相互獨立的, 只是在極線上搜索來尋找匹配的像素.
Regularization項\(G_j\)使得一條edge上的深度是相互關聯的, 然后可以經典的被Duality principles的iterative alternating optimziation來解決.
B. Stereo match with Lines
對于沒有在edge上的像素,或者是在edge上但是沒有匹配edge的像素, 我們用窮盡法來尋找立體匹配像素(by 最小化SSD誤差). 深度的搜索被限制在\(d + 2\sigma_d\).
對于有匹配edge的像素, 點的重投影應該在匹配的edge上, 也應該在它的極線上. 所以我們可以直接計算他們的交點.
我們也可以如上圖一樣直接三角化線,然后計算所有像素的深度. 3D線可以被表示為兩個反投影平面的交線.
\[ L=\left[\begin{array}{c}{\pi_{1}^{T}} \\ {\pi_{2}^{T}}\end{array}\right]=\left[\begin{array}{cc}{l_{1}^{T} K} & {0} \\ {l_{2}^{T} K R} & {l_{2}^{T} K \mathbf{t}}\end{array}\right] \]
這里\(l_1\)和\(l_2\)是在I幀和I'幀的line equation. \(K\)是相機內參矩陣.
對于退化的場景, 也就是說極限和匹配的線幾乎平行, 我們不能通過平面的intersection來獲取深度了. 這樣就只能通過窮舉法來在極線上搜索來獲得了.
C. Line matching uncertainty analysis
基于立體視覺在極線上的搜索來計算intensity的不確定性在[6]中已經分析過了.
這里我們分析一下基于stereo matching的edge的誤差.
對于\(I_{ref}\)的每一個edge像素, 把它在圖像\(I\)上的極線叫做\(g\), 它對應的匹配線叫\(l\), 這樣這個像素的匹配點是\(g\)和\(l\)的相交.
這兩根線都有positioning error \(\epsilon_l\)和\(\epsilon_g\), 最后會導致圖下所示的disparity error \(\epsilon_\lambda\).
當\(g\)和\(l\)接近平行的時候, \(\epsilon_\lambda\)會很大:
\[ \epsilon_{\lambda}=\epsilon_{l} / \sin (\theta)+\epsilon_{g} \cot (\theta) \]
這里\(\theta\)標識\(g\)和\(l\)的夾角.
根據誤差傳播的原理, 我們可以計算disparity error的variance:
\[ \sigma_{\lambda}^{2}=\sigma_{l}^{2} / \sin ^{2}(\theta)+\sigma_{g}^{2} \cot ^{2}(\theta) \]
利用逆深度\(d\)和disparity\(\lambda\)成比例的近似, 我們可以計算觀測\(d\)的觀測方差. 它在標準的EKF濾波中可以用來更新像素的深度方差.
D. 3D line regularization
在深度圖EKF更新之后, 2D edge上的像素可能不能對應于3D空間中的一條線, 所以我們需要在3D空間中擬合一條線來更新像素深度.
- 3D weighed line fitting最近在RGB-D line based odometry中被解決了.
這里我們提出一種快速而analytical solution來解決weighted 3D line ftting problem.
由于3D點是從同一條2Dedge反投影的,他們應該在同一個投影平面上\(G\).
我們可以創建另一個坐標系\(F\), 這個坐標系的\(x, y\)軸在這個平面\(G\)上,
我們首先用RANSAC在選擇一組內點2D點, the metric for RANSAC is Mahalanobis distance, 是一個考慮不確定性的帶權重的像素到線的歐式距離.
\[ d_{\mathrm{mah}}=\min _{q^{\prime} \in l^{\prime}}\left(p^{\prime}-q^{\prime}\right)^{T} \Sigma_{p^{\prime}}^{-1}\left(p^{\prime}-q^{\prime}\right) \]
這里\(q'\in l'\)表明在幀\(F\)中在線\(l'\)上的.
在RANSAC以后, 我們可以找到largetest consensus set的點集\(p_i' , i = 1, ...n\). 這樣的話,這就變成了一個2D weighted Line fitting problem.
\[ L^{*}=\min _{L} \sum_{i} \delta\left(p_{i}^{\prime}\right)^{T} \Sigma_{p_{i}^{\prime}}^{-1} \delta\left(p_{i}^{\prime}\right) \]
這里\(\delta(p_i')\)是點\(p_i'\)到線\(L\)沿著\(y\)軸的距離. 這是一個點到線距離的近似, 但是應該會導致一個差不多的結果.
把所有的點\(p'_i\)堆在一起,以\([X, Y]\)(在去平均以后)的形式,然后權重矩陣\(W\)就可以近似原圖像像素的協方差了.
然后, 這個線模型是\(Y= X\beta + \epsilon\), 這里 \(\beta\)是線系數,\(\epsilon\)是正態分布的噪聲.
那么MLE的公式就是:
\[ \widehat{\beta}=\arg \min _{\beta} \sum_{i} \epsilon_{i}^{2}=\left(\mathbf{X}^{T} W \mathbf{X}\right)^{-1} \mathbf{X}^{T} W \mathbf{Y} \]
Experiments and Results
A. Implementation
邊緣檢測和匹配: 我們用了[23]的LSD. 為了提高tracking的準確性, 我們使用了coarse-to-fine的方法 - 用尺度系數為2的金字塔. 由于線檢測算法的不確定性,
一個完整的線有時候會斷成幾截. 所以我們顯式的融合距離和角度都很接近的線.
我們會移除很短的線, 因為可能會導致特別大的擬合誤差*
我們會計算LBD描述子[24]然后嘗試匹配線.
最后, 線的追蹤會尋找edge上所有的像素. 我們發現下面這個方法讓系統更加魯邦和精準, 如果我們把線變寬了一個像素, 更多的像素就會被involved作為線的約束
關鍵幀VO: 我們的方案里面滅有用點和線的BA.
B. Experiments
Conclusions
沒啥新的.
Appendix
[6] Jakob Engel, Jurgen Sturm, and Daniel Cremers. Semi-dense visual odometry for a monocular camera. In Proceedings of the IEEE international conference on computer vision, pages 1449–1456, 2013.
[12] Richard A Newcombe, Steven J Lovegrove, and Andrew J Davison.Dtam: Dense tracking and mapping in real-time. In 2011 international conference on computer vision, pages 2320–2327. IEEE, 2011.
[21] Pedro Pinies, Lina Maria Paz, and Paul Newman. Dense mono reconstruction: Living with the pain of the plain plane. In 2015 IEEE International Conference on Robotics and Automation (ICRA), pages 5226–5231. IEEE, 2015.
[23] von Gioi R Grompone, Jeremie Jakubowicz, Jean-Michel Morel, and Gregory Randall. Lsd: a fast line segment detector with a false detection control. IEEE transactions on pattern analysis and machine intelligence, 32(4):722–732, 2010.
轉載于:https://www.cnblogs.com/tweed/p/11239133.html
總結
以上是生活随笔為你收集整理的论文阅读: Direct Monocular Odometry Using Points and Lines的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 近百个项目的源代码,覆盖
- 下一篇: 线程间到底共享了哪些进程资源?