Abstract

(2013 SCI会议)
MonoFusion允许用户实时构建密集的三维重建环境,只使用一个现成的网络摄像头作为输入传感器。这款相机可能已经可以在平板电脑、手机或独立设备上使用。不需要额外的输入硬件。这就消除了在自然室外照明中不能稳定工作的高功率有源传感器的需求。利用相机的输入流,我们首先利用稀疏跟踪方法估计了6自由度相机的姿态。这些姿态然后用于输入帧和关键帧之间的高效密集立体匹配(之前提取)。得到的稠密深度图被直接融合到一个基于体素的隐式模型中(使用一种计算成本不高的方法),每帧提取表面。该系统能够从跟踪故障中恢复,并从三维重建中滤除几何不一致的噪声。我们的方法实现简单,效率高,使得这样的系统更容易访问。本文详细介绍了构成该系统的算法组件和该方法的GPU实现。定性结果表明,高质量的重建,甚至在视觉上可与主动深度传感器为基础的系统,如KinectFusion。

1 INTRODUCTION AND BACKGROUND

虽然3D重建是计算机视觉和图形学领域的一个成熟领域,但随着消费者深度相机(如微软Kinect和华硕Xtion)的兴起,3D重建正在获得新的动力。由于这些传感器能够以实时速率提供深度地图,因此最近系统的一个特别重点是执行在线表面重建。实时获取重构的能力开启了各种交互式应用,包括:增强现实(AR),现实世界的几何可以与之融合
3D图形并实时呈现给用户;机器人对环境进行快速重建和响应的自主导航;甚至在3D扫描过程中为用户提供即时反馈。

许多最近的在线系统[11,20,8,10,31,33]已经开始采用动态深度摄像头,比如Kinect。有[11,20]采用Curless和Levoy[4]的体积融合方法。这种方法支持增量式更新,冗余样本,不做拓扑假设,近似传感器的不确定性,融合简单地成为现有样本和新样本的加权平均值。对于有源传感器,这种类型的融合已经证明了非常引人注目的结果[4,14,11]。

虽然有源传感器有很多优点,但在某些情况下,由于功耗、户外使用和外形因素,标准的无源RGB相机是首选。这导致许多研究人员研究的方法,试图侦察结构场景只用被动相机,采用结构从运动(SfM)[23]或多视图立体声(MVS)[30]方法。与主动传感器不同的是,被动深度估计受非特定区域和匹配误差的影响,这些误差会导致许多异常值和数据丢失。因此,大多数系统使用平滑先验对深度图进行正则化,甚至在每次成形前使用照片一致性、可视性和形状先验对多帧深度图进行优化[30,24,23,21]。

最近,由于计算能力的提高,许多新的无源系统已经进一步向实时重建推进。并行跟踪和映射(PTAM)[13]演示了非常强大的稀疏跟踪,由于实时性能,但只提供稀疏映射的3D点。
Merrell等人的[17]从一个图像序列中计算出有噪声的深度图,并将几个相邻的深度帧融合在一起,生成融合致密的重建图像。

基于稀疏关键点的跟踪系统在无文本场景中存在一定的局限性,稠密跟踪与映射(DTAM)[21]解决了这一问题。在DTAM中,摄像机姿态采用密集的全图像对齐方法进行稳健跟踪。为了生成深度图,DTAM从许多数据样本中增量地构建一个成本卷[25],该卷使用全局优化不断地进行规范化。该方法的灵感来自于Zach等人的[35],该方法通过将深度图融合问题转化为tv - l1型优化任务,对Curless’和Levoy的体积法进行了空间正则化和鲁棒性的改进,并在GPU[34]上有效地解决了这一问题。虽然产生了令人印象深刻的结果,这些方法,然而,携带计算复杂性强加的全局优化。

在这篇论文中,我们提出了一个新的系统,叫做MonoFusion,它允许用户利用一个现成的摄像机作为内置传感器,实时地构建一个虚拟环境。这款相机可以是平板电脑、手机或外设网络相机。不需要额外的输入硬件。这就消除了对功率密集型有源传感器的需求,这种传感器在自然室外照明中不能稳定工作。利用相机的输入流,我们首先利用混合稀疏和稠密跟踪方法估计相机的六自由度(6DoF)姿态。这些姿态然后用于输入帧和关键帧之间的高效密集立体匹配(之前提取)。得到的稠密深度图被直接融合到一个基于体素的隐式模型中(使用一种计算成本不高的方法),每帧提取表面。该系统能够从跟踪故障中恢复,并从三维重建中滤除几何不一致的噪声。

