1. Abstract

  • 通过一种Unified Omnidirectional Model作为投影方程。
  • 这种方式可以使用图像的所有内容包括有强畸变的区域,而现存的视觉里程计方案只能修正或者切掉来使用部分图像。
  • 关键帧窗口中的模型参数是被联合优化的,包括相机的内外参,3D地图点,仿射亮度参数。
  • 因为大FoV,帧间的重合区域更大,并且更spatially distributed.
  • 我们的算法更牛逼。

1. Introduction

我们用了一个unified omnidirectional model在fixed-lag smoothing approach.

2. Related Work

Pose graph忽略了关键帧间fine-grained(细纹理的) 的相关,并且需要线性化和高斯估计来浓缩测量。

有一个Omnidirectional LSD-SLAM方案甚至可以用大于180°的相机FoV。

4. Camera Models

A. Pinhole Model

\[
\pi_{u}(\mathbf{x})=\left[\begin{array}{ll}{f_{x}} & {0} \\ {0} & {f_{y}}\end{array}\right]\left[\begin{array}{l}{x / z} \\ {y / z}\end{array}\right]+\left[\begin{array}{l}{c_{x}} \\ {c_{y}}\end{array}\right]
\]

针孔投影模型假设被估计的3D点是在图像平面上方的, i.e. 他们的深度是比焦距大的,这限制了FoV得小于180°。

B. Unifed Omnidirectional Model

这个模型的优势:

  • 可以准确model很多图像设备和镜头的geometric image formation。
  • 反投影函数$ \pi^{-1}$是closed-form. 一个3D点是先投影到单位球,然后投到针孔相机模型with an z-axis offset \(-\xi\)。

\[
\pi_{u}(\mathbf{x})=\left[\begin{array}{c}{f_{x} \frac{x}{z+\|\mathbf{x}\| \xi}} \\ {f_{y} \frac{y}{z+\|\mathbf{x}\| \xi}}\end{array}\right]+\left[\begin{array}{c}{c_{x}} \\ {c_{y}}\end{array}\right]
\]

这里\[\|\mathbf{x}\|\]是x的norm.
\[
\begin{array}{l}{\pi_{u}^{-1}(\mathbf{u}, d)} \\ {\qquad=\frac{1}{d}\left(\frac{\xi+\sqrt{1+\left(1-\xi^{2}\right)\left(\tilde{u}^{2}+\tilde{v}^{2}\right)}}{\tilde{u}^{2}+\tilde{v}^{2}+1}\left[\begin{array}{l}{\tilde{u}} \\ {\tilde{v}} \\ {1}\end{array}\right]-\left[\begin{array}{l}{0} \\ {0} \\ {\xi}\end{array}\right]\right)}\end{array}
\]

5. System Overview

A. Model Formulation

标识photometric error的能量函数:
\[
E_{\mathbf{p} j} :=\sum_{\mathbf{p} \in N_{p}} w_{p}\left\|\left(I_{j}\left[\mathbf{p}^{\prime}\right]-b_{j}\right)-\frac{t_{j} e^{a_{j}}}{t_{i} e^{a_{i}}}\left(I_{i}[\mathbf{p}]-b_{i}\right)\right\|_{\gamma}
\]
第i帧上的一个点p投影到第j帧,用一个patch \(N_p\)上的灰度误差平方和SSD (Sum of Squared Differences) ,\(w_p\)是基于梯度的权重。\(\|\cdot\|_{\gamma}\)$是一个huber norm.
\[
\begin{array}{l}{\mathbf{p}^{\prime}=\pi\left(\mathbf{R} \pi^{-1}\left(\mathbf{p}, d_{p}\right)+\mathbf{t}\right)} \\ {\text { with }} \\ {\qquad\left[\begin{array}{cc}{\mathbf{R}} & {\mathbf{t}} \\ {0} & {1}\end{array}\right] :=\mathbf{T}_{\mathbf{j}} \mathbf{T}_{\mathbf{i}}^{-1}}\end{array}
\]
滑窗里的光度误差项是:
\[
E_{\text {photo}} :=\sum_{i \in F} \sum_{\mathbf{p} \in P_{i}} \sum_{j \in o b s(\mathbf{p})} E_{\mathbf{p} j}
\]

