熊思博 王琦 刘光洁
关键词:三维重建;深度学习方法;点云;体素;曲面网格;隐式曲面
中图分类号:TP37 文献标识码:A
文章编号:1009-3044(2022)36-0114-04
三维重建技术是指对场景或物体建立起能在计算机环境下进行处理与分析的数学模型的过程。目前,建立三维物体模型的方法主要分为三种:一是通过多角度的相机拍摄,通过计算机视觉技术建立三维数学模型,也称为基于图像的三维重建;二是运用传统的几何建模技术构建三维模型,例如Nurbs、KitBashing、布尔建模等技术方法;三是基于点云的三维重建方法,通过对物体进行扫描,生成该物体点云视角下的三维模型。
图像的三维重建方法分为两种:一是基于单幅图像的三维重建方法,依靠单张图像获取物体的形状、颜色、共面性等信息。该方法获取的信息有限,另一方面,单幅图像中的遮挡现象使得重建过程难度加大;二是基于多幅图像的三维重建,该方法主要是利用三角测量计算多个视角下物体的三维数据,通过对关键特征点的提取与匹配,对物体表面局部纹理进行填充与优化,恢复三维模型。基于图像的三维重建方法能够快速得到物体的三维模型,且虚拟化后的模型逼真,但是也存在着虚构场景无法重建、基于单幅图像的三维重建方法在大规模场景中伪影严重,重建效果差等问题。
基于传统几何技术实现三维重建的方法发展最为成熟,现在已经广泛地应用于生产生活当中,利用该方法可以得到高精度的三维模型。但重建过程中存在对物体需要进行逐一测量、操作烦琐、建模周期长等问题。
基于点云的三维重建是通过移动测绘系统(Mo⁃bile Mapping System),包括相机和移动激光扫描系统,采集得到点云数据,通过点云数据恢复图像,经过计算机处理得到三维模型,模型的质量取决于点云的精细度和准确度,所以该方法的重点与难点在于如何获取高水平的点云数据、点云数据的后期降噪处理、多个点云数据的拼接。
近些年得益于深度学习方法的发展与应用,基于深度学习的三维重建技术得到了充分发展并取得了一定成就。2014年,D.Eigen[1]首次使用CNN神经网络进行三维重建研究工作,使用三维数据的深度特征表示,依靠深度学习方法实现三维模型的构建,开启了基于深度学习的三维重建方法,也为研究者们指出了未来新的研究方向。
1 基于点云的表面表示方法进行三维重建
点云从字面意思可以理解为“大量的点”,它是三维空间坐标系下点分布的样本集合,通过扫描仪器得到的物体表面的点数据集合被称为点云数据集,该数据集中包含有大量信息,如颜色数据、距离、点在三维空间坐标系中的位置、光反射强度等,点云数据集与点云模型如图1所示。获取原始点云数据的方法主要有LiDAR激光雷达、RGB-D相机、多传感器融合等,其中多传感器融合得到的原始点云数据最为全面,可信度较高。点云数据集从获取到的点数量上的多少可划分为稀疏点云与密集点云,两者在基于深度学习的表面重建过程与方法上有差异。
1.1 稀疏点云重建
稀疏点云重建方法是通过输入场景或物体的多视角图像,通过sift或者surf求得多对特征点,并对特征点进行检测与匹配,通过人为地标定或者从图像信息中获取相机的初始参数,然后运用SFM(Structurefrom motion)算法,输出相机位姿与稀疏点云,根据输出的相机位姿与相机初始参数运用LM算法进行捆绑优化,得到更为精确的三维点坐标,结合稀疏点云数据恢复物体或场景的三维结构。使用SFM(Structurefrom motion)算法输出相机位姿与稀疏点云容易受到图像的光照、距离等因素影响,David Lowe[2]在SFM算法的基础上加以改进提出了SIFT算法,在空间尺度中寻找尺度、旋转不变数,解决了以上因素的影响,使得稀疏点云重建的精度得到了大幅度提高。
Fan[3]在基于PointNet架构的基础上使用点云的表面表示方法进行三维重建,为后续单幅图像的点云三维重建研究工作指出了方向,体现了深度学习方法在三维重建工作中的强大性能。
1.2 稠密点云重建
稠密点云重建是在已经过SFM(Structure frommotion)算法处理得到稀疏点云的基础上选取全局视角图像序列生成深度图,根据深度图每个像素的深度投影到三维空间得到三维稠密点云。在稠密点云重建中对深度图的计算与生成是工作的重点也是难点。
Bleyer[4]将立体匹配算法PatchMatch算法应用到深度图的计算当中,该方法能得到较好的像素值,但是对于表面纹理较少的物体或场景,由于算法计算过程中对信息的部分丢失,使得效果不佳。Huang[5]提出的DeepMVS 方法通过构建包括PatchMatch匹配网络、卷内特征聚合网络、卷间特征聚合网络三部分构成的网络模型输出视差图,后期通过视差图得到深度图的办法很好地解决了处理纹理缺失表面场景的问题,但是处理速度较慢。
考虑到传统点云重建三维表面过程中存在的场景丢失、重建效果受场景环境影响较大等问题,基于深度学习的稠密点云重建算法应运而生。Yao[6]在2019年提出了R-MVSNet算法。该方法主要是将深度图变换到深度不同的深度平面上,结合像素在不同深度平面上的概率分布得到初始深度图。R-MVSNet 算法运行速度快,适用性广,可用于任意原始图像输入。
利用超网络(Hyper Net Works)生成三维点云的方法独辟蹊径,该方法与现有的基于深度学习的三维重建方法相反,不像其他的方法返回点云的标准表示,而是以生成的方式找到基于网络的三维对象表示,该方法可以同时找到对象及其三维表面表示。其主要思想是建立一个超网络,在点上训练基于流的模型,将点的球分布反射成三维模型。
2 基于体素的表面表示方法进行三维重建
基于体素的三维重建方法是通过在三维空间中描述其实体区域来表示其表面及内部形状,如图2所示。基于体素的三维重建在鲁棒性、重建效果上与传统三维重建方法相比有着自己獨特的优势,但是在存储上耗费较高并且图像的二维卷积扩展到三维图像计算量大。
Wu[7]提出了一个基于体素表示方法和深度学习的神经网络,用损失函数进行回归,该方法在基于深度学习的三维重建方面取得了突破性进展。在此基础之上Tatarchenko[8]提出了一种分割三维空间,将其递归细分为八个分叉空间的方法,在体素网格上预测更高分辨率的形状。
Stutz[9]首次提出了一种无监督学习的三维重建方法,该方法在不降低精确度的基础上对物体的体素模型进行补全,其主要依靠深度神经网络(DNN)的数据训练和线性优化。
Zhang[10] 设计了一种使用GAN 网络(Generative Adversarial Networks, GAN)三维重建方法,通过一个发生器G(Generator)和一个鉴别器D(Discriminator)对输入的图像进行判别与训练,随机生成三维模型,经过多次迭代最终得到精确度最高的三维模型。该方法生成的三位体素模型具有分辨率高、结构详细等优势。
虽然基于体素的表面表示方法进行三维重建有其独特的优势,但受限于显存消耗、存储占用等问题,近年来基于深度学习的三维重建研究更多关注于基于点云和曲面网格的神经网络。PointNet模型很大程度上解决了深度学习中基于体素的表面表示方法的问题,在此之后基于深度学习的三维重建训练和结果输出大都基于点云和曲面网格。
3 基于曲面网格的表面表示方法进行三维重建
基于曲面网格的表面表示方法目前使用最多的是投影网格测量法,投影网格测量法的主要流程是将网格投影到被测物体上,记录下此时的网格成像(称为测量图像),计算出每个网格的深度,建立三维坐标系来重建三维曲面。
相比于点云和体素的表面表示方法进行三维重建,基于曲面网格的表面表示方法进行三维重建能够避免显存占用问题,同时具有高精准度,高适应性等特点,并且可以呈现更好的细节。
在使用深度学习方法进行基于曲面网格表示的三维重建时,构建的神经网络模型通常以端到端的形式存在,通过对输入的二维图像进行网格投影得到深度、特征点等信息,构建形变网络,通过形变网格与池化层为椭球网格提供深度、特征点等信息,完成对输入图像的三维模型重建工作,该神经网络中的节点即为形变网格中的顶点。
近年来使用深度学习方法构建曲面网格实现三维重建取得了不错的进展,Simonyan[11]设计了一个VGG网络(Very Deep Convolutional Networks),通过小卷积核代替大卷积核,加深神经网络深度,提高了三维重建模型的精度。Pixel2mesh[12]模型是一种端到端的深度学习架构,采用由粗糙到精细的变换策略,将输入的图像通过特征提取转换为椭球网格,经过神经网络的逐步变形将椭球网格重建为物体的三维模型,整个变形过程稳定,信息损失小,提高了重建的精度。
4 基于隐式曲面的表面表示方法进行三维重建
在数学与计算机图像学中,隐式曲面是一种重要的表示方式,基于隐式曲面的表面表示方法进行三维重建主要是通过构建隐式曲面函数,通过函数来表示物体的二维或三维形状。由于隐式曲面函数的构建灵活,且能够表示任意复杂的物体,适用于图像的检测、变形、运算等方面。近年来在三维重建领域,由于隐式曲面函数能够很好地解决点云散乱模型,许多研究者开始关注在深度学习方法中构建隐式曲面函数来解决三维重建的问题。
现有的隐式曲面重建方法中,较为经典的重构方法有小波曲面重建算法、RBF曲面重建算法、Poisson 曲面重建算法、MPU曲面重建算法等。在此基础之上,Jiang[13]引入了一种将隐式解码器用作在模型上计算代码解码后提高匹配度的优化组件,该方法比稀疏点云实现重建具有更好的效果,适用性更广,可扩展性强。Chen[14]的团队提出了一种IM-NET的方法,该方法通过VAE+GAN的深度学习训练网络,在输入单视图实现三维建模过程中使用一种新的隐式曲面函数解码器替换传统的重建方式,在重建效果和时间上取得了较好的效果。
IF-Nets网络模型是近两年非常火热的研究热点,其原理是将点的学习转化为判断分类问题,用0或1标注曲面内或者曲面外,通过后期对标注的点进行分类处理实现模型曲面化和模型复原。IF-Nets的优势在于保留了图像输入中的细节,补全了形状的遮挡部分的细节,缺陷在于泛化性有待提高。近年新出现的基于递归神经网络模型的三维重建方法。该方法通过对图像提取特征信息,经过多层级结构编码,能够使得该神经网络模型本身学习到部件本身的拓扑和结构特征。
SAGNET模型是一种基于弱监督的结构感知生成模型,该方法用成对关系反映形状结构中的不同部分,能获得较好的视觉质量,在拓扑方面较为灵活。同样是采用解码器解开特征并重建三维模型,MDIF (多分辨率深度隐式函数)函数是一种可从深度图像中实现详细的解码器形状补全的函数,該模型观察区域的细节被准确地保留,而未观察区域则用可信的形状完成。
在最新的研究中,有研究者将迁移学习的方法引入三维重建当中,将图像中的三维点信息划分到几个区域,通过无监督的迁移学习方法训练网络,然后基于区域间的关系完成三维重建工作,使得三维重建问题转换成为二维问题。
5 总结与展望
5.1 总结
三维重建在制造业与逆向工程、影视、娱乐、医学等许多方面有着广泛的应用,不管是已有技术或方法在三维重建中应用或者是随着三维重建取得巨大进展而产生的许多新方法或算法,都体现了三维重建在未来的发展前景与市场潜力。
早期的三维扫描仪器价格昂贵、精度较低、相关的配套软件与方法不全面,使得处于起步阶段的三维重建工作与研究停留在处理阴影、重叠等问题。2010 年,Schmidt设计出Meshmixer后,三维重建的软件配套问题得到了很好的解决,促进了相关软件的开发与技术突破。
后期三维重建的研究重点更多放在了应用领域,如临床医学中通过对患者的身体构建三维模型,标识出患者的神经、血管、肿瘤等各个结构;文物保护工作中,通过构建虚拟化的三维仿真场景,能够让游客最大程度上感受到文物的原始样貌、古遗迹的还原场景等;另外在制造业中,通过三维重建方法构建所需零部件的模型,由计算机控制生产设备完成加工,实现了生产流程的全自动化,极大地降低了开发与生产成本。
随着人工智能技术的发展,在自动驾驶领域,对驾驶环境、道路、障碍物等的识别与三维重建是目前以及今后一个重要的研究课题与方向。三维扫描设备的轻量化、民用化是今后的一大发展趋势。
本文基于点云、体素、曲面网格、隐式曲面的这四类表面表示方法展开了综述,重点介绍了这四类方法的原理、发展过程与基于深度学习方法下的研究进展与成果。然后根据这四个分类详细讨论了每个表面表示方法的优缺点及重大改进,并对这些改进进行比较。使用深度学习方法进行三维重建是近年来计算机视觉下一个新的研究方向与重点,但是存在着方法凌乱、数据集体量小等问题。
5.2 展望
三维重建研究工作整体不够成熟,对于重建过程与结果的评价算法较少,如何全面地评价三维重建算法、模型、方法的存储占用、时间损耗、重建精度等是未来的一个发展方向。
在生活和生产应用当中,物体与场景所处的外部环境实时变化,现有的三维重建方法无法适用于所有的外部环境当中,现有的研究工作也都是设置了一个特殊环境对物体和场景进行三维重建。如何应对与处置实时变化的外部环境是今后三维重建研究当中的一个难点。
基于深度学习方法的三维重建中,由于需要大量数据集进行网络的训练,导致计算量较大,对计算机设备的要求较高,很难完成对图像数据的实时三维重建,如何在不降低重建效果的基础上缩减三维重建工作中的计算量是今后研究的重点。