留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

一种改进匹配点对选取策略的ElasticFusion室内三维重建算法

王玮琦 游雄 杨剑 李钦

王玮琦, 游雄, 杨剑, 李钦. 一种改进匹配点对选取策略的ElasticFusion室内三维重建算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278
引用本文: 王玮琦, 游雄, 杨剑, 李钦. 一种改进匹配点对选取策略的ElasticFusion室内三维重建算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278
WANG Weiqi, YOU Xiong, YANG Jian, LI Qin. ElasticFusion for Indoor 3D Reconstruction with an Improved Matching Points Selection Strategy[J]. Geomatics and Information Science of Wuhan University, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278
Citation: WANG Weiqi, YOU Xiong, YANG Jian, LI Qin. ElasticFusion for Indoor 3D Reconstruction with an Improved Matching Points Selection Strategy[J]. Geomatics and Information Science of Wuhan University, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278

一种改进匹配点对选取策略的ElasticFusion室内三维重建算法

doi: 10.13203/j.whugis20180278
基金项目: 

国家重点研发计划 2017YFB0503500

河南省科技创新计划 142101510005

国家自然科学基金青年基金 41801317

详细信息
    作者简介:

    王玮琦, 硕士生, 主要从事机器人地图方向研究。809741461@qq.com

    通讯作者: 游雄, 博士, 教授。youarexiong@163.com
  • 中图分类号: P237;TP391

ElasticFusion for Indoor 3D Reconstruction with an Improved Matching Points Selection Strategy

Funds: 

The National Key Research and Development Program of China 2017YFB0503500

the Project of Science and Technology Innovation of Henan Province 142101510005

Youth Program of the National Natural Science Foundation of China 41801317