与现有的方法相比,我们的系统避免了昂贵的全局优化方法进行深度计算或融合,如TV−L1TV-L^1TV−L1。此外,它还消除了对内存和计算密集型成本的需要。这导致了一个简单和有效的系统,使实时密集的三维重建进一步接近研究人员。本文详细介绍了构成该系统的算法组件和该方法的GPU实现。定性结果表明,高质量的侦察结构,甚至在视觉上可与主动深度传感器为基础的系统,如KinectFusion。

2 SYSTEM OVERVIEW

MonoFusion从一个移动的摄像机中实时生成一个场景的图像流,生成并维持一个实时的、密集的三维场景重建。图像数据的实时处理可以被可视化地划分为三个计算块。此处理方案如图2所示,相应的块将在下面的小节中详细描述。综上所述,实时图像流是通过一个混合的、基于关键帧的特征跟踪和映射系统提供的,该系统主要用于估计6DoF中的摄像机位姿轨迹。给定时间的相机姿态用于搜索关键帧(作为跟踪过程的一部分缓存),该关键帧具有最佳的(用于立体匹配)基线和图像与当前图像帧的重叠。这对帧和相机的姿态是用来计算当前帧的密集深度地图应用补丁匹配立体声[3]的实时变体。每帧密集深度地图的计算采用这种方式,并最终集成到一个基于体素的表现应用体积融合的场景表面。

3 CAMERA POSE TRACKING

给定一个图像序列{I0,I1,…,It}\{I0, I1,…,It \}{I0,I1,…,It}在一段时间内,相机姿态跟踪器估计6自由度相机的姿态{T0,T1,…,Tt}\{T0, T1,…,Tt\}{T0,T1,…,Tt},其中Ti,i = 0,1,…,t表示由3×3旋转R和3×1平移向量t组成的3×4位姿矩阵。请注意,我们假设相机的内部物理特性已经通过基于棋盘格的校准过程得到了确定。跟踪过程包括检测图像流的每一帧的凸角。通过将它们与一个持久的3D地标地图(跟踪器也会创建、更新和维护该地图)进行匹配,可以估计出当前帧的相机姿态。对于尺度不变的凸角检测和匹配,首先将输入图像Ii转换成三阶多尺度高斯金字塔[16],并在金字塔的每一层上应用快速兴趣点探测器[28]。后续将详细介绍跟踪管道。

地图初始化。 整个系统初始化的方法是首先引导摄像机姿态跟踪器,构建初始的三维地标地图进行跟踪。对于前几帧,在快速兴趣点周围提取大小为M×M的patch并进行跟踪。在这个阶段,用户在场景中缓慢移动相机(不需要完全平移,但是系统只会在达到足够的运动基线时自动引导)。在这一阶段,由于相机移动缓慢且距离过小,它可能会在帧与帧之间发生显著的外观变化。因此,一个简单的零均值归一化互相关分数(ZNCC)可以与反匹配检查结合使用,从而在初始帧和当前帧i之间产生一组匹配的2D特征。在初始化阶段的每一帧中,五点算法[22]应用于RANSAC[7]设置中的对应集,计算基本矩阵E0,i(因为摄像机已经校准)。这个基本矩阵通过其奇异值分解(SVD)得到两个视点之间的相对位姿变换。该初始位姿信息用于三角化对应集中匹配的特征,生成包含N个地标的地图M, {L0, L1,…,LN−1},其中每个地标L j在特征j处计算得到:

其中(X j,Y j,Z j)表示该特征在参照系坐标系中的三角化三维坐标,P j为最新视点图像I I中以特征像素为中心的M×M patch。该补丁被存储为指向Ii的高斯金字塔中相应内存块的指针。在进行特征三角化之前,对平移向量应用任意的比例因子来确定地图的整体比例。注意,跟踪器可以通过其他方式引导。例如,PTAM使用基于单应性的分解,但是我们的方法使用更简单的引导技术产生健壮的结果。

4 DEPTH ESTIMATION