B. Distance Estimation along with Epipolar Curve

当一帧被成功track了,我们用stereo matching来refine候选点的逆深度。

DSO在极线上搜索匹配。但是当在鱼眼图上用unified omnidirectional model来做的时候,就变成一条曲线(更准确的说是锥线

极曲线:我们在单位球上定义两个点\(\mathbf{p}_{0}, \mathbf{p}_{\infty} \in \mathbb{R}^{3}\)围绕在投影中心\(C_{ref}\)上,来对应最大最小的逆深度\[d_{max}, d_{min}\].
\[
\begin{aligned} \mathbf{p}_{0} & :=\pi_{s}\left(\mathbf{R} \pi_{u}^{-1}\left(\mathbf{p}, d_{\min }\right)+\mathbf{t}\right) \\ \mathbf{p}_{\infty} & :=\pi_{s}\left(\mathbf{R} \pi_{u}^{-1}\left(\mathbf{p}, d_{\max }\right)+\mathbf{t}\right) \end{aligned}
\]
然后线性插值with \(\alpha \in [0, 1]\)
\[
\mathbf{p}_{L}(\alpha) :=\alpha \mathbf{p}_{0}+(1-\alpha) \mathbf{p}_{\infty}
\]
我们通过把这个线投影到目标图像来获得极曲线
\[
\mathbf{u}_{L}(\alpha) :=\pi_{u}\left(\mathbf{p}_{L}(\alpha)\right)
\]

C. Frame Management

  • Initial Frame Tracking:

5层金字塔,场景和亮度变化是持续估计。

  • Keyframe Creation

当关键帧被创建的时候,候选点会基于space distribution and image gradient来被选择。我们用初始化的逆深度和大variance来给这些点。后续有帧被tracked的话,来refine点的深度。

  • Keyframe Marginalization

当超过7帧关键帧的时候,旧的点和帧就会被边缘化掉。heuristic distance

  • Windowed Optimization

6. Evaluation

A. TUM SLAM for Omnidirectional Cameras Dataset

提供了室内鱼眼数据和真值. 是global shutter的,然后是185°FoV. 1280 ×1024分辨率。

我们把图crop然后scale到480×480的。

1) Accuracy Comparison

DSO在精度和鲁棒性上比SVO和LSD-SLAM厉害。

Unified Omnidirectional camera model更提高了DSO和LSD-SLAM的表现。

2) Benefit of Large Field of View

3) Timing measurement

视角广的话,关键帧插入就少了,mapping快了。

B) Oxford Robotcar Dataset

这数据有100组重复的路线,并且有着不同的光照,交通场景。

7. Conclusions

反正我们牛逼。

最新文章

  1. java中的throw与throws的区别
  2. Linux字符设备驱动解析
  3. 学习使用monkey 测试
  4. 212. Word Search II
  5. 未能解析此远程名称:'nuget.org'
  6. c# datagridview导出到excel【转载】
  7. Thinkphp Ajax传地址
  8. HDU 1863 Kruskal求最小生成树
  9. 【转】Linux方向职业分析
  10. new function
  11. Python中模块之re的功能介绍
  12. runAllManagedModulesForAllRequests
  13. spring boot2+jpa+thymeleaf增删改查例子
  14. 用IntelliJ IDEA编译,编译之后提示 无效的标记: -release
  15. facebook ads api
  16. elasticsearch的索引操作和文档操作总结
  17. WebService 获取当前URL
  18. vue基于d2-admin的RBAC权限管理解决方案
  19. 3dContactPointAnnotationTool开发日志(二五)
  20. [DeeplearningAI笔记]序列模型3.7-3.8注意力模型

热门文章

  1. 041--Jquery
  2. FTP服务相关实现
  3. Node学习图文教程之express重写留言本案例
  4. 分析spring aop的源码实现
  5. SQL中进行转列的几种方式
  6. UvaLive6442(思维、结论)
  7. MyEclipse常用快捷键及快捷键大全
  8. python programming
  9. [转]Intellij Idea自动添加注释的方法
  10. LOJ#121. 「离线可过」动态图连通性(线段树分治)