More Information
  • 摘要: 对室内场景进行实时高质量的三维重建是机器人、增强现实等领域关注的重点。目前基于RGB-D传感器的三维重建方法存在局部模型重建效果差、点云模型包含孔洞等问题。而影响三维模型重建效果的主要因素有两个, 一是由点云配准解算出的位姿参数精度, 二是闭环检测准确程度。对此, 在保证算法实时性的基础上, 通过改进迭代最近点算法(iterative closest point algorithm, ICP)中匹配点的选取策略, 提升模型重建效果。并利用径向基函数构建隐式曲面的方式对点云模型中的孔洞进行事后修补。选用ICL-NUIM等公开数据集进行实验验证, 结果表明, 改进后的算法在模型重建效果以及相机轨迹估计方面均有显著提升。
  • 图  1  ElasticFusion算法流程图

    Figure  1.  Flowchart of the ElasticFusion Algorithm

    图  2  投影法选取匹配点示意图

    Figure  2.  Illustration of Search of the Matching Points of the Given Pose Points Using Projection Method

    图  3  点到平面距离示意图

    Figure  3.  Illustration of the Distance from the Given Pose Points to the Current Plane

    图  4  基于不同圆心选取匹配点示意图

    Figure  4.  Illustration of Search of Matching Points Using Circles with Different Centers

    图  5  无初始匹配点时选取匹配点示意图

    Figure  5.  Illustration of Search of Matching Points Without an Initial Matching Point

    图  6  点云平行情况示意图

    Figure  6.  Illustration of Search of Matching Points when Parallel Point Clouds Exist

    图  7  利用dyson_lab数据实验对比图

    Figure  7.  Comparison Results Using dyson_lab Data

    图  8  使用lr_kt0数据实验对比图

    Figure  8.  Comparison Results Using lr_kt0 Data

    图  9  lr_kt0数据相机轨迹对比图

    Figure  9.  Comparison Chart of the Camera Trajectories Using lr_kt0 Data

    图  10  使用lr_kt1数据实验对比图

    Figure  10.  Comparison Results Using lr_kt1 Data

    图  11  使用lr_kt1数据的相机轨迹对比图

    Figure  11.  Comparison Chart of the Camera Trajectories Using lr_kt1 Data

    图  12  使用lr_kt3数据实验对比图

    Figure  12.  The Comparison Results Using lr_kt3 Data

    图  13  使用lr_kt3数据的相机轨迹对比图

    Figure  13.  Comparison Chart of the Camera Trajectories Using lr_kt3 Data

    图  14  平坦区域点云孔洞修补实验对比图

    Figure  14.  The Comparison Results of Points Cloud Hole Repairing in the Flat Area

    图  15  因物体遮挡产生的点云孔洞修补实验对比图

    Figure  15.  Comparison Results of Point Clouds Hole Repairing Caused by Object Occlusion

  • [1] Mur-Artal R, Montiel J M M, Tardós J D. ORB-SLAM: A Versatile and Accurate Monocular SLAM System[J]. IEEE Transactions on Robotics, 2017, 31(5):1 147-1 163 http://cn.bing.com/academic/profile?id=4ae31657420bf6f1d45c20559882065e&encoded=0&v=paper_preview&mkt=zh-cn
    [2] Engel J, Schöps T, Cremers D. LSD-SLAM: Large-Scale Direct Monocular SLAM[C].European Conference on Computer Vision, Cham, Zurich, Switzerland, 2014
    [3] Forster C, Zhang Z, Gassner M, et al. SVO: Semidirect Visual Odometry for Monocular and Multicamera Systems[J].IEEE Transactions on Robotics, 2017, 33(2):249-265 doi:  10.1109/TRO.2016.2623335
    [4] Newcombe R A, Izadi S, Hilliges O, et al. KinectFusion: Real-Time Dense Surface Mapping and Tracking[C]. IEEE International Symposium on Mixed and Augmented Reality, Switzerland, 2011
    [5] Whelan T, Kaess M, Fallon M, et al. Kintinuous: Spatially Extended KinectFusion[J]. Robotics & Autonomous Systems, 2012, 69(C):3-14
    [6] Whelan T, Leutenegger S, Moreno R S, et al. ElasticFusion: Dense SLAM Without a Pose Graph[C]. Robotics: Science and Systems, Rome, Italy, 2015
    [7] Izadi S, Stamminger M. Real-Time 3D Reconstruction at Scale Using Voxel Hashing[J]. ACM Transactions on Graphics, 2013, 32(6):1-11
    [8] Dai A, Izadi S, Theobalt C. BundleFusion: Real-Time Globally Consistent 3D Reconstruction Using On-the-Fly Surface Re-integration[J]. ACM Transactions on Graphics, 2017, 36(3): Article 24
    [9] Zeng M, Zhao F, Zheng J, et al. A Memory-Efficient KinectFusion Using Octree[C]. International Conference on Computational Visual Media, Beijing, China, 2012
    [10] 朱笑笑, 曹其新, 杨扬, 等.一种改进的KinectFusion三维重构算法[J].机器人, 2014, 36(2):129-136 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=jqr201402001

    Zhu Xiaoxiao, Cao Qixin, Yang Yang, et al. An Improved KinectFusion 3D Reconstruction Algorithm[J].Robot, 2014, 36(2):129-136 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=jqr201402001
    [11] 叶勤, 姚亚会, 桂坡坡.基于极线及共面约束条件的Kinect点云配准方法[J].武汉大学学报·信息科学版, 2017, 42(9):1 271-1 277 doi:  10.13203/j.whugis20150362

    Ye Qin, Yao Yahui, Gui Popo. Kinect Point Cloud Registration Method Based on Epipolar and Point-to-Plane Constraints[J]. Geomatics and Information Science of Wuhan University, 2017, 42(9):1 271-1 277 doi:  10.13203/j.whugis20150362
    [12] Newcombe R A, Fox D, Seitz S M. DynamicFusion: Reconstruction and Tracking of Non-rigid Scenes in Real-Time[C]. IEEE Computer Vision and Pattern Recognition, Boston, MA, USA, 2015
    [13] 刘浩敏, 章国锋, 鲍虎军.基于单目视觉的同时定位与地图构建方法综述[J].计算机辅助设计与图形学学报, 2016, 28(6):855-868 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=jsjfzsjytxxxb201606001

    Liu Haomin, Zhang Guofeng, Bao Hujun. A Survey of Monocular Simultaneous Localization and Mapping[J]. Journal of Computer-Aided Design & Computer Graphics, 2016, 28(6):855-868 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=jsjfzsjytxxxb201606001
    [14] Glocker B, Shotton J, Criminisi A, et al. Real-Time RGB-D Camera Relocalization via Randomized Ferns for Keyframe Encoding[J]. IEEE Trans Vis Comput Graph, 2015, 21(5):571-583 doi:  10.1109/TVCG.2014.2360403
    [15] Rusinkiewicz S. Efficient Variant of the ICP Algorithm[C]. 3rd International and Conference on 3D Digital Imaging and Modeling, Quebec City, Canada, 2001
    [16] 谭歆. KinectFusion三维重建的再优化[D].杭州: 浙江大学, 2015

    Tan Xin. Global Optimization for 3D Reconstruction Based on KinectFusion[D]. Hangzhou: Zhejiang University, 2015
    [17] 刘咏梅, 李凤霞, 雷正朝, 等.基于边界特征增长的孔洞修补算法[J].系统仿真学报, 2014, 26(9):1 916-1 921 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=xtfzxb201409008

    Liu Yongmei, Li Fengxia, Lei Zhengchao, et al. New Hole Filling Algorithm Based on Boundary-Feature Growing[J]. Journal of System Simulation, 2014, 26(9):1 916-1 921 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=xtfzxb201409008
    [18] Savchenko V V, Pasko A A, Okunev O G, et al. Function Representation of Solids Reconstructed from Scattered Surface Points and Contours[J]. Computer Graphics Forum, 1995, 14(4):181-188 doi:  10.1111/1467-8659.1440181
    [19] Nüchter A, Hertzberg J. Towards Semantic Maps for Mobile Robots[J]. Robotics & Autonomous Systems, 2008, 56(11):915-926 http://cn.bing.com/academic/profile?id=28340cdafdab04e42d11b1914667e853&encoded=0&v=paper_preview&mkt=zh-cn
    [20] 晏海平, 吴禄慎, 陈华伟.基于径向基函数的散乱点云孔洞修复算法[J].计算机工程与设计, 2014, 35(4):1 253-1 257 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=jsjgcysj201404026

    Yan Haiping, Wu Lushen, Chen Huawei. Hole Repairing Algorithm in Scattered Point Cloud Based on Radial Basis Function[J]. Computer Engineering and Design, 2014, 35(4):1 253-1 257 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=jsjgcysj201404026
    [21] 陈矛.三维颅骨模型的孔洞修补算法研究[D].杭州: 浙江工业大学, 2009

    Chen Mao. A Hole Repairing Algorithm for 3D Skull Model[D]. Hangzhou: Zhejiang University of Tcehnology, 2009
    [22] 晏海平.散乱点云边界提取及孔洞修复算法研究[D].南昌: 南昌大学, 2014

    Yan Haiping. Research of Boundary Extraction and Hole Repairing Algorithm Based on Scattered Point Cloud[D]. Nanchang : Nanchang University, 2014
    [23] Handa A, Whelan T, Mcdonald J, et al. A Benchmark for RGB-D Visual Odometry, 3D Reconstruction and SLAM[C]. IEEE International Conference on Robotics and Automation, Hong Kong, China, 2014
  • 加载中