我们估计深度的方法基本上是基于实时图像和先前选定的关键帧的立体匹配。立体匹配是指从不同但已知的视点拍摄的两幅图像之间找到对应的像素点。体视算法可分为全局算法和局部算法。全局方法(见[29]概述)制定了一个能量函数,该函数最小化时考虑了所有图像像素。用于最小化能量函数的运算化技术在实时应用中太慢了十倍。然而,基于动态规划的近似全局优化方法[9,32,6,27,18]可以获得合理的帧率,但仅限于低分辨率图像,并在一个强量化深度范围内运行(通常为64个离散深度值)。局部立体算法通常比全局算法更快,因为它们仅根据局部图像块的相关性来识别相应的像素。许多相关函数可以作为独立于滤波器大小的计算复杂度的滤波器。例如,绝对差的和(SAD)对应于一个简单的box filter[29]。最近的实时立体图像处理方法主要是基于图像边缘,例如基于双边滤波,对相关窗口内的每个像素进行加权[12, 26, 36]或引导图像滤波[25,5]。这些方法在深度值较小的情况下具有良好的计算性能。因此,如果需要较高的深度精度,这些方法就不能很好地扩展。

一旦初始化和运行跟踪,我们的系统开始生成单像素深度帧为每个新传入的视频帧I,即描述使用方法后在本节中,我们选择一个映像I’从跟踪器的最佳匹配的关键帧列表当前帧(外貌)然而,提供足够的基线执行深度估计。给定这两张图片I和I’(去除镜头失真),我们的目标是为图片I中的每个像素I = (u,v)寻找一个深度值,在所有可能的深度值D中代价最小:

其中,函数C在像素i处返回某深度假设d的代价,基于图像patch上的ZNCC。设Ip是图像中的一个正方形patch, I以像素p为中心,I’p根据深度d将这个patch投影到图像I’中:

和前面一样,K是相机的固有矩阵,T表示相机之间的相对运动。函数π−1 (i d) = dK−1我将像素转换成3 d场景根据深度d x点。则C由式(3)给出,与式(3)相似

Ip (j)返回强度值在补丁我p像素j。我和σ§的平均值和标准偏差表示Ip,分别。

4.1 Patch-based Optimization

为所有可能的深度值评估Eq. 4是非常昂贵的,特别是在处理高分辨率图像和需要高深度精度的情况下。我们通过一个类似于PatchMatch立体声[3]中提出的优化方案来解决这个问题。此方法的运行时独立于所考虑的深度值的数量。PatchMatch立体声在随机深度生成和传播深度之间交替进行。然而,算法的运行性能取决于相关窗口的大小。此外,PatchMatch stereo是一个迭代算法,需要多次遍历图像。

我们通过在图像像素之间交替生成深度和深度传播来迭代生成一个解决方案。这种随机优化策略的优点是计算复杂度与可能的深度值的数量无关,即在每个像素上只需要测试所有可能深度值的一小部分。然而,由于算法的迭代性质,多核CPU实现需要几分钟来处理低分辨率的帧[3]。因此,该算法并不直接适用于我们的实时应用场景。

与PatchMatch stereo相比,我们的3D重建并不是基于单一深度地图,而是通过融合多个深度地图来生成的。这意味着各个深度图的质量要求稍微低一些。因此,我们提出了一种能够实时生成高质量深度地图的PatchMatch立体声近似算法。

我们对PatchMatch立体声的两个主要区别可以概括如下。首先,PatchMatch立体声估计每个像素的深度和表面法线,而我们只关注计算深度。尽管这样做有一个缺点,即倾斜的表面近似于分段平面,但它将搜索空间从3维(深度加法线)减少到1维(深度)。结果表明,该算法收敛速度快,不需要迭代。注意,由于多个深度图的融合,分段的平面伪影几乎是瞬间减少的。第二,我们使用ZNCC在小块上进行成本计算(公式6)。ZNCC补偿了局部增益和偏移量的变化,因此使我们能够处理输入图像中较大的辐射差异。(由于我们的输入图像是在不同的时间点捕获的,所以可能会发生辐射变化。)这与PatchMatch立体声形成对比,后者的匹配成本是基于大patch内部的强度和灰度的绝对差异之和。在[3]中使用的大补丁容易产生边缘增肥问题,因此必须使用自适应支持权值来减弱这种影响。通过使用小块的方法,不仅降低了计算复杂度,而且减小了边缘的增肥问题,使倾斜区域的分段平面偏差得到松弛。小尺寸patch的缺点是在没有纹理的区域可能会得到错误的深度估计。然而,错误的深度测量很容易被丢弃,并且随着时间的推移,从后续帧计算出的深度将会填充缺失的数据。

现在我们继续介绍我们的方法。我们的方法的假设是图像包含相对较大的等深区域(我们讨论这些区域的大小是-低的)。我们的算法首先为图像中的每个像素分配一个随机深度值。虽然大多数像素将被分配到一个错误的深度值,但很可能在每个恒定深度的区域中至少得到一个正确的猜测。注意,等深度区域可以包含大量像素,因此获得至少一个良好(即低成本)猜测的机会是相当高的。在低成本获得一个或多个深度估计值后,我们的目标是将这些深度值传播到空间相邻的像素。接下来,我们将更详细地讨论该算法。

