引导语:本文为“3D视觉创新应用(三维重建)竞赛”作品集系列之一,该作品由来自湖南大学团队完成,团队成员:彭以平,陶梓铭,袁毓聪,王世勋,谈畅。全文约3088个字,阅读时长约8分钟,旨在为更多开发者提供学习参考。
一、背景介绍
在智能制造、AR、机器人、室内导航等领域,三维重建都有很广泛的应用前景。随着消费级RGB-D相机的普及,三维重建的应用场景也得到了进一步的扩展。奥比中光自主研发的深度相机Astra Pro的成本相对较低,同时也可以方便、快捷地对物体进行3D成像,并且具有精度高的优点。针对三维重建相关技术进行研究和加以应用,必将极大程度地促进计算机视觉等领域的发展,并进一步深度影响工业生产活动以及人们的生活方式。
应用场景
目前,室外场景的导航已经非常普及,而诸如火车站、商场、超市等多楼层室内场所通常规模很大,造成卫星定位信号衰减,很难做到精确定位和导航。并且,该类场所的内部路线很复杂,人们会有较强的室内导航需求。基于蓝牙信标和WiFi信号的室内定位需要在室内场所部署和维护基站,并且建筑同样会对信号进行衰减。对多楼层的室内环境进行三维重建,建立室内地图,可以进行基于视觉的室内定位、导航,具有精度高、易维护等优点。
此外,混合现实(MR)、室内装修等领域需要三维模型为基础,通过三维重建得到的室内场景模型可以很大程度地提高应用的拟真度,提供更好的用户体验。
项目概述
本项目的计算平台和RGB-D相机分别使用奥比中光研发的Zora P1开发板和Astra Pro深度相机。基于ORB-SLAM2框架进行位姿估计并进行扩展,构建了一套完整的多楼层大型室内环境稠密重建的系统,完成了室内三维模型的获取,重点对以下方面进行了考虑:
全局一致性模型。相机位姿估计的误差会随着扫描的进行而累积,若不对累计误差进行消除,重建的三维模型将出现失真。为了获取全局一致的三维模型,本项目使用BoW(Bag-of-Words)进行回环检测,使用位姿图优化和全局BA(Bundle Adjustment)对位姿漂移和地图点坐标误差进行修正。
模型更新。三维重建输入的是图像序列,不仅需要算法能够选择关键帧,而且还需要在检测到新关键帧时,能够根据其位姿融合到三维模型中。我们使用TSDF(truncated signed distance function)地图来分别对三维模型进行基于体素的融合和更新。
高质量表面重建。RGB-D相机获取的是深度图,根据相机内参生成点云,然而完成三维重建最终需要获得连续的表面而非离散的三维点。我们采用Marching Cube算法对离散的空间点进行重建获得三角面片。
二、系统构成
本项目硬件系统由Zora P1开发板、Astra Pro深度相机、11.6寸液晶屏,以及为其供电的锂电池和逆变器组成,如图 1所示。
Zora P1开发板具有2个USB3.0和USB2.0接口,且具有MIPI-CSI接口和以太网口等,接口丰富,可以方便地连接相机等外设。开发板自带Armbian操作系统,该系统为ARM开发板专门发行并重新编译,因此使用Ubuntu的开发者也可以快速上手。Astro Pro深度相机的3D成像方式为单目结构光,适用于近距离和中远距离的室内场景,具有精度高、功耗低等优点。可以基于该相机实现多种功能,例如面部识别,手势识别,人体跟踪,三维测量,环境感知和三维地图重建,可应用于客厅娱乐、安防监控、测量、3D扫描、体感交互、商显等多种场景。三、算法概述
本项目主要实现多楼层大型室内环境的三维重建。以ORB-SLAM2开源算法作为基础框架,通过ORB特征描述子获取包含相机位姿、时间戳在内的关键帧信息,根据关键帧信息匹配对应的位姿、RGB和深度信息后通过TSDF实现三维点云重建。为复现真实的、带纹理且空间连续的三维环境,本算法采用统计滤波优化点云的质量,通过Marching Cube算法在不丢失环境细节的前提下实现三角面片的重建。本算法的具体设计描述如下所述:S1:本算法在ORB-SLAM2框架上进行扩展,构建了一套完整的多楼层大型室内环境稠密重建的系统。原理示意图如图 2所示:S2:在ORB-SLAM2的框架中,通过ORB特征描述子实现跟踪、局部建图与闭环功能,根据制定的规则确定关键帧,并在地图构建的同时插入关键帧并进行筛选,最后获取稠密三维重建所需的关键帧信息。S3:根据筛选后的关键帧信息,对位姿、RGB图、深度图及时间戳信息进行匹配。在传统点云融合与重建中,大多优先通过深度图与RGB图计算点云数据再根据位姿信息进行点云与点云之间的融合,但这种方式存在计算复杂度高、点云累加所引起的密度爆炸以及位姿计算的累计误差等缺陷。为避免上述问题,本算法采用TSDF根据关键帧信息对点云数据集进行重建,通过预先构建一个三维立体空间来实现可控的点云密度并减少不必要的重复计算。S4:对重建后的三维环境点云进行统计滤波以优化点云质量。从数据采集到重建的过程中,尽管在ORB-SLAM2框架中通过ORB描述子避免噪点和离群点对位姿估计的影响,但由于传感器采集的数据本身存在噪点和离群点,重建结果将不可避免的引入这些所谓的‘坏点’。为解决上述重建后点云的质量问题,本算法通过对点云空间中任意点的邻域进行统计学分析,绘制邻域特征表征的统计直方图,根据所谓‘坏点’与正常点存在的特征差异对直方图进行裁剪,实现对点云的统计滤波。S5:通过Marching Cube对重建后的点云实现三角面片重建。由于点云数据在三维空间为离散表示,难以直观反映环境的纹理,在保留纹理的细节的前提下,以Marching Cube复现真实的带纹理的多楼层大型室内环境,最终实现完整的多楼层大型室内环境稠密重建系统。四、技术优势分析
基于ORB特征点的视觉前端
ORB特征点由改进的FAST关键点和BRIEF描述子组成,具有旋转不变性和尺度不变性。相比于SIFT和SURF等特征点,ORB特征点拥有计算耗时低,在CPU上耗时小于33ms(30FPS),实时性高的优点。FAST关键点对中心点周围像素的灰度值与中心点灰度值进行比较,最后使用非极大值抑制来避免角点在一定区域内过于稠密的现象。由于步骤简单,FAST关键点可以满足视觉前端所需的实时性要求。此外,通过构建图像金字塔,在金字塔的各层进行FAST关键点检测可以满足尺度不变性的需求。采用灰度质心法则可以构建主方向,从而实现旋转不变性。BRIEF描述子采用二进制的描述向量对关键点的周围像素进行描述,特异性强,适用于特征匹配和基于外观的场景识别来进行回环检测。基于TSDF的点云融合
针对传统的深度图到点云融合步骤存在点云密度爆炸、计算复杂及累计误差等缺陷,本项目利用选取的关键帧信息匹配位姿、RGB图和深度图,通过截断有符号距离函数TSDF(Truncated Signed Distance Function)实现三维点云融合。TSDF地图是基于体素的重建方法,由三维体素组成一个三维立方体,如图 3所示。TSDF地图可以运行在GPU上,各个体素由GPU并行更新,所以具有更新速度快的优点,可以满足实时重建的要求。其每个体素内存的是-1到1的值,负数表示该体素在物体内部,正数表示该体素在物体内部,且绝对值的越大代表距离物体表面越远。由此,点云经过TSDF地图融合后,提取表面的过程就是提取零等值面的过程。基于Marching Cube算法的表面重建
点云数据在三维空间中为离散表示,对TSDF地图使用移动立方体(Marching Cube)算法来对等值面进行提取,实现三角面片重建,复现真实的带纹理的多楼层大型室内环境。Marching Cube算法基本思想是逐个处理标量场中的体素,分离出与等值面相交的体素,采用插值计算出等值面与立方体边的交点。根据立方体每一顶点与等值面的相对位置,将等值面与立方体边的交点按一定方式连接生成等值面,作为等值面在该立方体内的一个逼近表示。每个体素的8个顶点的值各有高于等值面和低于等值面2个状态,因此共有256个状态。在考虑旋转和发射对称性时,总共有15种基本模式,如图 4所示。五、测试结果
我们使用图 1中的硬件系统,以ORB-SLAM2开源算法作为基础框架,进行基于ORB特征点的视觉前端和包括位姿图优化和全局BA的后端。随后提取图 2中由时间戳、位姿、RGB和深度图组成的匹配信息对,采用TSDF融合,并使用Marching Cube算法重建出三角面片,构建了一套完整的多楼层大型室内环境稠密重建的系统。重建结果如图 5所示。
长按关注奥比中光3D视觉开发者社区
点击阅读原文,了解该方案的更多详情。