三维重建算法调研

1.概述

​ 照相机/摄像机的原理是将一个三维场景或物体投影到二维平面上,过去是胶片,现在是经过感光元件再记录到存储器。降维的过程通常不可避免地会存在信息的损失,而所谓的重建(Reconstruction),顾名思义就是要从获取到的二维图像中复原原始三维场景或物体。

​ 三维重建的流程大致如下:首先,通过多角度拍摄或者从视频中提取得到一组图像序列,将这些图像序列作为整个系统的输入;随后,在多视角的图像中,根据纹理特征提取出稀疏特征点(称为点云),通过这些特征点估计相机位置和参数;在得到相机参数并完成特征点匹配后,我们就可以获得更稠密的点云(这些点可以附带颜色,从远处看就像还原了物体本身一样,但从近处能明显看出它们只是一些点);最后根据这些点重建物体表面,并进行纹理映射,就还原出三维场景和物体了。

概括起来就是:图像获取->特征匹配->深度估计->稀疏点云->相机参数估计->稠密点云->表面重建->纹理映射

​ 从分类上来说,三维重建根据图像来源可分为,基于深度图的三维重建和基于多视角图像的三维重建。

2.分类

2.1传统的三维重建算法

2.1.1被动式:

直接依靠周围环境光源来获取RGB图像,通过依据多视图几何原理对图像进行解析,从而获取物体的三维信息。常见的依据原理可以分为:单目视觉 ,双目/多目视觉 ,基于消费级RGB-D相机。

2.1.2主动式:

(1)结构光

结构光法依靠投影仪将编码的结构光投射到被拍摄物体上,然后由摄像头进行拍摄。由于被拍摄物体上的不同部分相对于相机的距离精度和方向不同,结构光编码的图案的大小和形状也会发生改变。这种变化可以被摄像头捕获,然后通过运算单元将其换算成深度信息,进而获取物体的三维轮廓信息。这种方法缺点是容易受环境光干扰,因此室外体验差。另外,随检测距离增加,其精度也会变差。目前,一些研究通过增大功率、改变编码方式等形式解决这些问题,取得了一定的效果。

(2)TOF 激光飞行时间法

TOF 飞行时间法依靠通过向目标连续发送光脉冲,然后依据传感器接收到返回光的时间或相位差来计算距离目标的距离。但显然这种方式足够的精度需要极为精确的时间测量模块,因此成本相对较高。好处是这种方法测量距离比较远,受环境光干扰比较小。目前这方面研究旨在降低计时器良品率及成本,相应的算法性能也在提升。

2.2 深度学习三维重建算法

2.2.1 在传统三维重建算法中引入深度学习方法进行改进

因为CNN在图像的特征匹配上有着巨大优势,所以这方面的研究有很多,比如:

DeepVO,其基于深度递归卷积神经网络(RCNN)直接从一系列原始RGB图像(视频)中推断出姿态,而不采用传统视觉里程计中的任何模块,改进了三维重建中的视觉里程计这一环。

• BA-Net,其将 SfM 算法中的一环集束调整(Bundle Adjustment, BA)优化算法作为神经网络的一层,以便训练出更好的基函数生成网络,从而简化重建中的后端优化过程。

• Code SLAM,如之前所提,其通过神经网络提取出若干个基函数来表示场景的深度,这些基函数可以简化传统几何方法的优化问题。

2.2.2 深度学习重建算法和传统三维重建算法进行融合,优势互补

CNN-SLAM13将CNN预测的致密深度图和单目SLAM的结果进行融合,在单目SLAM接近失败的图像位置如低纹理区域,其融合方案给予更多权重于深度方案,提高了重建的效果。

2.2.3 直接使用深度学习来进行三维重建

直接利用深度学习进行三维重建,主要有三种方法

1)基于体素;2)基于点云;3)基于网格。

