王剑飞 林金花 王璐
摘 要:目前,随着深度传感器的更新发展,使得三维重建的在线方法得以实现.在线重建的难点在于如何能够在保证较好的重建效果和重建规模的前提下,实时地将多个动态重叠深度图转化成一个三维模型.针对这一问题,本文算法基于空间索引策略构建了一种存取高效的空间体素数据结构,改进了传统体积融合方法中的规则分层网格数据结构,对隐含表面数据进行实时存取与更新的同时,实现大尺度的在线三维重建.这些表面数据仅在观测时存储,并且高效地流入和流出索引表,实现了传感器运动过程中的在线场景重建.算法通过在GPU(Graphics Processing Pipeline)上完成深度图预处理,摄像姿态估计,深度图融合和表面绘制几个核心阶段,实现对细粒度的细节和大尺度的环境进行交互式实时重建.通过实验表明,改进后的重建系统能够在保证重建质量与重建性能的同時,平均重建时间为21.6 ms,ICP姿态估计15次,用时8.0 ms,平均帧绘制速率提高13.3%,实现了对大尺度场景的实时三维重建.
关键词:在线; 空间索引; 数据结构; GPU; 实时重建
中图分类号:TP391.41文献标志码:A
Abstract:At present, with the development of the depth sensor, the on-line method of 3D reconstruction is realized. The difficulty of the online reconstruction is how to convert multiple dynamic overlapping depth maps into a three-dimensional model in real time under the premise of better reconstruction effect and reconstruction scale. To solve this problem, this paper constructed an efficient spatial voxel data structure based on the spatial index strategy, improving the hierarchical grid data structure of the traditional volume fusion method and realizing the real-time access to the hidden surface data. These surface data are only stored during the observation to achieve the sensor movement in the process of online scene reconstruction. The algorithm performs interactive real-time reconstruction of fine-grained detail and large-scale environment by completing several core stages, such as depth map preprocessing, camera pose estimation, depth map fusion and surface rendering, on the GPU (Graphics Processing Pipeline). The experimental results show that the average reconstruction time is 21.6 ms, the ICP pose estimation is 15 times, and the average frame rendering rate is increased by 13.3% when the reconstruction time is 8.0 ms and the reconstruction time is 21.6 ms, realizing the real - time 3D reconstruction of large scale scenes.
Key words:online; spatial index; data structure; GPU; real-time reconstruction
三维重建是计算机视觉与图形学的重要研究领域,随着深度摄像机的广泛使用,使得三维重建获得了新的发展势头.由于这些设备能够实时输出带有噪声的深度图,使得最近的研究重点是如何使用这种深度摄像机获得在线表面重建.在线表面重建在计算机交互式应用领域表现良好,例如,增强现实(AR),其中真实世界的几何信息可以与3D(three dimension)图形融合并实时渲染;自主指导机器人重建及其对周围环境的快速响应;或者在3D打印过程中实现向用户提供即时反馈[1-2].
传统重建方法[3-4]大多基于一组完整的三维点坐标实现重建,而在线重建是将多个重叠深度图增量融合成一个不断精进的三维表示.为了达到较好的实时重建性能,重建质量与重建规模不受影响,出现了许多先进的基于GPU硬件加速的在线方法,这些方法通常采用不同类型的底层数据结构,在重建速度、规模和质量方面都具有不同程度的相互抵偿.
参数重建方法[5-6]简单地平均重叠样本,并通过对表面拓扑的简单假设来实现点和局部多边形的连接.同时出现的网格拉链方法[7]为每个表面区域选择一个深度图,并去除重叠区域中的冗余三角形进而实现网格缝合.这些方法通过点的局部平均化来处理噪声,但是在异常值和高曲率的区域表现不佳.因此出现了多种非直连多边形网格的三维重建方法.
基于点的重建方法[8]通过合并重叠点来实现重建,从而避免推断连通性.由于大多数深度传感器的输出是三维点样本,使得基于点的三维重建更加容易,例如针对单个小对象的扫描系统[9].由于重建规模较小,使得小规模高质量的三维重建得以实现.较大尺度场景的三维重建通常需要降低重建速度或质量来实现[10].这种方法使用简单的非结构化表示,可以紧密地映射到深度传感器,但是缺乏直接重建表面的能力.对小物体的高质量在线重建已经得以实现[11],但是大尺度重建需要以重建质量或速度为代价[12].
基于高度图的表示方法[13]支持连接表面数据的高效压缩,使用更紧凑的2.5维度的连续表面表示来实现三维重建,这种方法尤其适用于大型建筑物的重建[14],并且可以有效扩展到更大尺度的场景,但是无法实现对复杂模型的三维重建.
基于体积数据结构的重建方法(VRM,Volume Reconstruction Method)对三角测量的传感器噪声特性进行有效估计,支持增量更新,不对表面数据进行拓扑压缩,对于给定的样本进行累加平均,可以得到较好的重建效果和重建速度[15-17].然而,这种方法依赖于存取低效的规则体素网格,反而限制了重建规模.
为解决体积重建方法的空间限制问题,出现了多种重建方法.Keller等人[18]使用基于点的表示方法来加强体积融合的质量,虽然摆脱了空间数据结构的限制,但重建质量随之降低[19].
同时出现了移动体积方法[20],扩展了基于深度传感器融合的GPU渲染管线[21].这种方法在摄像机运动过程中使用GPU管线并行处理体素流,释放了用于存储新近数据的空间.然而这些数据流是单向有损的,即当表面数据被压缩到网格时,无法从主机回流到GPU,并且算法仍然使用规则网格结构,这意味着数据流必须保持较小,才能确保精细的重建质量.这使得重建被限制在邻近幾何体的场景重建,由深度传感器得到的全范围数据没有得到充分利用.
规则体素网格的限制使得许多研究人员进一步寻求更加有效的体积数据结构.例如,基于稀疏空间体素的体积表示方法[22],用于大数据集的外核流架构[23].这些分层数据结构被应用到三维重建的难点在于:在重建过程中需要对基础数据进行实时更新.例如,Zeng等人[24]实现了一个9到10级的八叉树结构,将传感器融合管线扩展到8m*8m*2m的室内空间.Ptzold等人[25]进一步提出了一种基于GPU的八叉树体素网格表示方法,实现了对无网格外核体素的实时重建.然而,这些方法需要构建复杂的八叉树结构,计算复杂度随之增加,指针访问的额外开销较大[26-27].
基于深度传感器融合的三维重建方法使用体积重建方法中的规则体素网格来重建表面,存储空间占用量较大,并需要同时密集地表示空白的空间和表面,重建的难点是如何在不降低质量的情况下重建大尺度的场景.
针对分层数据结构在体积融合过程中存在的计算过度复杂的问题,本文提出了一种新的实时表面重建方法,支持大尺度高质量的三维重建.本文算法兼具体积方法的优点,但不依赖于受存储约束的体素网格,同时无需分层数据结构的计算开销.与传统分层数据结构不同,本文算法基于一种存取高效的空间索引策略,对隐含表面数据进行实时融合.表面数据被密集存储在观测单元格中,同时数据可以高效地流入或流出索引表,从而在传感器运动过程中进一步实现可伸缩重建.本文给出了一种基于空间索引策略的空间体素数据结构,通过对基础数据的不断更新,实现了对细粒度和大尺度场景的交互式重建.
1 相关概念与理论
体积重建方法(VRM,Volume Reconstruction Method)将深度图转换成带符号的距离场,通过叠加平均得到一个规则体素网格,并使用等值面多边形或光线投射来生成隐式函数的零级集合,从中提取最终的重建表面,实现对三维物体的重建.
体积重建方法在体数据结构中存储一个隐式带符号距离场(SDF,Signed Distance Field),这里假设输入一组深度图,且有一个规则的密集体素网格,深度传感器在网格的中心点处被初始化,并使用ICP变量[28]来估计传感器的刚性六自由度(6DoF,Six Degree-of-Freedom).网格中的每个体素都包含两个数值:带符号距离和权值.对于单个的深度图,传感器均匀地扫描物体表面,剔除掉视锥体以外的体素,将全部体素的中心点投影到深度图中,接着更新体数据结构中的SDF值,实现深度图到网格的数据融合.投影到同一像素点的所有体素成为深度样本的贡献分支.每个体素都存储了一个从体素中心到观测表面测量的带符号距离值,其中带符号距离为正值,表示观测在前,反之为负,零值表示在观测表面的边界面.
为了降低计算成本,VRM方法引入了截断式带符号距离场(TSDF,Truncated Signed Distance Field)概念,仅在被观测表面周围的区域中存储带符号距离.该区域的尺寸可以调节,并将传感器噪声近似表示成一个基于深度的高斯方差.只有该区域内的体素的TSDF值被加权平均后更新,从而获得一个表面估计.最后,作为每个深度样本的贡献分支,但在截断区域之外的体素被明确的标记为自由空间.
VRM方法截断表面周围的SDF,存储在规则体素网格中的大部分数据被标记为自由空间或不可见空间.因此问题的关键是:基于TSDF表示方法的稀疏特性建立一种存取高效的数据结构.
本文算法对传统的体积重建方法进行扩充,通过建立一种快速有效的空间查找数据结构,递增地将噪声深度图融合到指定存储单元,实现对隐含表面数据的存储、访问和更新,在保证重建质量与重建速度的同时,实现了对三维曲面的大尺度重建.
2 本文算法概述
本文算法的核心是建立一个基于空间索引策略[29]的空间体素数据结构,并在传感器运动过程中,使用GPU渲染管线实现对大尺度场景的实时重建.由于重建物体的几何特性是未知的并且连续变化的,本文提出的空间体素数据结构能够对TSDF进行动态存储与更新,可以高效处理索引表的冲突问题,进而实现可伸缩的体积重建过程.本文提出的空间体素数据结构的核心功能主要有以下几个方面: