三维重建综述(更新到2020年)

1 三维重建的定义与发展
三维重建是计算机视觉和计算机图形学领域的研究热点,旨在从给定的图像数据集或视频中恢复几何模型。20世纪60年代,计算机视觉得到了最初的发展,该阶段的三维重建技术以二维的RGB图像作为输入,研究重心是如何使用相关的计算机图形学和视觉技术从二维图像恢复出立体化的三维形状,解释各个物体的空间位置关系。三维重建技术的一个重点在于如何获取目标场景或物体的深度信息。在景物深度信息已知的条件下,经过点云数据的配准及融合,即可实现景物的三维重建。21世纪随着各种面向普通消费者的深度相机的出现,基于深度数据的三维扫描和重建技术得到了飞速发展。深度相机直接为三维重建技术提供了深度图像数据,从而直接根据几何关系得到场景的点云数据,大大降低了重建的难度。由于基于深度相机的三维重建技术所使用的数据是RGB图像和深度图像,因此这类技术通常也被称为基于RGBD数据的三维重建技术。而实时的三维重建是指除了从输入数据重建出3D模型以外,还提供一个实时的可视化界面,用户可以直观看到当前相机视角下场景的3D模型。

2 典型方法和硬件

2.1 被动式重建方法
三维重建按照深度图的获取方式可以分为被动式测量技术与主动式测量技术。被动式是指使用RGB相机获取二维图像,通过特定算法得到物体的立体空间信息。主要有以下三种方法:纹理恢复形状法[1]、阴影恢复形状法[2]和立体视觉法[3]。其中纹理恢复形状法根据图像中各个物体表面的纹理信息确定表面方向,从而恢复出三维表面;阴影恢复形状法根据图像中包含轮廓特征信息的阴影边界,以及不同光照条件下的图像的明暗程度来计算物体表面的深度信息;立体视觉法基于视差原理根据不同视点上的两幅或多幅图像对应点之间的位置偏差恢复出三维信息。其中立体视觉重建,在实际应用中优于其他两种方法,也逐渐出现在一部分商业化产品上。前两种方法需要的设备是单个RGB相机,第三种方法需要的设备是双目RGB相机或多目RGB相机。

2.2 主动式重建方法
主动式获取技术是指利用如激光、电磁波等能量源发射至目标物体表面,通过接收返回的光波来获取物体的深度信息。主动测距主要采用飞行时间法[4]和结构光法[5]。飞行时间法(Time of Flight,ToF)指的是像物体表面发射光束,当传播到物体表面时被反射回来,传感器通过测量发射信号与接收信号的飞行时间间隔来获得距离的方法。较于立体视觉法而言,具有不受基线长度限制、成像快等特点。但是ToF相机的分辨率非常低,并且飞行时间相机的造价高,受众较少。结构光法通过向表面光滑无特征的物体发射投射可编码的光束生成特征点,然后根据投射光的几何模型,通过三角测量原理计算摄像机光心与特征点之间的距离,由此生成深度信息实现模型重建。因为实现简单且精度较高,所以成为目前应用广泛的基础的硬件设备。使用主动测量技术获取深度信息,需要的硬件设施为能够发射光波的深度传感器比如:红外传感器,激光雷达等。近年来随着深度相机的兴起,基于RGBD数据的三维重建也逐渐增多。深度相机具有一个RGB相机和一个深度传感器,相比于单独使用深度传感器有如下优势:首先可以显示场景的RGB图像让人们有更直观的认知;其次可以将点云配准和二维图像特征点匹配相结合提高配准精度;最后可以将彩色值用于纹理贴图使重建模型具有颜色属性,增加重建的真实度和还原度。最近提出一种结合深度相机和IUM惯性传感器进行位姿优化的适用于移动设备的大型场景重建方案[6]。

3 基于RGBD的实时稠密三维重建算法

3.1 三维重建算法流程
Kinectfusion[7][8]算法首次实现了基于RGB-D相机的实时稠密三维重建。允许在复杂的场景下使用手持Kinect深度传感器进行扫描,进行实时、密集的体积重建。该算法主要使用ICP算法实时地跟踪摄像机的6自由度姿态和TSDF曲面融合的方法将摄像机采集的深度数据实时融合到全局三维模型中,从而进行表面重建。该算法的主要流程如下: (1) 采用双边滤波对深度图进行平滑处理去除部分噪声。将原始的深度图像转化为相机坐标系中三维点云。(2)利用投影法来确定对应点关系,用于点云配准。(3)使用ICP算法配准当前帧和上一帧点云数据,得到当前相机的位姿。(4)根据上一步得到的位姿,将当前帧的点云融合到TSDF网格模型中。(5)利用光线投影算法从模型投影得到当前帧点云的法向量,用来与下一帧的点云数据进行配准。其实任何基于RGB-D数据的三维重建算法流程都可以概括为这几个步骤:(1)图像提取:首先使用深度相机获取场景的深度图像。(2)图像预处理:将获取的深度图像经过去噪等处理提高图像精度,再转化为点云信息。(3)点云配准:根据两帧的点云数据来确定两帧之间的位姿关系,将同一物理空间点在两幅不同图像中的成像点进行一一对应。(4)表面融合:有了比较精确的匹配结果,结合摄像机标定的内外参数,就可以恢复出三维场景信息。

3.2位姿确定

3.2.1 点云匹配算法
在进行三维重建时相机的轨迹和位姿优化一直是研究的重点,其中主要方法就是使用ICP算法以及它的变种算法。ICP算法可以用于计算两组点云之间的刚体变换,ICP算法有许多变种算法,如点到点 ICP(Point-to-Point)、点到面 ICP(Point-to-Plane)、面到面 ICP(Plane-to-Plane)等。传统的 ICP算法需要计算两组点云之间的每个点对应的距离最近点作为一一对应点,显然这需要遍历另一组点云以寻找最近点,这将导致算法无法实时运行。为了舍去遍历这一步骤,变种的 ICP假设两组点之间的旋转、平移量很小,所以每一个点对应的另一组点云中附近的点就是它的当前最近点。kinectFusion[7][8]采用的就是点到面的ICP配准算法,它并不需要去寻找最近的点是哪一个,只需已知融合好的模型点云和当前帧的坐标以及法向量,就可以计算得到当前帧的点云位姿。这种帧到模型的位姿跟踪被广泛使用在多种实时重建算法[9][10]中。InfiniTAM算法[11][12]在Kniect Fusion基础上进行改进,当相机的位姿变化不大或者离最近一次射线投影的帧不远,就可以跳过射线投影进行ICP配准。这种改进方法降低计算成本,解决大尺度场景重建时,内存不足的问题。

3.2.2 位姿优化
BundleFusion算法[13]中的进行点云配准时对于新获取的帧,先和之前的帧累计到一组,首先在组内匹配,做局部优化。之后用组内的第一帧表示当前位姿,然后和之前所有的组匹配,做全局姿态优化。通过使用局部到全局的优化策略,在每次更新姿态时对帧进行重新整合以在线修正曲面,消除了时间跟踪方法的脆弱性和不精确性。ElasticFusion算法[14][15]同样使用局部配准来模拟曲面环闭合优化,同时利用全局配准来保证保持全局一致性。并且采用加权的方式融合了RGB 图像通过颜色一致性约束计算位姿和点云通过 ICP 算法计算位姿两种匹配方法.最近一种算法[16]采用以每个特征点反射出来几束光线最后收束到相机光心为目标的BA优化模型,把相机姿态和特征点空间位置做出最优调整,最终得到较好的三维重建模型。

3.3表面融合算法
高质量的稠密RGB-D重建中表面融合技术是一个关键部分。表面融合算法框架大体可分为基于体素的TSDF[17]模型和基于点的Surfel[18]模型。其中TSDF模型需要将空间划分为均匀分布的三维网格(体素),并将稠密的深度信息等融合到截断距离符号函数(TSDF)中,从中提取曲面。Surfel模型使用密集的圆面来表示曲面,并为每个圆面指定一个范围和法线。

