一种基于弹性融合的改进三维重建算法

2021-07-03 03:52李帅
现代计算机 2021年12期
关键词:回环位姿三维重建

李帅

(四川大学计算机学院,成都610065)

0 引言

现在深度相机的使用已经变得越来越普遍,例如VR/AR、机器人导航、影视动画、室内装修设计、公安系统现场保留等。利用深度相机可以直接获取三维场景数据,例如人体模型或者空间物品。与之前传统的三维重建不同,在现在需求是更强调实时性,而且也不需要太多的前置条件和数据的后置加工再处理。已经有一些相关的工作,如Newcombe[1]团队于2011 年首先提出基于RGB-D 传感器Kinect1 进行室内实时三维重建算法KinectFusion[1],开启动了实时三维重建的一条新思路,打开了一个新的局面,后续的Kintinuous[2]、Voxel Hasing[4]、ElasticFusion[3]、BundleFusion[5]等各种不同的室内场景重建算法。所有上面的算法都是在刚性变换的条件下进行的,最初的三维重建都是利用深度信息进行位姿估计来对相机进行定位,并且利用GPU(Graph⁃ics Processing Unit)的高速并行的特点来对矩阵和图形的计算进行加速,不同于一般的SLAM[12]算法,Kinect⁃Fusion[1]算法基于体素块函数TSDF(Truncated Signed-Distance Function)[1]进行描述三维场景,首次实现了基于深度相机的室内场景重建,并加入了最近点迭代算法ICPA(Iterative Closet Point Algorithm)[10]以及使用光线投影的技术,实验表明,在局部且只具有少数回环的场景下重建效果比较好,但是其具有一定的局限性:①基于TSDF 的重建模型,因为是空间体素块,很多空间的范围并没有实际的点,但是该算法却要求都要被计算在内(因为光线投影算法需要按照一定的尺度进行遍历),另外,空间体素块过大会导致存储空间利用率很低,甚至很多稍微大点的场景就无法用体素块进行表示,进一步的,范围较大则也就出现建图效果不可逆转的情况。甚至无法完成,或者建图有大量的破洞;②因为是使用ICPA[10]算法进行相机位姿的估计,这非常受限于场景中几何特征的复杂度以及外界光照环境的影响,导致估计位姿失效或者偏差交大;③因为整个重建过程没有回环检测,也就不能实现基于闭环的场景融合优化策略;④第二和第三点中因为定位失败,导致很多时候无法进行重定位,误差就会逐步累加,导致从异常时间节点开始后的所有场景的重建一直失败。为了解决存在的问题,后来的研究者们进行了其他的一系列尝试和研究工作。包括如下:①为了实现回环检测,就是要查找关键帧之间的相似率,就要进行位姿图的优化,提出用词袋法DBoW(Distributed Bag of Words)检测回环帧,实质就是将关键帧抽象成一个单词向量进行对比;②为了减小因为使用TSDF 模型带来的大量空间中不需要进行融合而带来的时间开销和空间开销成本,提出了只让被渲染的场景跟随相机进行融合计算的参与,目的是为了减少开销;③比较备受关注的一个是弹性融合[3],因为这可以满足在一个大规模的三维场景下,舍弃基于网格空间中必须要占用的大量的空间资源,使用的一种基于面元(surfel[7-8,11])数据结构的模型,每一个数据都包含空间位置、法向量、纹理信息以及对应的时间戳,然后将这些信息直接作用于面元上,而不是像直接通过位姿图作用于三维网格那样。

1 弹性融合算法

就像其他的基于RGB-D 算法一样,弹性融合也借鉴了KinectFusion 算法,主体思想和流程大致相同,但是采取的是不同的数据存储模型和渲染模型。后文将详细说明。另外,KinectFusion 实现的是一个稠密的视觉SLAM,在尽可能发挥GPU 的计算能力的前提下,让计算速度达到实时性,渲染效果呈现出一个近视真实场景的画面。弹性融合使用的是基于面元模型surfel的数据结构,也同样发挥出GPU 的最大计算能力,弹性融合使用的位姿估计并不是简单的ICP 算法做配准,因为要考虑到场景中的闭环情况,需要通过ICP 配准检测局部回环和随机蕨(Random Ferns)来检测全局回环,同时可以有效解决小的区域内的循环往复的运动情况,也就是重影的情况。原来的算法框架如图1所示。

图1 融合算法流程

如上所示,整个流程可以分为以下三个主要部分:①使用RGB-D 数据计算位姿,包括几何位姿和光度位姿;②如果误差大于给定的阈值,就要进行重定位算法,如果小于一定阈值就进入下一环节;③利用随机蕨数据库(Random Ferns Databases)进行全局回环检测,如果存在全局回环,就要加入新的帧到随机蕨数据库,如果不存在就直接进行融合。

2 基于弹性融合改进

2.1 联合位姿改进

弹性融合采用ICP 进行配准点云并联合求解最小化光度误差,求出变换位姿,然而室内存在很多的平面的场景,例如:桌子、地面、天花板、沙发;一种很普遍的情况,例如天花-桌面、桌面-沙发。当发生大尺度的切换而且又是场景变化又比较大的时候,虽然在每一局部内变化平稳,但是关键帧之间会出现位姿突变的情况,与实际不符,就直接导致这个配准过程失败。而且弹性融合的位姿跟踪过程中,总是将当前得到的帧对齐到上一个关键帧,这很容易把帧匹配的误差传递下去,导致后面的帧出现错乱,并出现建模出错的情况。

图2 是改进的联合位姿框架图。

图2 改进的联合位姿框架

(1)深度和彩色信息位姿估计

(2)位姿的深度估计

图3 点到平面之间的距离