随机初始化。 我们首先测试每个像素i的K个随机深度假设{D = D 1 i,…d K我}。像素i的深度被选择为代价最小的那个:d i:= argmin d∈d C(i,d)。为了分析随机初始化的性质,设R为包含|R|像素的等深线区域,l = |D|为所有可能的深度值的个数。那么P在R中正确分配至少一个像素到正确深度的可能性是P = 1−(1−1/l) |R|·K。因此,为了获得R中至少一个像素的正确深度,并且可能性为P,区域大小必须为|R|≥log(1−P)/(K·log(1−1/l))。

例如,让我们假设我们想要重建的深度范围为2米,精度为5mm。那么可能的深度值总数l =400=2000mm/5mm。如果K = 5,则在16×16区域内至少抽样一个正确深度的概率为95%。请注意,由于我们的方法是基于单目跟踪,因此无法使用比例信息来设置米制单位的阈值。在我们的实验中,利用位姿跟踪器自举阶段获得的最小和最大深度值来确定阈值,因此,重构分辨率与自举阶段应用的任意尺度因子相关联。
空间传播。 在随机初始化步骤之后,图像中的一些像素已经被赋予了深度值,并且匹配代价很低。空间传播的思想是将这些深度值传递给空间相邻的像素,因为这些像素可能具有相同的深度(但目前可能被分配到不同的深度)。为此,我们以行为主的顺序从左上角开始遍历图像。对于当前被扫描的像素i = (u,v),我们查找分配给左侧和上部空间邻居q = (u,v)和r = (u,v)的深度。第i点的深度由d i:= argmin d∈{d i,d q,d r} C(i,d)给出。处理完每个像素后,我们反向传播:我们从右下角开始,从右侧像素和较低的邻居传播深度值。空间传播可以看作是GPU友好的区域增长过程,因为对角线上的每个像素都可以并行处理(见[1])。

4.2 Post-processing

计算出的深度图可能包含由于缺乏纹理或由于遮挡而产生的伪影。因此,我们应用两个过滤器来删除错误的匹配。

匹配滤波器成本。 第一个过滤器去除具有深度值的像素,根据公式6,深度值会产生很大的代价。对于那些纹理很少或者受遮挡影响的像素来说,代价通常是很大的。如果根据公式6得到的匹配代价大于TZNCC=0.5T_{ ZNCC} = 0.5TZNCC​=0.5,则将像素i标记为离群值。最低地区过滤器。第二个过滤器去除具有相似深度的小的隔离区域(参见Hirschmuller等人的[9])。我们首先通过对深度值相差小于Tdepth的空间相邻像素进行分组来分割图像。Tdepth的值是根据第一个深度图中的最小和最大深度值来选择的。然后,如果一个像素i属于一个包含小于Tminsize = 50像素的段,那么我们将它标记为离群值。

4.3 Keyframe Selection

从上面的讨论中,很明显,当前帧I的深度图的计算质量与我们如何从跟踪器的关键帧缓存列表中选择匹配的图像I’密切相关。为了使立体匹配工作良好,我们必须保证足够的图像重叠,同时保持两帧之间的良好基线,以确定深度精度。一种简单的方法是,给定当前帧的位置向量和所有关键帧的位置向量,将I’设为最小化欧氏距离的向量。这保证了最大可能的重叠,因为关键帧只在跟踪器运行可见地图点时生成,所以可以期望一个合理的基线。然而,由于相机旋转关键帧可以从彼此非常接近的视点采样,因此我们不能保证一个充分的基线。

为了克服这个问题,我们收集了一组关键帧,它们位于当前帧的基线距离B之内。由于跟踪器没有提供度量尺度,所以B是由相机平移向量和bootstrap估计的尺度因子决定的。简单地选择最远的关键帧可能导致太大的基线。而且,具有较大相对旋转的关键帧可能会落在这个邻域中,并对密集匹配造成重大挑战。为了对候选点进行权衡,我们绘制了一个直方图,表示在每个关键帧中最初检测到的所有标记点与在I中可以成功匹配的标记点的比值。而且,具有较大相对旋转的关键帧可能会落在这个邻域中,并对密集匹配造成重大挑战。为了对候选点进行权衡,我们绘制了一个直方图,表示在每个关键帧中最初检测到的所有标记点与在I中可以成功匹配的标记点的比值。

