基于单目的半稠密视觉里程计

来源:互联网 发布:逃离伊甸园知乎 编辑:程序博客网 时间:2024/04/29 01:37

本文为翻译文章:《semi-dense visual odmetry for a monocular camera》 初步学习,对原理还在学习中,持续更新

abstract

我们提供一种基础的实时的基于单目的视觉里程计方法。它可以在一个CPU下运行,它兼顾了稠密跟踪的精度和简易的两个特点,并且不依赖与特征点。核心思路是持续的为当前帧建立一个反深度图,此反深度图也用于跟踪相机的运动。更特殊的是,我们建立每个不可忽略的边缘像素的深度。

1、转向稠密单目视觉里程计

计算机视觉的最大跳帧就是跟踪一个手持的相机并且实时的回复环境的3D结构。最近的几年,稠密的方法已经成为应对此挑站的比较流行的方法。他们重建并且通过使用一个基于表面的地图来跟踪一整幅图,此方法替代了原有的对特征点进行操作,这与基于特征点的方法有本质上的不同。稠密的方法对很多应用不适合的原因是可能无法在标准CPU上实时,或者需要传感器提供更为直接的深度信息。

在此文章中,我提供一个半稠密的方法,兼容了稠密方法的精度和鲁棒性以及特征点方法的有效性。它计算高精度额半稠密深度图,提供周围3D环境的丰富信息 

1.1相关的工作

1.1.1基于特征的单目SLAM

在所有的特征点方法中,跟踪和重建包含两个独立的步骤:第一、分离的特征提取和匹配。第二、根据第一的结果计算相机和特征位置,忽视图像本身。预处理中的提取很大程度上减少了算法复杂度,并且可以达到实时。此方法有两个不利条件:1)只有类似点、块、或线等特征的重建 2)特征必须要匹配,尺度、旋转等变化会额外增加消耗,去除异常值使用类似RANSAC的模式。

1.1.2稠密的单目SLAM

为克服这些限制和更好的获取图像有效时间,稠密SLAM方法最近很火。本质区别是这些方法直接工作在图像上而不是提取特征点,用于重建和跟踪。用稠密的表面去建模,这种理论省去对特征点的需求,并可使用所有图像的信息。增加跟踪准确性和鲁棒性。要想实时还是要用高效率的CPU。

RGB-D相机可以直接测每个像素的深度,或者使用立体相机,可以降低复杂性。

1.1.3稠密多视角立体

先前有效的工作都是存在在多视角稠密重建。。。。。跟我们相似的方法是Matthies的早期研究,他提出了在图像序列中深度图的融合和传递,但是只是SFM,并没有与后续稠密跟踪合并。

1.2贡献

本文方式是:半稠密,单目里程计,不需要特征点。核心理论如下

1)一个概率的深度图

2)基于全图的跟踪

3)减少包含信息的图像区域

4)立体测量的合并

本论文实现无特征点,实时,单目。

1.3方法概述

我们算法的驱动力是实时应用,足够的视频信息。替代了原有的将图片稀疏到特征点,我们的方式是持续的建立一个半稠密的反深度图,例如,稠密的覆盖全部场景。跟踪全图并同时降低计算量。这个估计的深度图一帧帧的传递下去,并且多基线立体对比下进行更新。我们用先验知识去寻找一个合适的帧来更新,并显示寻找范围。

本文的组织如下:

第二章描述半稠密地图重建方法,包括精度以及概率数据融合,传递和规范化步骤。

第三章描述了新的一帧是如何跟踪的

第四章是对完整算法概括

第五章评估

第六章结论

2半稠密重建估计

核心是为当前帧估计一个半稠密的反深度图,之后再利用此图去估计个相机的位置,这个深度图会一帧接一帧的传递,在通过新的立体测量将该图进行优化。这让我们精确的估计深度图,包含靠近和远离的图像区域。我们用高斯概率模型去表示每个像素点的反转模型。

这一章节包含3个部分:

2.1节描述立体方法从先前的帧提取新的深度,解释他们是如何融合到当前深度地图的

2.2节描述此深度图是如何传递到下一帧

2.3节描述细节--我们如何在每一次迭代中规范化我们获取的深度图,异常值如何处理,在整章中,小写d代表一个像素深度的倒数。

2.1立体深度图的更新

