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

反正我们牛逼。

Omnidirectional DSO: Direct Sparse Odometry with Fisheye Cameras 论文摘要的更多相关文章

  1. Direct Visual-Inertial Odometry with Stereo Cameras

    这对于直接方法是特别有益的:众所周知直接图像对准是非凸的,并且只有在足够准确的初始估计可用时才能预期收敛.虽然在实践中像粗到精跟踪这样的技术会增加收敛半径,但是紧密的惯性积分可以更有效地解决这个问题, ...

  2. 论文阅读: Direct Monocular Odometry Using Points and Lines

    Direct Monocular Odometry Using Points and Lines Abstract 大多数VO都用点: 特征匹配 / 基于像素intensity的直接法关联. 我们做了 ...

  3. DSO 运行 —— dso_ros + Android 手机摄像头

    转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12425855.html 本文要点: dso 配置安装 dso 离线 ...

  4. GitHub 上优秀的开源SLAM repo (更新中)

    GitHub 上优秀的开源SLAM repo (更新中) 欢迎 watch/star/fork 我们的 GitHub 仓库: Awesome-SLAM, 或者follow 项目的主页:Awesome- ...

  5. 三维视觉、SLAM方向全球顶尖实验室汇总

    本文作者 任旭倩,公众号:计算机视觉life,编辑成员 欧洲 英国伦敦大学帝国理工学院 Dyson 机器人实验室 http://www.imperial.ac.uk/dyson-robotics-la ...

  6. 基于视觉的 SLAM/Visual Odometry (VO) 开源资料、博客和论文列表

    基于视觉的 SLAM/Visual Odometry (VO) 开源资料.博客和论文列表 以下为机器翻译,具体参考原文: https://github.com/tzutalin/awesome-vis ...

  7. DSO之光度标定

    光度标定(Photometric Camera Calibration)是DSO(Direct Sparse Odometry)论文中比较特别的一部分.常规的vSLAM不太考虑光度标定的问题.比如基于 ...

  8. SLAM领域牛人、牛实验室、牛研究成果梳理

    点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文阅读时间约5分钟 对于小白来说,初入一个领域时最应该了解的当然是这个领域的研究现状啦.只有知道这个领域大家现在正在 ...

  9. 泡泡机器人SLAM 2019

    LDSO:具有回环检测的直接稀疏里程计:LDSO:Direct Sparse Odometry with Loop Closure Abstract—In this paper we present ...

随机推荐

  1. ORACLE PL/SQL 实例精解之第二章 通用编程语言基础

    通用编程语言基础 2.1PL/SQL编程基础 1. 字符类型:支持四中类型字符:字母,数字,符号和空格,组合一个或多个字符就会创建一个词汇单元 2. 词汇单元 a.标识符必须以字符开头 b.保留字是p ...

  2. python多线程批量下载远程图片

    python多线程使用场景:多线程采集, 以及性能测试等 . 数据库驱动类-简单封装下 mysqlDriver.py #!/usr/bin/python3 #-*- coding: utf-8 -*- ...

  3. 解决eNSP路由器AR启动失败错误代码40,交换机正常的问题

    问题描述 eNSP昨晚正常使用,今天上午出现问题:AR路由器启动失败,错误代码40.但交换机可正常启动. eNSP版本:eNSP V100R002C00B510 Setup.exe 操作系统:Wind ...

  4. JAVA多线程(三) 线程池和锁的深度化

    github演示代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-servic ...

  5. 2015 ACM-ICPC国际大学生程序设计竞赛北京赛区网络赛 1002 Mission Impossible 6

    题目链接: #1228 : Mission Impossible 6 解题思路: 认真读题,细心模拟,注意细节,就没有什么咯!写这个题解就是想记录一下rope的用法,以后忘记方便复习. rope(块状 ...

  6. 递推DP URAL 1244 Gentlemen

    题目传送门 /* 题意:给出少了若干卡片后的总和,和原来所有卡片,问少了哪几张 DP:转化为少了的总和是否能有若干张卡片相加得到,dp[j+a[i]] += dp[j]; 记录一次路径,当第一次更新的 ...

  7. RHEL 6.5---SVN服务实现过程

    主机名 IP地址  master 192.168.30.130 slave 192.168.30.131 安装 [root@master ~]# yum install -y subversion h ...

  8. 苹果手机通过Safari浏览器访问web方式安装In-House应用

    需求背景 公司内部员工使用的iOS客户端应用希望对内开放,不需要发布于AppStore直接能够让内部用户获取,对于Android应用来说这个问题很好解决,直接下发安装包然后就能安装了:但是对于苹果生态 ...

  9. NIO客户端主要创建过程

    NIO客户端主要创建过程:   步骤一:打开SocketChannel,绑定客户端本地地址(可选,默认系统会随机分配一个可用的本地地址),示例代码如下:    SocketChannel client ...

  10. Java并发——结合CountDownLatch源码、Semaphore源码及ReentrantLock源码来看AQS原理

    前言: 如果说J.U.C包下的核心是什么?那我想答案只有一个就是AQS.那么AQS是什么呢?接下来让我们一起揭开AQS的神秘面纱 AQS是什么? AQS是AbstractQueuedSynchroni ...