3.3.1基于体素的TSDF模型
大多数的实时重建算法[7][12][13]都采用TSDF 模型进行表面融合,TSDF算法原理是将整个待重建的三维空间划分成网格,每个网格中存储了数值,使用SDF隐式存储模型曲面的,曲面的内部体素和外部体素分别存储了到最近曲面点的负距离和正距离。曲面本身被定义为SDF中的过零点。在执行算法之前,必须定义体素大小和空间范围。图一表示的是重建人脸,重建好的表面到相机一侧都是正值,另一侧都是负值,网格点离表面的距离越远绝对值越大,在网格模型中从正到负的穿越点表示重建好的表面。 图2:体素网格由于符号距离函数的体素网格中存储的数据需要大量的内存空间。并且大部分场景中点的信息非常稀疏,因此符号距离函数中的体素大部分是空的,浪费了内存空间。并且当捕捉到更大范围、更精细的场景时,内存消耗会急剧增加,使得重建场景的大小受到限制[7][8]。为了解决体素均匀细分网格中的符号距离函数占用大量内存来存储数据的问题,一种方法是使用适当的层次结构高效存储数据。例如采用八叉树结构[19],其中TSDF可以在实际曲面周围以稀疏的方式编码, Zeng等人[20]使用固定的4级层次结构,将八叉树分为四层:顶层、分支层、中间层和数据层,仅将TSDF存储在最高级。Frank 等人[21]提出一种支持多分辨率三维映射和增量网络的划分算法,在单独的CPU上可以实时累积。另一类储存方式是体素散列[22]。该方法通过预先定义大小和分辨率较小并且用线性的空间散列函数来存储空间位置的体素网格。在实际运行时只有包含几何信息的体素块被实例化,相应的索引存储在空间散列中。使得基于散列的三维重建方法占用内存小、计算效率高。因此适用于内存较小的移动端设施如:手机[23],或者VR交互系统[24]中。

3.3.2基于点的surfel模型
基于surfel 模型进行表面融合的重建算法与基于体素的表示不同,采集的距离图像可以直接存储在基于点的模型中,用局部点采样来近似曲面,如图二所示。并且可以通过进一步编码对点附加局部属性,具体是对采集的点云图像中的每个点储存相应的信息,包括点的位置信息(x,y,z),通过场景表面离相机光心的距离求得的面片半径信息r,面片法向量n,颜色信息(R,G,B)以及点的获取时间信息t。在进行点的融合更新时,点的信息更新采用加权融合的方式进行。并且基于点的方法具有稀疏性,相比TSDF算法减小了体积存储相关的内存空间。因此此类方法可应用于较大规模的重建算法。

3.3.3 基于体素的机器学习融合
机器学习的融合方法可以对采集的图像数据进行在线学习,因此可以对实际过程中传感器产生的噪声和异常值进行更有效的抑制,并且通过学习模型可以预测隐式表面,近年来通过机器学习进行融合的算法也相继被提出。Gernot等人[26]提出了一种3D-CNN体系结构,它可以通过学习真实世界中三维物体和场景的结构,根据输入的深度图预测隐式表面,因此可以进一步重建被遮挡的区域或填补传感器发生故障时输入数据的空白。RoutedFusion算法[27]从少量的训练数据中对传感器的噪声分布进行学习,再将噪声和异常的测量值融合到单个曲面上。并且将网络架构分为二维深度网络和三维深度融合网络,可以有效地处理不同处理阶段的噪音和离群值。提出由一种预测非线性更新的神经网络更新曲面,而不是TSDF模型中线性更新的方法,可以更好地处理对象边界和薄结构,并且有足够快的速度实现实时应用。

4 点云分割方案

4.1 聚类方法
聚类方法可以实现两种分割,一种是根据点的运动一致性划分场景中物体的运动属性,一种是根据点的聚集性划分场景中不同物体的数据集。Lu等人[28]使用K-均值算法将三维点划分为几何簇,并将K∈[0,1]定义为任意簇成为运动目标的概率。之后创建一个标准来分离静态和动态对象。根据不同的条件将场景分割为不同属性,如果运动属性≤0.3,则将簇标记为静态环境;如果运动属性≥0.7,则将簇标记为动态对象。在航天应用中,背景是静止的情况很少,所有更需要一种针对面积的分割。Miika[29]实现了一个能将三维物体从背景中分离出来的数据处理链。首先使用了一个简单的直通过滤器。将深度值远大于模型预估深度的数据删除。之后使用RANSAC算法寻找平面的内联线,由此检测出平面分量并将其过滤。最后假设剩余数据由对象簇组成,使用PCL库的欧几里德提取算法进行聚类,假设聚类后最大的集群是感兴趣的对象,其他所有集群都被滤除。对剩下的数据进行点云配准与融合,实现对目标的重建。聚类筛选的方法对于目标物体占据场景大部分的深度数据时是有效的。