三维重建领域主要的数据格式有四种:• 深度图(depth map),2D图片,每个像素记录从视点到物体的距离,以灰度图表示,越近越黑;• 体素(voxel),体积像素概念,类似于2D之于像素定义;• 点云(point cloud),每个点逗含有三维坐标,乃至色彩、反射强度信息;• 网格(mesh),即多边形网格,容易计算。因而,依据处理的数据形式不同我们将研究简要分为三部分:

基于体素:Depth Map Prediction from a Single Image using a Multi-Scale Deep Network, 2014

该方法是用深度学习做三维重建的开山之作,基于体素形式,其直接用单张图像使用神经网络直接恢复深度图方法,将网络分为全局粗估计和局部精估计,并用一个尺度不变的损失函数进行回归。

基于点云:

A Point Set Generation Network for 3D Object Reconstruction From a Single Image, 2017

该方法是用点云做三维重建的开山之作,最大贡献在于解决了训练点云网络时候的损失问题,因为相同的几何形状可能在相同的近似程度上可以用不同的点云表示,如何用恰当的损失函数来进行衡量一直是基于深度学习用点云进行三维重建方法的难题

Point-Based Multi-View Stereo Network, 2019

该方法通过对场景的点云进行处理,融合三维深度和二维纹理信息,提高了点云的重建精度。

基于网格

用三角网格来做单张RGB图像的三维重建,相应的算法流程如下: 对于任意的输入图像都初始化一个椭球体作为初始三维形状。然后网络分为两部分:1.一部分用全卷积神经网络来提取输入图像的特征。2.另一部分用图卷积网络来表示三维网格结构。对三维网格不断进行变形,最终输出物体的形状。模型通过四种损失函数来约束形状,取得了很好的效果

3.经典算法汇总

3.1 KinectFusion

帝国理工的Newcombe等人在2011年提出的KinectFusion,可在不需要RGB图而只用深度图的情况下就能实时地建立三维模型。KinectFusion之后,陆续出现了Kintinuous,ElasticFusion,ElasticReconstruction,DynamicFusion,InfiniTAM,BundleFusion等非常优秀的工作。其中2017年斯坦福大学提出的BundleFusion算法,据说是目前基于RGB-D相机进行稠密三维重建效果最好的方法。

相关代码:https://pointclouds.org/

3.2 Kintinuous和ElasticFusion

Kintinuous 论文:http://www.thomaswhelan.ie/Whelan16ijrr.pdf

Kintinuous 代码:https://github.com/mp3guy/Kintinuous

ElasticFusion论文:http://thomaswhelan.ie/Whelan15rss.pdf

ElasticFusion代码:https://github.com/mp3guy/ElasticFusion

3.3 InfiniTAM

代码 https://github.com/victorprad/InfiniTAM

论文:http://www.robots.ox.ac.uk/~victor/infinitam/files/ismar15infinitam.pdf

3.4 DynamicFusion

作者:Richard A. Newcombe

其整体思路:首先将每帧获取到的动态变化的场景(要重建的对象)通过某种变换,转换到一个canonical 空间中,即在该空间中创建一个静态的物体表面模型; 而每帧都有个对应的 volumetric warp field 的东西,能够将canonical空间中的模型还原到live frame中。

论文 :http://grail.cs.washington.edu/projects/dynamicfusion/papers/DynamicFusion.pdf

代码: https://github.com/mihaibujanca/dynamicfusion

3.5:BundleFusion

BundleFusion输入系统的是使用消费级的传感器获取的RGBD数据流,并且保证这些数据中的彩色图像和深度图像是时间和空间上都对齐的。图像分辨率是640x480,频率是30hz。我们的目的就是要找到frames之间的3D对应,然后根据这些对应信息找到刚体相机变换Ti。Ti§ = Rip + ti(Ri为旋转,ti为平移),Ti实现从相机系到世界系的映射。并且将系统的第一帧作为世界系的坐标系。

论文:https://arxiv.org/pdf/1604.01093.pdf

代码:https://github.com/niessner/BundleFusion

3.6 ROSEFusion

ROSEFusion 能够在仅考虑深度图作为输入的条件下,利用随机优化求解相机位姿,实现了在快速相机移动下的室内场景稠密重建。同时该工作仅依赖深度信息,因此也可以在无光照,和变化光照的条件下使用。 该工作的主要特点是:(a) 利用深度图和TSDF相容性作为代价函数,不需要提取特征点,仅依赖于深度图;(b) 提出了Particle Swarm Template(PST),利用PST可以高效的对相机位姿空间进行采样,并利用随机优化求解出相机的位姿。

论文:https://github.com/jzhzhang/ROSEFusion

代码:https://arxiv.org/pdf/2105.05600.pdf

3.7 MVSNet和R-MVSNet

MVSNet先通过特征提取网络提取图像特征,再通过2D到3D的单应变换,把特征映射到参考图像的可视空间中以构建代价体(cost volume),然后使用一个多尺度的三维卷积网络优化代价体得到三维概率空间,通过深度期望的方式得到参考图像的初始深度图以及对应的概率图,最后把参考图像及其深度图传入深度图优化网络,得到优化后的深度图。得到深度图便得到物体的三维模型。

在R-MVSNet中,首先使用2D特征提取层提取输入图像的特征,再使用单应矩阵变换到参考影像的相机视锥体的正面平行面上,然后在不同深度计算代价,并经由卷积的GRU单元进行正则化,这样就可以沿着深度方向逐渐获取整个物体的几何信息。

论文:https://arxiv.org/abs/1804.02505

代码:https://github.com/YoYo000/MVSNet.

4 .一些可用的系统对比

系统功能稀疏点云稠密点云重建表面纹理映射
VisualSFM完成从图像到稠密点云的重建过程11
Meshlab从稠密点云进行表面重建,并完成纹理映射111
Colmap输入多视角图像,输出稀疏点云并估计相机参数1
Bundler输入多视角图像,输出稀疏点云并估计相机参数1
CMVS
MVE包含了SfM, 点云重建,表面重建。基本上能够完成三维重建的整个流程1111
MVS-Texturing能够完成大规模图像输入的纹理映射1
OpenMVS稠密点云重建、表面重建、表面细化、纹理映射。111

5.三维重建数据集

4.1http://vision.ia.ac.cn/zh/data/index.html

本数据集包括两部分,第一部分数据包含激光扫描数据和对应的图像数据,可用于对重建算法进行定量评价;第二部分数据中国四大佛教名山(五台、峨眉、九华、普陀)和两大道教名山(武当、青城)的典型古建筑图像数据。

4.2 Matterport3D数据集

Matterport3D包含了配置的1280×1024彩色和深度图像,18个视图包含大约3.75sr(整个球体,除了南北极),沿着“天空盒”分布图像,外面看起来是沿着位于全景中心的立方体分布。这些RGB-D全景提供了新的机会来识别场景目录,估计区域分布。

4.3 NoW Dataset

3D人脸重建相关数据集。该数据集包含用iPhone X拍摄的100名受试者的2054张2D图像,以及每个受试者的单独3D头部扫描。头部扫描是评估的基本依据。受试者的年龄、体重指数和性别(55名女性,45名男性)各不相同

https://github.com/facebookresearch/Replica-Dataset

http://www.scan-net.org/

4.4 Replica Dataset

高质量室内场景三维重建数据。数据集中包含了18个高真实感的室内场景重建数据集Replica。每个场景由一个密集的网格、高分辨率高动态范围(HDR)纹理、每个基本语义类和实例信息以及平面镜和玻璃反射镜组成。副本的目标是使机器学习(ML)研究能够依赖于世界上视觉上、几何上和语义上真实的生成模型。相关链接https://github.com/facebookrese

4.5 ScanNet

ScanNet是一个RGB-D视频数据集,包含1500多个扫描中的250万个视图,使用3D相机姿势、曲面重建和实例级语义分段进行注释(3D重建相关)。数据集链接:http://www.scan-net.org/

相关文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值