图(15)
计量
  • 文章访问数:  97
  • HTML全文浏览量:  23
  • PDF下载量:  18
  • 被引次数: 0
出版历程
  • 收稿日期:  2019-05-16
  • 刊出日期:  2020-09-05

一种改进匹配点对选取策略的ElasticFusion室内三维重建算法

doi: 10.13203/j.whugis20180278
    基金项目:

    国家重点研发计划 2017YFB0503500

    河南省科技创新计划 142101510005

    国家自然科学基金青年基金 41801317

    作者简介:

    王玮琦, 硕士生, 主要从事机器人地图方向研究。809741461@qq.com

    通讯作者: 游雄, 博士, 教授。youarexiong@163.com
  • 中图分类号: P237;TP391

摘要: 对室内场景进行实时高质量的三维重建是机器人、增强现实等领域关注的重点。目前基于RGB-D传感器的三维重建方法存在局部模型重建效果差、点云模型包含孔洞等问题。而影响三维模型重建效果的主要因素有两个, 一是由点云配准解算出的位姿参数精度, 二是闭环检测准确程度。对此, 在保证算法实时性的基础上, 通过改进迭代最近点算法(iterative closest point algorithm, ICP)中匹配点的选取策略, 提升模型重建效果。并利用径向基函数构建隐式曲面的方式对点云模型中的孔洞进行事后修补。选用ICL-NUIM等公开数据集进行实验验证, 结果表明, 改进后的算法在模型重建效果以及相机轨迹估计方面均有显著提升。

English Abstract