4.2 学习方法
Dragomir等人[30]提出了一种基于马尔可夫随机场MRF模型的分割框架,通过学习相对重要性的特征来完成分割任务。在学习阶段,将获取的场景用一个适当的类或对象标签标记。学习目标是可以找到全局最优的权重,使分割可以有效地实现。在分割阶段,对一个新场景中的点进行分类并且计算相关的点和边的特征,由学习阶段提供的权值进行图切割。由于这种方法很大程度上依赖于物体局部特征的存在,因此在区分大多数同构的对象是有效的。最近,深度学习已被引入点云处理领域。Wang等人[31]提出了一种用于点云上3D对象细分的基于SGPN的深度学习框架。首先使用PointNet为点云中的每个点提取描述性特征向量,之后SGPN使用单个网络来预测分组并且给出每个分组对应的语义类,最后从中提取分割结果。Malinverni1等人[32]同样采用pointnet++的神经网络进行分类,并在分割阶段与WTA相结合。该方法首先从测试场景中分离单一的物体,之后计算每个单独对象的每个预测类的分类百分比。如果分类百分比超过某个阈值,则把该对象归类。Luo等人[33]利用均匀超体素对点云进行重组,降低了计算复杂度。然后,我们以超体素作为基本处理单元,提出了一种多尺度区域关系特征分割网络(MS-RRFSegNet)对超体素进行语义标注和分割。