其中ωr=0.1。

(4)改进的联合位姿估计

因为场景的复杂性,深度信息和彩色信息都有不同的比重,一方面,深度信息的缺乏也会带来很大的问题。所以要综合考虑权重因子,不能把ωr当做一个定值,而是要自适应的变化,随着环境的变化而变化,于是就要考虑因素动态的权重因子,一方面既要跟深度数据有关,又要跟彩色信息有关;另一方面,既要跟深度数据的总匹配点数有关,又要跟彩色数据的总匹配数有关,因为在实际的场景中,都要综合考虑深度和彩色数据的比例已经匹配总数情况来综合计算权重因子。于是修改ωr联合位姿权重,将定值改为配准的总纹理除以总纹理然后求解根号值,具体值要根据配准的彩色图数据来定,这种光度一致性的联合位姿估计中,是采取了动态的计算方法,计算最终所得权重,贴近实际场景中真实的情况。

2.2 随机蕨改进

(1)随机蕨算法介绍

输入一幅RGB-D 图,可以根据随机蕨(Random Ferns)[6,9,11]算法求得一个编码值,每一帧都有一个编码值,我们称之为Blocks,根据当前帧的Blocks 可以求得和之前的已经求得的帧list 之间的相似性,然后根据相似度和之前预先设定的阈值进行比较,判断是否加入关键帧或是重新定位计算相机的姿态。每幅图有m 个blocks 编码,每个block 有n 个fern,在本文中,使用的n=4,刚好分别对应RGB-D 四个通道,所以n=4,ferns的计算公式如下所示:

(2)随机蕨改进算法

在上面的方法中,因为所有的随机蕨[6,9,11]的编码的值在最开始都是一次随机生成的,这包括像素通道的位置,以及该位置对应的RGB-D 值的生成都是具有随机性,不满足一定规律,也和实际的场景无关,而且任意两帧之间的相似度的计算都是通过跟阈值的大小进行比较,如果大于等于该位置的阈值就为1,如果小于该位置的阈值就为0,而最终的相似度的判断都是看相等的总次数和随机蕨节点的总次数做对比。

基于上述的分析,本文提出改进的随机蕨算法,该算法兼顾考虑每一个像素位置的值的可接受域(置信区间)来判断该位置的block 是否相等,而不是仅仅看该位置的RGB-D 值是否大于某一个实现给定的数值。改进的随机蕨函数的定义为:

其中,σ是阈值和上面的含义以及初始化方式都是一样的,δ是新引进的参数,表示是一个可以接受的偏差,如果求得该像素点的值和预先给定的值在这个偏差之内,如果以上的判断公式成立,说明该点的值是可以被考虑判定为真值,否则为假。

2.3 试验分析

实验数据是使用的ICL-NUIM 数据集,实验平台是:操作系统Ubuntu 16.04 64 位,处理器CPU Intel Core i3-8100@3.60GHz×4,图形处理显卡NVIDIA Ge⁃Force GTX1060 3GB/PCIe/SSE2。主要是基于对输出的信息判断误差大小,一个是位姿配准的误差大小,另一种是重建的模型的视觉感官上的误差大小。对于第一种在某些帧的位姿出现偏差很大的情况,在这些帧的时刻t 就有一个突变,如图4-图5 所示。

图4 相对轨迹误差

由图所示,图4 存在某些突变的点,某一些帧误差比较大;图5 真实轨迹出现最终的误差情况。基于此,本实验阶段大致分析了位姿配准时的数据结果,并结合联合RGB-D 的彩色像素和深度像图对应的配准总是分析误差。

图5 绝对轨迹误差

对几组数据进行测试,既考虑模型重建效果,又与相机的轨迹进行分析,这里使用dyson.klg 的RGB-D数据集进行实时三维重建,从图6-7 可以看到,对于垃圾桶的重建,优化后的算法完全消除了重影的现象;对于位姿产生突变后,墙角椅子的重建效果也得到了修正。

如图所示,图6 是原来的三维重建效果较差的时候,有重影现象和错乱数据的情况,图7 是改进的融合方案,界面比较清楚且不具有重影现象;对位姿做了联合优化改进后的重建效果,该场景重建后的效果非常清楚也非常全面。

图6

图7

3 结语

本文主要针对室内的实时三维重建中出现的重影和在回环检测中出现的错误进行算法的改进和优化,考虑到实际场景中相机来回移动,循环往复产生的闭环问题,第一部分是位姿突变导致后续的联合深度和彩色配准出现异常时间帧点误差来分析,第二部分是根据重建出来的效果进行视觉上的判断,发现用改进的随机蕨算法值域的范围来限定真值或者价值更加有效而且合理,事实证明,改进的随机蕨算法确实能进一步提升重建的效果。但是这还是要依赖于精确的位姿配准算法的结果。然而在一些几何场景中,如果深度或者几何信息不够丰富或者不具备足够的区分度,重建效果还是会受到一些影响。相信更远的研究在这方面仍然有可改进的空间。另外,如果场景中出现一些流体的区域的话,重建效果也是无法逼近真实的情况,这方面的工作或许在将来更有深远的意义。

猜你喜欢
回环位姿三维重建
基于PLC的六自由度焊接机器人手臂设计与应用
嘟嘟闯关记
基于位置依赖的密集融合的6D位姿估计方法
曲柄摇杆机构的动力学仿真
《中国现代诗歌散文欣赏》之新诗教学多样性探索
互联网全息位置地图迭加协议与建模制图技术
品析“飞利浦公司”基于单目视觉的三维重建技术专利
无人机影像在文物建筑保护中的应用
光编码技术在犯罪现场重建中的应用
大自然的音籁 灵魂的交响