王玮琦, 游雄, 杨剑, 李钦. 一种改进匹配点对选取策略的ElasticFusion室内三维重建算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278
引用本文: 王玮琦, 游雄, 杨剑, 李钦. 一种改进匹配点对选取策略的ElasticFusion室内三维重建算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278
WANG Weiqi, YOU Xiong, YANG Jian, LI Qin. ElasticFusion for Indoor 3D Reconstruction with an Improved Matching Points Selection Strategy[J]. Geomatics and Information Science of Wuhan University, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278
Citation: WANG Weiqi, YOU Xiong, YANG Jian, LI Qin. ElasticFusion for Indoor 3D Reconstruction with an Improved Matching Points Selection Strategy[J]. Geomatics and Information Science of Wuhan University, 2020, 45(9): 1469-1477. doi: 10.13203/j.whugis20180278
  • 应用成本相对低廉的传感器获取场景的精细三维模型是机器人、增强现实等领域的研究热点。在机器人领域中, 为了实现机器人在未知场景的自主移动, 研究者们希望通过构建“地图”来指导机器人的行动, 其中代表性研究方向是同时定位与地图构建(simultaneous localization and mapping, SLAM)。在最初的研究中, 因计算资源的限制以及实时性要求, 经典SLAM算法基于中央处理器(central processing unit, CPU)实现传感器定位定姿, 应用稀疏特征点法[1]或直接法[2-3]实现地图构建, 仅能实时重建非常稀疏的三维点云或是半稠密的三维点云, 难以表达场景的细节信息。2010年底, 微软公司发布了一种可实时获取彩色RGB图像以及深度图像的RGB-D深度摄像头Kinect, 采集速度快、精度较高且成本低廉, 迅速应用于机器人与增强现实等领域。应用深度图像不仅能辅助相机跟踪, 还可以提供稠密的场景三维信息。Newcombe等[4]于2011年率先提出基于RGB-D传感器的室内实时三维重建算法KinectFusion, 引领了后续关于基于深度摄像头的三维重建工作以及稠密视觉SLAM的研究。以KinectFusion为基础, 相继涌现了Kintinuous[5]、ElasticFusion[6]、Voxel Hashing[7]、BundleFusion[8]等优秀的室内场景三维重建算法。

    在满足刚性变换以及室内静态场景的前提下, KinectFusion算法使用深度信息进行位姿估计实现定位, 设计高效并行的算法在图形处理器(graphics processing unit, GPU)上运行。不同于传统SLAM算法, KinectFusion算法基于截断符号距离函数(truncated signed-distance function, TSDF)表达三维模型, 使用迭代最近点算法(iterative closest point algorithm, ICP)估计位姿并融合点云, 应用光线投影算法进行三维渲染。利用GPU首次实现了室内场景的实时稠密三维重建, 在小范围场景中重建效果较好, 但其局限性为:①基于TSDF预设的三维网格限制了重建场景的尺度, 仅能重建小范围场景; ②仅使用ICP算法进行位姿估计严重依赖于场景中几何特征的丰富程度, 当场景中出现光强度变化时会引起定位失效; ③没有回环检测模块, 无法实现闭环优化; ④定位失效时无法进行重定位, 累积误差大等。为了解决上述问题, 研究者们开展了一系列研究工作:①为了突破场景尺度的限制, 提出让三维网格随相机运动, 移出三维网格的部分不参与计算[7], 或是使用八叉树数据结构减弱对显存的依赖[9]; ②为了减小对于场景几何信息的依赖, 融合ICP、视觉快速里程计(fast odometry from vision, FOVIS)、RGB-D 3种位姿跟踪方法, 减小误差累积[5]; ③为了实现回环检测, 提出了使用词袋法(distributed bag of words, DBoW)检测闭环回路, 构建位姿图进行优化[5]; ④为了改进定位失效并提升模型显示效果, 利用边线特征中的点对点关系辅助原始ICP算法提高鲁棒性, 以及通过预设地面点云模型或添加极线及共面约束改进模型显示效果[10-11]; ⑤为了表达更大规模场景并提升模型的表达效果, 舍弃了基于预设网格表达场景的方式, 使用面元(surfels)表达场景, 面元包含了三维点的位置、法向量等信息, 将传感器获取的信息直接作用到面元上而非通过位姿图间接作用于三维模型[6, 12-13]

    在上述改进工作中, 2015年提出的ElasticFusion算法使用面元表达场景可以更好地重建大规模场景, 摆脱了以往基于TSDF对于场景尺度的限制; 随机蕨算法的引入也有效地减少了模型中的“重影”现象, 提升了模型的重建效果。但随机蕨算法在闭环检测模块上的应用效果仍不及DBoW, 限制了ElasticFusion算法的重定位能力, 并且该方法在初始点云配准阶段选用了经典ICP算法中基于投影法选取匹配点对的方式, 易导致误差造成位姿参数解算不准确, 在应用于小规模、很少存在回环的场景时, 会出现模型局部重建效果差的情况, 甚至应用在大规模场景重建时重建效果错乱等。

    本文针对室内小规模场景局部模型重建效果差的问题, 在保证算法实时性的基础上, 通过改进原始ICP算法中匹配点的选取策略, 提升模型重建效果, 提高位姿参数解算精度。

    • ElasticFusion算法借鉴了以KinectFusion为代表的实时稠密视觉SLAM算法的经典框架, 在充分使用GPU的情况下选用OpenGL完成点云的更新、融合与显示。ElasticFusion算法使用面元模型表达场景而非其他算法使用的TSDF模型融合点云, 应用几何及光度一致性进行位姿估计并加以优化, 同时将已重建好的模型根据预设的时间阈值δt划分为当前视角下的活动区域以及不在当前视角下的非活动区域。引入了随机蕨算法实现回环检测与重定位, 提高了系统的鲁棒性[14]

      ElasticFusion算法主要分为4个模块:①数据采集与处理, 通过深度传感器获取深度图像与RGB图像, 并将其转化为三维点云, 得到其三维坐标与法向量; ②位姿估计, 将当前帧的三维点云与已有重建模型进行配准, 几何上通过ICP算法计算位姿, 同时利用RGB图像在光度以及颜色的一致性加以约束优化位姿估计结果; ③当前帧图像编码与回环检测, 利用随机蕨算法中的编码机制对当前帧图像进行编码, 其编码值与当前存储关键帧编码值的数据库进行比对, 判断当前帧能否作为关键帧以及当前帧与已有模型是否存在回环(若存在回环, 应用形变图[12]对已重建模型以及位姿参数进行优化); ④点云融合, 将当前帧获取的点云与已有模型进行融合、更新及显示, 为下一帧配准提供依据。算法流程如图 1所示。

      图  1  ElasticFusion算法流程图

      Figure 1.  Flowchart of the ElasticFusion Algorithm

    • 影响三维模型重建效果的原因主要有两点, 一是初始点云配准精度, 二是闭环检测准确程度。在点云配准阶段, ElasticFusion算法使用几何及颜色光度一致性约束实现配准。在闭环检测中应用随机蕨算法, 其主要原因是算法的核心工作在于场景重建, 若在闭环检测模块中改用词袋法, 会消耗较多计算资源。因此, 考虑通过减小点云初始配准阶段产生的累积误差来提高位姿参数解算精度, 进而提升模型重建效果。

    • ICP算法广泛应用于点云配准中, 在稠密SLAM中位姿估计的常用方法就是通过投影法确定点对的匹配关系, 应用最小二乘法使点到平面的距离最小, 进而完成位姿参数解算。利用ICP算法解算出的位姿参数是点云融合的重要参数。尽可能减小位姿参数解算的误差能够极大程度地帮助三维重建算法进行点云融合与更新显示。而相邻帧间点云对匹配点的选取直接影响着ICP算法进行点云配准的精度。本文在经典ICP算法匹配点对选取策略的基础上, 改进匹配点选取方法, 减小初始误差对于点云配准的影响。

    • 考虑到相邻两帧间位姿变化相对较小, 通常采用投影法选取ICP算法所需要的匹配点对。图 2为相邻两帧间点对选取示意图(以二维表示)。相机连续两帧采集的环境信息抽象表示为曲线KK+1, 当前帧坐标系原点为Qk+1。在选取匹配点对时, 以Qk+1为基准, 利用投影法近似选取qkpk作为匹配点对进行位姿解算。

      图  2  投影法选取匹配点示意图

      Figure 2.  Illustration of Search of the Matching Points of the Given Pose Points Using Projection Method

    • 在两帧间点云进行配准时, 为了减小误差造成的影响, 利用最小化点到平面距离的方式进行位姿参数的解算。相较于最小化点对点的距离进行优化, 最小化点到平面距离在二三维点云配准上有着显著优势[15]。最小化点到平面距离示意图如图 3所示。

      图  3  点到平面距离示意图

      Figure 3.  Illustration of the Distance from the Given Pose Points to the Current Plane

      使目标函数E取得最小值求解位姿参数:

      $$ E = \mathop \sum \limits_{l = 1}^k {\left( {{{(\mathit{\boldsymbol{R}}{\mathit{\boldsymbol{p}}_l} + \mathit{\boldsymbol{t}} - {\mathit{\boldsymbol{q}}_l})}^{\rm{T}}}\cdot{\mathit{\boldsymbol{n}}_l}} \right)^2} $$ (1)

      式中, R为旋转矩阵; t为平移参数; 将R表示为绕XYZ轴的旋转分量:

      $$\mathit{\boldsymbol{R}} = {\mathit{\boldsymbol{R}}_Z}{\mathit{\boldsymbol{R}}_Y}{\mathit{\boldsymbol{R}}_X}$$ (2)

      RXYZ轴的旋转角度分别为αβγ, 则:

      $$\left\{ {\begin{array}{*{20}{l}} {{\mathit{\boldsymbol{R}}_Z} = \left[ {\begin{array}{*{20}{c}} {{\rm{cos}}\gamma }&{{\rm{sin}}\gamma }&0\\ { - {\rm{sin}}\gamma }&{{\rm{cos}}\gamma }&0\\ 0&0&1 \end{array}} \right]}\\ {{\mathit{\boldsymbol{R}}_X} = \left[ {\begin{array}{*{20}{c}} 1&0&0\\ 0&{{\rm{cos}}\alpha }&{{\rm{sin}}\alpha }\\ 0&{ - {\rm{sin}}\alpha }&{{\rm{cos}}\alpha } \end{array}} \right]}\\ {{\mathit{\boldsymbol{R}}_Y} = \left[ {\begin{array}{*{20}{c}} {{\rm{cos}}\beta }&0&{ - {\rm{sin}}\beta }\\ 0&1&0\\ {{\rm{sin}}\beta }&0&{{\rm{cos}}\beta } \end{array}} \right]}\\ {\mathit{\boldsymbol{t}} = {{\left[ {\begin{array}{*{20}{c}} {{t_x}}&{{t_y}}&{{t_z}} \end{array}} \right]}^{\rm{T}}}} \end{array}} \right.$$ (3)

      根据算法中采用的小角近似处理方式, 即:

      $${\rm{sin}}\theta \approx \theta {\rm{}}, {\rm{cos}}\theta \approx 1$$ (4)

      将[R|t]表示为:

      $$\left[ {\mathit{\boldsymbol{R}}|\mathit{\boldsymbol{t}}} \right] = \left[ {\begin{array}{*{20}{c}} 1&\gamma &{ - \beta }\\ { - \gamma }&1&\alpha \\ \beta &{ - \alpha }&1 \end{array}\left| {\begin{array}{*{20}{c}} {{t_x}}\\ {{t_y}}\\ {{t_z}} \end{array}} \right.} \right]{\rm{}}$$ (5)

      改写为如下形式:

      $$\mathit{\boldsymbol{x}} = {\left[ {\begin{array}{*{20}{c}} \alpha &\beta &\gamma &{{t_x}}&{{t_y}}&{{t_z}} \end{array}} \right]^{\rm{T}}}{\rm{}}$$ (6)

      根据

      $$\begin{array}{l} \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\mathit{\boldsymbol{R}}{\mathit{\boldsymbol{p}}_l} + \mathit{\boldsymbol{t}} = \\ \left[ {\begin{array}{*{20}{c}} 0&\gamma &{ - \beta }\\ { - \gamma }&0&\alpha \\ \beta &{ - \alpha }&0 \end{array}} \right]{\mathit{\boldsymbol{p}}_l} + {\mathit{\boldsymbol{I}}_{3 \times 3}}\left[ {\begin{array}{*{20}{c}} {{t_x}}\\ {{t_y}}\\ {{t_z}} \end{array}} \right] + {\mathit{\boldsymbol{I}}_{3 \times 3}}{\mathit{\boldsymbol{p}}_l} = \\ \left[ {\begin{array}{*{20}{c}} 0&{ - {p_{lz}}}&{{p_{ly}}}&1&0&0\\ {{p_{lz}}}&0&{ - {p_{lx}}}&0&1&0\\ { - {p_{ly}}}&{{p_{lx}}}&0&0&0&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} \alpha \\ \beta \\ \gamma \\ {{t_x}}\\ {{t_y}}\\ {{t_z}} \end{array}} \right] + {\mathit{\boldsymbol{p}}_l} = \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\mathit{\boldsymbol{A}}{({\mathit{\boldsymbol{p}}_l})_{3 \times 6}}{\mathit{\boldsymbol{x}}_{6 \times 1}} + {\mathit{\boldsymbol{p}}_l}_{3 \times 1} \end{array}$$ (7)

      其中I3×3为三阶单位矩阵, 由式(1)可得:

      $$\begin{array}{l} E = \sum\limits_{l = 1}^k {{{\left( {{{\left( {\mathit{\boldsymbol{R}}{\mathit{\boldsymbol{p}}_l} + \mathit{\boldsymbol{t}} - {\mathit{\boldsymbol{q}}_l}} \right)}^{\rm{T}}} \cdot {\mathit{\boldsymbol{n}}_l}} \right)}^2}} = \sum\limits_{l = 1}^k {\left( {\left( {\mathit{\boldsymbol{A}}\left( {{\mathit{\boldsymbol{p}}_l}} \right)\mathit{\boldsymbol{x}} + } \right.} \right.} \\ {\left. {{{\left. {\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{\mathit{\boldsymbol{p}}_l} - {\mathit{\boldsymbol{q}}_\iota }} \right)}\;^{\rm{T}}} \cdot {\mathit{\boldsymbol{n}}_l}} \right)\;^2}\mathop = \limits^{{\rm{def}}} \\ \;\;\;\;\;\;\sum\limits_{l = 1}^k {\left( {\mathit{\boldsymbol{x}}_{1 \times 6}^{\rm{T}}{\mathit{\boldsymbol{B}}_{6 \times 6}}{\mathit{\boldsymbol{x}}_{6 \times 1}} + 2{\mathit{\boldsymbol{A}}_{1 \times 6}}{\mathit{\boldsymbol{x}}_{6 \times 1}} + C} \right)} \end{array}$$

      对$f\left( \mathit{\boldsymbol{x}} \right) = \mathit{\boldsymbol{x}}_{1 \times 6}^{\rm{T}}{\mathit{\boldsymbol{B}}_{6 \times 6}}{\mathit{\boldsymbol{x}}_{6 \times 1}} + 2{\mathit{\boldsymbol{A}}_{1 \times 6}}{\mathit{\boldsymbol{x}}_{6 \times 1}} + C$中的x求导数, 令导数为0可求解x, 即:

      $$\left\{ {\begin{array}{*{20}{l}} {f'\left( \mathit{\boldsymbol{x}} \right) = 2\mathit{\boldsymbol{x}}_{1 \times 6}^{\rm{T}}{\mathit{\boldsymbol{B}}_{6 \times 6}} + 2{\mathit{\boldsymbol{A}}_{1 \times 6}} = 0}\\ {{\mathit{\boldsymbol{x}}^{\rm{T}}} = - {\mathit{\boldsymbol{A}}_{1 \times 6}}{\mathit{\boldsymbol{B}}^{ - 1}}_{6 \times 6}} \end{array}} \right.$$ (8)

      其中:

      $$\begin{array}{l} {\mathit{\boldsymbol{A}}_{1 \times 6}} = {\left( {{\mathit{\boldsymbol{p}}_l} - {\mathit{\boldsymbol{q}}_l}} \right)^{\rm{T}}}_{1 \times 3}{\mathit{\boldsymbol{n}}_l}_{3 \times 1}{\mathit{\boldsymbol{n}}_l}{^{\rm{T}}_{1 \times 3}}\mathit{\boldsymbol{A}}{\left( {{\mathit{\boldsymbol{p}}_l}} \right)_{3 \times 6}}\\ {\rm{}}{\mathit{\boldsymbol{B}}_{6 \times 6}} = \mathit{\boldsymbol{A}}{\left( {{\mathit{\boldsymbol{p}}_l}} \right)^{\rm{T}}}_{6 \times 3}{\mathit{\boldsymbol{n}}_l}_{3 \times 1}{\mathit{\boldsymbol{n}}_l}{^{\rm{T}}_{1 \times 3}}\mathit{\boldsymbol{A}}{\left( {{\mathit{\boldsymbol{p}}_l}} \right)_{3 \times 6}}\\ {\rm{}}C = {\mathit{\boldsymbol{n}}_l}{^{\rm{T}}_{1 \times 3}}{\left( {{\mathit{\boldsymbol{p}}_l} - {\mathit{\boldsymbol{q}}_l}} \right)_{3 \times 1}}{\left( {{\mathit{\boldsymbol{p}}_l} - {\mathit{\boldsymbol{q}}_l}} \right)^{\rm{T}}}_{1 \times 3}{\mathit{\boldsymbol{n}}_l}_{3 \times 1} \end{array}$$

      多次迭代计算后, 可解算出位姿估计参数。

    • ICP算法迭代求解过程中点对的对应关系并不改变, 因此, 匹配点对选取的恰当与否直接影响位姿参数的解算精度。在原始算法中, 通过投影法选取匹配点对时, 虽粗略考虑法向量夹角以及点对间欧氏距离等因素, 但仍存在匹配点选取不恰当等问题。因相邻两帧间位姿变化通常相对较小(正常情况下, 相机平移及旋转比较平滑), 在尽量保证算法实时性, 避免占用较大计算资源的基础上, 借鉴文献[16]的思想, 考虑将法向量作为选取匹配点的重要参考指标。

      在投影法选取出匹配点的基础上, 以一定半径确定圆形搜索区域, 遍历区域内包含该帧点云的所有候选点来寻找最佳匹配点, 如图 4所示。

      图  4  基于不同圆心选取匹配点示意图

      Figure 4.  Illustration of Search of Matching Points Using Circles with Different Centers

      图 4选取p4的匹配点为例, 在已有匹配点q4的基础上, 分别选取p4以及q4中点m4为圆心, 以半径$r=\frac{3}{2}\left|p_{4} q_{4}\right|$确定圆形搜索区域Q(参数$\frac{3}{2}$的选定使得圆形搜索区域包含更多的候选点), 当前帧点云包含在圆形搜索区域内的所有点即作为候选点${q_i}\left( {{q_i} \in Q} \right)$, 求解公式如下:

      $$f\left( {{q_i}} \right) = \lambda \cdot \mathit{\boldsymbol{N}}\left( {{q_i}} \right) \cdot \mathit{\boldsymbol{N}}\left( {{p_4}} \right)$$ (9)

      式中, λ为可调节权重值; N(*)为*点法向量。采用向量点乘的方式选取两帧间法向量最为接近的两点作为匹配点。根据f(qi)所得数值, 所选匹配点q*可表示为:

      $${\rm{}}{q^*} \leftarrow {\rm{max}}f\left( {{q_i}} \right)$$ (10)

      根据各圆心确定的搜索区域内候选匹配点的情况, 经过实验结果对比, 确定选取线段中点作为圆心, 1.5倍线段长度作为半径, 如图 4黑色圆心及黑色圆形搜索区域所示。由起始点pn及根据投影法确定的匹配点qn, 选取线段pnqn中点mn为圆心, 确定半径$r=\frac{3}{2}\left|p_{n} q_{n}\right|$的圆形区域Qn, 在Qn内的所有点作为候选点qi, 通过计算选取pn的最佳匹配点${q^*} \leftarrow \max \left( {\lambda \cdot \mathit{\boldsymbol{N}}\left( {{\mathit{\boldsymbol{q}}_\mathit{\boldsymbol{i}}}} \right) \cdot \mathit{\boldsymbol{N}}\left( {{\mathit{\boldsymbol{p}}_\mathit{\boldsymbol{n}}}} \right)} \right)$。

      当根据投影法无法选出合适的初始匹配点时, 选取该帧点云中起始点q0或终止点q任一点确定半径$r=\frac{3}{4}\left|p_{n} q\right|$或$r=\frac{3}{4}\left|p_{n} q_{0}\right|$圆形搜索区域, 如图 5所示。

      图  5  无初始匹配点时选取匹配点示意图

      Figure 5.  Illustration of Search of Matching Points Without an Initial Matching Point

      当相邻两帧出现大量点云平行的情况时(如图 6所示), 减小ICP算法所占权重, 借鉴文献[10]提出的提取深度数据中的边线特征并结合颜色光度一致性进行位姿估计。

      图  6  点云平行情况示意图

      Figure 6.  Illustration of Search of Matching Points when Parallel Point Clouds Exist

    • ElasticFusion算法应用于室内场景时, 由于深度摄像头在采集数据时会出现物体遮挡、物体表面出现反射以及光强度变化等, 引起采集数据缺失, 造成重建模型中出现孔洞, 容易影响机器人对于场景的理解。为了更好地表达场景, 在已有重建模型的基础上, 可利用径向基函数来修补重建点云模型中孔洞, 以提升模型重建效果。

      对于孔洞中丢失的点, 无法获得其实测数据。孔洞修补最主要的是利用孔洞区域附近的邻域几何信息, 采用某种算法在保证几何特征的前提下最大程度地恢复原有模型[17]。利用径向基函数重建隐式曲面的工作已是点云孔洞修补的主流方法[18]。另一主流方法是基于体素进行孔洞修补。由于基于体素的孔洞修复算法需要将点云模型进行体素离散化处理, 计算复杂、耗时长, 且在数据量较大时效率低, 因此本文采用利用径向基函数建立隐式曲面的方法。

      孔洞修补工作主要分为两步, 一是提取并确定点云数据的边界与孔洞区域的边界, 二是对已有孔洞区域利用径向基函数进行修补。在提取并确定点云数据与孔洞区域边界后, 借鉴文献[19]的思想, 利用法向量的特性, 将最外层点云数据中法向量相近的数据提取出来, 该部分数据有极大概率是墙壁、地板或是天花板等。再以点云数据中散乱点云点为基础, 借鉴文献[20]的思想, 对无法建立三角网格的散乱点进行标注, 并根据其空间拓扑关系确定孔洞边界点。

      在孔洞边界确定后, 利用径向基函数实现孔洞修补。该方法对于较平坦区域效果显著, 但在曲率变化较大的地方难以满足复杂形状要求[21]。因此, 针对地面、墙壁及天花板等区域构建基于径向基函数的隐式曲面, 利用最小二乘平滑函数对孔洞多边形进行拟合。基于径向基函数的隐式曲面方程可表示为:

      $$F\left( n \right) = \mathop \sum \limits_{l = 1}^k {\omega _i}\varphi \left( {n - {q_i}} \right) + P\left( n \right)$$ (11)

      式中, n表示隐式曲面上的任一点; qi为建立曲面所需的采样点; ωi是采样点一一对应的权值; P(n)为根据n点坐标(nx, ny, nz)构建的平面; φ(n-qi)为径向基函数[22]。然后根据梯度约束调整拟合的孔洞多边形向隐式曲面, 完成孔洞修补。

    • 本文采用公开数据集ICL-NUIM(https://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html)以及算法的样例数据dyson_lab.klg(https://wp.doc.ic.ac.uk/robotvision/, 由英国帝国理工学院戴森实验室提供), 对改进后的算法进行实验验证, 分别从模型重建效果和轨迹对比两方面进行评价。实验使用的笔记本电脑配置为CPU Intel Core i7-7820HK 2.9 GHz、16 GB内存以及Nvidia GeForce GTX1070 GPU(8 GB显存), 操作系统为Ubuntu16.04。

    • 对各组数据进行实验, 分别从模型重建效果与相机轨迹进行分析。首先使用dyson_lab.klg样例数据进行三维重建实验(该数据没有提供轨迹的真值数据, 仅能从重建模型的显示效果上评价)。从图 7可以看出, 在场景中心位置的办公桌附近, 原始算法重建模型出现杂乱不一致现象, 改进后算法重建模型一致性更强, 显示效果更逼真。与原始算法存在一定概率闭环失败的现象相比, 改进后算法能减少最后闭环检测的时间, 降低闭环失败的概率。

      图  7  利用dyson_lab数据实验对比图

      Figure 7.  Comparison Results Using dyson_lab Data

      ICL-NUIM数据集由英国帝国理工学院与爱尔兰国立梅努斯大学联合提供, 主要用于评价视觉里程计、室内三维重建以及SLAM算法等相关研究工作[23]。选用该数据集能在避免使用算法闭环优化模块的前提下, 验证对算法的改进效果。且ElasticFusion算法及ICL-NUIM数据集均是由英国帝国理工学院提供, 使用相同数据集比对算法改进效果更佳。相比于TUM-RGBD数据集, ICL-NUIM数据集的每组数据均为室内部分场景, 很少存在回环, 可以更好地满足实验需求。并且该数据集具备室内场景的共性特点, 实验结果可以推广应用于其他数据集上。利用ICL-NUIM数据集提供的RGB图像、深度图像以及相机轨迹的真值文件(ground truth)进行实验对比。该数据集有8组数据, 分为卧室场景(livingroom, lr_kt)以及办公室场景(officeroom, or_kt), 每个场景对应4组数据。

      图 8为使用lr_kt0数据的实验效果对比, 图 9为相机轨迹对比图(为更好地对比相机轨迹恢复情况, 将相机轨迹映射至二维x-y平面进行比对, 红色为相机轨迹真值, 绿色为原始算法轨迹估计值, 蓝色为改进后算法轨迹估计值)。图 8中, 立式台灯的模型重建显示效果有明显的提升; 图 9中, 矩形方框内原始算法的轨迹估计出现跳跃, 该偏差范围对应的图像帧为多帧立式台灯图像, 其轨迹恢复的偏差对台灯的重建产生重影等影响。虽然原始算法与改进后的算法轨迹大致相似, 但对比原始算法在矩形区域的偏差可以看出, 改进后算法的相机轨迹与轨迹真值更加吻合。

      图  8  使用lr_kt0数据实验对比图

      Figure 8.  Comparison Results Using lr_kt0 Data

      图  9  lr_kt0数据相机轨迹对比图

      Figure 9.  Comparison Chart of the Camera Trajectories Using lr_kt0 Data

      图 10所示为使用lr_kt1数据的实验效果对比图, 图 11为使用lr_kt1数据的相机轨迹对比图。在对于场景几何结构的重建中, 原始算法没能有效恢复平面及立体上场景的矩形及长方体结构, 改进后算法则可以较好地对场景进行表达。图 11中, 改进后算法的轨迹与真实轨迹更加吻合。

      图  10  使用lr_kt1数据实验对比图

      Figure 10.  Comparison Results Using lr_kt1 Data

      图  11  使用lr_kt1数据的相机轨迹对比图

      Figure 11.  Comparison Chart of the Camera Trajectories Using lr_kt1 Data

      图 12为使用lr_kt3数据的实验效果对比, 图 13为使用lr_kt3数据的相机轨迹对比图。原始算法在壁画及门的重建效果上有重影, 改进后的算法可很好地对场景进行表达。在相机轨迹对比上, 随着模型重建的推进, 原始算法的轨迹估计有明显偏差。在模型重建后期, 由于原始算法对于位姿估计的累积误差, 造成了对同一场景的表达上出现重影。而改进算法的位姿估计则更接近于真值轨迹, 使得重建模型表达效果更逼真。

      图  12  使用lr_kt3数据实验对比图

      Figure 12.  The Comparison Results Using lr_kt3 Data

      图  13  使用lr_kt3数据的相机轨迹对比图

      Figure 13.  Comparison Chart of the Camera Trajectories Using lr_kt3 Data

      在对ICL-NUIM数据集8组数据进行的实验中, 有3组数据三维重建结果有明显的提升, 避免了如同一物体重建过程中出现重影、闭合区域无法闭合等不一致现象; 有2组数据重建效果提升不明显, 仅是极小范围或是单一物体的重建效果改进; 另3组数据重建效果基本没有提升。但在相机轨迹估计方面, , 8组数据中改进后算法所估计的相机轨迹均与轨迹真值更加相近或吻合。

      上述实验表明, 改进算法在模型显示效果以及相机轨迹估计方面较原有算法都有提升。3组重建效果基本没有提升的实验中, 其重建的场景均是小范围、几何特征信息不丰富、较空旷的场景且不存在闭环约束。可见在重建该类场景时, 原始算法及改进后算法的重建效果都有待提升。

    • 使用改进算法生成的点云模型作为实验数据, 对平坦区域的孔洞进行修补。选用dyson_lab.klg数据生成的三维模型作为实验数据, 实验对比如图 14所示, 图 14(a)为原始点云模型, 图 14(b)为孔洞修补后较为完整的点云模型。对于因物体遮挡产生的孔洞, 选用由数据lr_kt0所生成的点云模型作为实验数据, 实验对比如图 15所示。

      图  14  平坦区域点云孔洞修补实验对比图

      Figure 14.  The Comparison Results of Points Cloud Hole Repairing in the Flat Area

      图  15  因物体遮挡产生的点云孔洞修补实验对比图

      Figure 15.  Comparison Results of Point Clouds Hole Repairing Caused by Object Occlusion

      由上述两个实验可以看出, 利用径向基函数生成隐式曲面的方法可以较好地修补三维重建模型中存在的孔洞。该方法对于较为平坦的孔洞修补鲁棒性高, 但对修补曲率较大或是不规则弯曲的物体等产生的点云孔洞有一定局限性。

    • 本文主要针对ElasticFusion算法在三维重建过程中出现的局部模型重建出现错乱的情况进行改进, 并对三维模型中因物体遮挡、物体反射率、光强度变化等原因造成的点云孔洞进行修补, 以提升室内场景三维模型的重建效果。从原始算法中相机位姿估计的ICP算法入手, 对匹配点对选取策略进行了改进。在利用投影法选取匹配点对的基础上, 确定搜索区域, 通过遍历计算区域内所有候选点与待匹配点的法向量乘积得到匹配点对。在ICP算法的初始阶段, 通过引入简单的数学计算选取出更为准确的匹配点进行位姿解算, 在不过多消耗计算资源的前提下保证了算法的实时性。

      对比实验表明, 在几何特征信息丰富的场景中, 改进算法无论在模型显示效果还是在相机轨迹估计方面, 都有较为明显的提升。改进算法在保证算法实时性的基础上, 可以得到更加准确恰当的匹配点, 提高了位姿解算的精度。但在场景中出现线面特征不明显(例如场景中存在大量边界平行于墙面、地面的物体)或是场景几何特征信息不丰富的情况下, 仍无法达到理想效果。同时, 使用改进后算法重建的模型, 利用径向基函数构建隐式曲面的方法实现点云模型的孔洞修补, 进一步提升了重建模型的显示效果。

参考文献 (23)

目录

    /

    返回文章
    返回