参考文献:
[1] Ruth Rosenholtz. Computing Local Surface Orientation and Shape from Texture[J]. International Journal of Computer Vision, 1997, 23(2): 149–168.
[2] Berthold K.P.Horn. Shape from Shading:A Method for Obtaining the Shape of a Smooth Opaque Object from One View[M]// Cambridge: MIT, 1970.
[3] Ikeuchi K. Determining surface orientations of specular surfaces by using the photometric stereo method, Pattern Analysis and Machine Intelligence[J]. IEEE Transactions, 1981, 6: 661-669.
[4] D T Delpy, M Cope, P van der Zee. Estimation of optical pathlength through tissue from direct time of flight measurement[J]. Phys.Med.Biol, 1988, 33(12): 1433-1442.
[5] S. Daniel,S. Richard High-accuracy stereo depth maps using structured light[C]// CVPR, 2003, 1: 195-202.
[6] Changdi Li, Lei Yu, Shumin Fei. Large-Scale, Real-Time 3D Scene Reconstruction Using Visual and IMU Sensors[J]. IEEE SENSORS JOURNAL, 2020, 20(10): 5597-5605.
[7] David Kim, Otmar Hilliges, Pushmeet Kohli. KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera[C]//ISMAR, 2011.
[8] Richard A Newcombe, Shahram Izadi, Otmar Hilliges. KinectFusion: Real-Time Dense Surface Mapping and Tracking[C]// ISMAR, 2011.
[9] Jiawen Chen, Dennis Bautembach, Shahram Izadi. Scalable Real-time Volumetric Surface Reconstruction[J]. ACM Transactions on Graphics (TOG), 2013, 32(4).
[10] Matthias Nießner, Michael Zollhofer, Shahram Izadi. Real-time 3D Reconstruction at Scale using Voxel Hashing[J]. ACM Transactions on Graphics (TOG), 2013, 32(6).
[11] Olaf Kahler, Victor Adrian Prisacariu, Carl Yuheng RenVery,elta. High Frame Rate Volumetric Integration of Depth Images on Mobile Devices[J]. IEEE Transactions on Visualization and Computer Graphics, 2015.
[12] Victor Adrian Prisacariu, Olaf Kahler, Stuart Golodetz. InfifiniTAM v3: A Framework for Large-Scale 3D Reconstruction with Loop Closure[C]// Computer Science.ArXiv, 2017.
[13] ANGELA DAI, MATTHIAS NIESSNER, MICHAEL ZOLLHOER. BundleFusion: Real-time Globally Consistent 3D Reconstruction using On-the-fly Surface Re-integration[C]// Computer Science.ArXiv, 2017.
[14] Thomas Whelan, Renato F Salas-Moreno, Ben Glocker,elta. ElasticFusion: Real-time dense SLAM and light source estimation[J]. Robotics Research, 1-20, 2016.
[15] Thomas Whelan, Stefan Leutenegger, Renato F.Salas-Moreno, etal. ElasticFusion: Dense SLAM Without A Pose Graph[C]// 2015.
[16] Guangcai Zhang, Yu Jiao, Wang Zhihao, elta. Visual 3D Reconstruction System Based on RGBD Camera[C]// IEEE 4th Information Technology, Networking, Electronic and Automation Control Conference (ITNEC), 2020.
[17] Brian Curless, Marc Levoy. A Volumetric Method for Building Complex Models from Range Images[C]// 1999.
[18] Hanspeter Pfister, Matthias Zwicker, Jeroen Van Baar, elta. Surfels: Surface Elements as Rendering Primitives[C]// SIGGRAPH, 2000.
[19] Frank Steinbrucker, Christian Kerl, J urgen Sturm,elta. Large-Scale Multi-Resolution Surface Reconstruction from RGB-D Sequences[C]// ICCV, 2013.
[20] Ming Zeng, Fukai Zhao, Jiaxiang Zheng, elta. Octree-based Fusion for Realtime 3D Reconstruction[J]. Graphical Models, 2012.
[21] Frank Steinbrucker, J urgen Sturm, Daniel Cremers. Volumetric 3D Mapping in Real-Time on a CPU[C]// IEEE International Conference on Robotics and Automation (ICRA), 2014.
[22] Shaoyan Xu, Tao Wang, Congyang Lang, Songhe Feng. Graph-based visual odometry for VSLAM[J]. The Industrial Robot, 2018, 45(5): 55-60.
[23] Ivan Dryanovski, Matthew Klingensmith, Siddhartha S. Srinivasa, elta. Large-scale, real-time 3D scene reconstruction on a mobile device[J]. Auton Robot, 2017, 41: 1423–1445.
[24] Patrick Stotko, Stefan Krumpen, Michael Weinmann. Effificient 3D Reconstruction and Streaming for Group-Scale Multi-Client Live Telepresence[J]. TVCG, 2019, 25(5): 2102-2112.
[25] Jens Behley, Cyrill Stachniss. Effificient Surfel-Based SLAM using 3D Laser Range Data in Urban Environments[C]// Robotics: Science and Systems, 2018.
[26] Gernot Riegler, Ali Osman Ulusoy, Horst Bischof1,elta. OctNetFusion: Learning Depth Fusion from Data[C]// 3D Vision (3DV), 2017.
[27] Silvan Weder, Johannes Schonberger, Marc Pollefeys,elta. RoutedFusion: Learning Real-time Depth Map Fusion[C]// CVPR, 2020.[28] Feixiang Lu, Bin Zhou, Yu Zhang, elta. Real-time 3D scene reconstruction with dynamically moving object using a single depth camera[J]. The Visual Computer volume, 2018, 34:753–763.
[29] Miika Santala. 3D CONTENT CAPTURING AND RECONSTRUCTION USING MICROSOFT KINECT DEPTH CAMERA[D]. Oulu University of Applied Sciences, 2012.
[30] Dragomir Anguelov, Daphne Koller. Discriminative learning of Markov Random Fields for segmentation of 3D scan data[C]// CVPR, 2005.
[31] Weiyue Wang, Ronald Yu, Qiangui Huang. SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation[C]// CVPR, 2017.
[32] E.S. Malinverni1, R. Pierdicca1, M. Paolanti, elta. DEEP LEARNING FOR SEMANTIC SEGMENTATION OF 3D POINT CLOUD[C]//IPA International Symposium, 2019.
[33] Haifeng Luo, Chongcheng Chen, Lina Fang, elta. MS-RRFSegNet: Multiscale Regional Relation Feature Segmentation Network for Semantic Segmentation of Urban Scene Point Clouds[J]. IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING, 2020.

你可能感兴趣的:(算法,机器学习,人工智能,计算机视觉,聚类)