我们都知道,对于立体视觉在准确和精度之间有一个权衡的过程。多基线的立体方法解决此问题,通过计算跟多帧的各自成本函数。我们使用一种概率方法有效的利用了此优点,在大基线帧之前先使用小基线。

这深度全图像更新包含以下步骤:1)选取视差点足够精确的像素,对此,我们使用3个直觉的并且非常有效的引用在2.1.3,

2)对于每个选取的像素,我们单独的选取一个合适的相关帧,并且进行一维视差检测。

传递的先验知识是用于降低视差寻找的范围,从而降低运算消耗,获取的转换深度融合进深度图。

2.1.1相关帧的选择

理想状态下,相关帧选择用于最大化立体精度,同时控制视差范围在观察角度非常小的情况下。立体视觉的精度依赖于许多因素,因为每个点的选取时独立的,因此我引用以下假设。我们用最老的几帧,在这些帧里视差范围并不是很大,观察视角也不会超过一定阈值。如果视差寻找并不成功,即没有好的匹配被发现,这个像素的年龄就会增长。如果在接下来几帧这些像素仍然能看到,则使用新帧进行跟踪。

2.1.2.立体匹配方法

我们沿着极线将像素灰度值进行穷尽寻找,然后进行亚像素定位。如果先前的深度假设是可以获得的,间隔被限制在高斯分布,d代表平均值,代表标准差。在我们的算法中,我们使用SSD差,此差是在极线上5个等间距的点。这种方法在图像高频区域很明显的增加鲁棒性,它没有改变一维特性,并且5个点中的4个点的值可以复用。

2.1.3非确定估计

在本节中,我们使用的不确定性传播获得一个表达式,此表达式是在反转深度d的错误方差

通常情况,通过表示最佳的作为噪音输入的一个方程。我们用I0,I1,他们相关方向,内参用表示。


这错误方差有下列公式表示


是d的加戈比公式,是错误的协方差。看论文2,可获得更多的关于方程求导方面的方差扩散细节,为了简化,我们只计算一个像素的灰度差。为了分析,我们将计算分为三个部分:1)计算极线2)最佳的视差3)根据计算反转的深度。前两部引入了独立的错误,影响第一步的几何误差由引入。图像I0,I1引入的光照误差。第三步将这些误差乘以一个系数。

几何视差错误:

上是由引入。我们想去模型化、传递和估计。我们发现增加计算的复杂度并不能增加精度。所以我们用一个直觉的近似估计。使用直线方式。实际情况下,我们保证搜索距离短。直觉上,如果极线平行于图像梯度,点错误导致小的视差错误。如果过大,则会出现图像中问题。图像约束视差在一个确定的等参曲线上。我们近似此曲线是局部直线。


光照误差:

在图像梯度较小的情况下,错误反映出小的图像强度误差会对视差估计有一个大的影响。我们使匹配点最小化。


2.1.4 深度融合

一个像素的深度获取后,我们将它融合到深度图中:

以前没有值,我们直接赋值;否则,和以前的值进行融合。

2.2深度图传递

一旦相机的位置被固定,我们持续的传递被估计的反转深度图。基于某一点深度信息,3D信息被重建并映射到新的图像中。

冲突处理:

在大多数的情况我们允许每个像素最多只有一个深度,如果在一个新的帧中,有两个深度值传入同一个像素,我们会区分成两类:

1、他们的统计相似,小于两个西格玛,他们将被当成两个独立的观测值,根据(13)去融合;

2、否则离的远的将被阻塞,被删除

2.3深度图归一化

对于新的一帧,在所有观测值被合并后,我们进行一个归一化的迭代,对深度图进行滤波,他们的反差作为权重,为了保护边缘,深度相差较大不进行融合。

异常值去除:

处理异常值,我们持续跟踪深度的有效性,或者因为阻塞或移动变成非有效点。对于成功立体观测点,这个可能性是降低的。有两个阈值可以调整这个概率。

稠密跟踪:

基于前一帧的深度图,我们使用深度图序列估计当前帧的相机姿态。在RGB-D相机上,这些方法应用的非常成功。他们直接获得深度信息。这是基于最小光照误差:

为了鲁棒性,以及针对移动物体,我们应用了一个加权框架,

最终的能量会被最小化,最小化可以被解释为对st的最大似然估计,

4系统概况

跟踪和深度估计被分为两个线程,











0 0
原创粉丝点击