论文《MonoFusion: Real-time 3D Reconstruction of Small Scenes with a Single Web Camera》学习相关推荐

  1. 【论文学习笔记】《A Review of Deep Learning Based Speech Synthesis》

    基于深度学习的语音合成综述论文学习 文章目录 基于深度学习的语音合成综述论文学习 1 简介 2 语音合成概述 2.1 语音合成概念 2.2 语音合成发展历史 2.3 传统语音合成技术 2.3.1 拼接 ...

  2. 论文学习之综述:《Deep learning》

    论文学习之综述:<Deep learning> 文章目录 论文学习之综述:<Deep learning> 前言: 第一部分:深度学习基础(1-4)页 作者介绍: 前期知识储备: ...

  3. 论文翻译:2021_语音增强模型压缩_Towards model compression for deep learning based speech enhancement...

    论文地址:面向基于深度学习的语音增强模型压缩 论文代码:没开源,鼓励大家去向作者要呀,作者是中国人,在语音增强领域 深耕多年 引用格式:Tan K, Wang D L. Towards model c ...

  4. 综述:基于深度学习的文本分类 --《Deep Learning Based Text Classification: A Comprehensive Review》总结(一)

    文章目录 综述:基于深度学习的文本分类 <Deep Learning Based Text Classification: A Comprehensive Review>论文总结(一) 总 ...

  5. 论文详读:LEMNA: Explaining Deep Learning based Security Applications

    我以我ppt的内容顺序介绍一下这篇论文,希望有错误的地方大家可以帮我指出嘻嘻 1.论文出处 论文名:LEMNA: Explaining Deep Learning based Security App ...

  6. 【论文学习笔记】《Parallel WaveNet: Fast High-Fidelity Speech Synthesis》

    Parallel WaveNet 论文学习 文章目录 Parallel WaveNet 论文学习 1 简介 2 WaveNet 介绍 3 Parallel WaveNet 介绍 4 概率密度蒸馏 4. ...

  7. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  8. 【论文学习】《“Hello, It’s Me”: Deep Learning-based Speech Synthesis Attacks in the Real World》

    <"Hello, It's Me": Deep Learning-based Speech Synthesis Attacks in the Real World>论文 ...

  9. 综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation 近期主要在学习语义分割相关方法,计划将arXi ...

  10. 论文翻译七:Adversarial Transfer Learning for Deep Learning Based Automatic Modulation Classification

    30天挑战翻译100篇论文 坚持不懈,努力改变,在翻译中学习,在学习中改变,在改变中成长- Adversarial Transfer Learning for Deep Learning Based ...

最新文章

  1. 简明python教程购买-简明python教程哪版(python看什么书)
  2. 多线程之旅之四——浅谈内存模型和用户态同步机制
  3. 国务院办公厅关于2022年部分节假日安排的通知
  4. springmvc 传递和接收数组参数
  5. python psutil库安装_安装psutil模块报错安装python-devel
  6. Bloomfilter 的应用场景
  7. AndroidStudio_安卓原生开发_精美自定义多选控件_多选Spinner_MultiSpinner_拿来即用---Android原生开发工作笔记144
  8. mavon-editor文本编辑器初体验(一)
  9. Google的Guava开发库快速快速入门
  10. STM32第一个demo与软件设置
  11. STM32矩阵键盘的实现原理
  12. 数据结构-线性链表的实现和应用
  13. python读取raw数据文件_pythonrawkit如何从原始文件读取元数据值?
  14. SPSS怎么筛选无效数据
  15. 微信号码检测是什么意思
  16. Java的基本语法^_^
  17. 基于matlab的MIMO信道容量仿真
  18. Springboot中自动转JSON输出
  19. Solr高级查询Facet
  20. 金山毒霸--血淋淋的教训

热门文章

  1. 清宫廷画派代表性传承人之——爱新觉罗恒晖
  2. LaurenNBHL开篇自序
  3. OpenLayer4与mapV结合蜂巢图效果
  4. 关于修改vue项目的favicon.ico图标
  5. vxworks-TP-Link wr886nv7-V1.1.0 路由器分析
  6. 验证失败,可能为XMind 2013 Pro序列号。升级到XMind 8?
  7. Metronic 对话 chat
  8. 金融分析与风险管理——投资组合的有效前沿及资本市场线
  9. 【法律适用】将微信记录作为打官司证据的最全攻略(2020法院版)
  10. 基于SpringBoot 的报销系统