一、背景介绍
1 项目背景与国内外研究现状
1.1 项目背景分析
近年来,RGB-Depth(RGB-D)传感器,如Kinect V1,和Structure Sensor等,在室内即时定位与地图构建应用上被广泛使用[1]。该类传感器与传统激光测图原理不同,基于结构光实现距离量测。其硬件由激光投射器,光学衍射元件(DOE)和红外摄像头三大核心器件组成。激光投射器发射的激光先通过DOE扩散为随机光斑,然后复制成多份投射到被摄物体上,深度信息可通过发射与反射的红外光斑强度差解算出来,以每秒30帧的速率同步输出640*480的深度和视觉图像,有效距离在0.5m-5m左右,经过数据校正之后可达8m的量测距离[2]。该类设备具有距离信息实时获取,便携性强,价格低廉等优点,非常适合下快速三维建模[3]。
本项目拟依托低成本的深度传感器实现人体三维建模与姿态检测,项目旨在减轻医疗人员的负担,使用相机获取人体的节点,构建不同姿态的度空间识别和判断模型,可以智能化的实现人体姿态信息的识别,从而可以进行病人的摔倒检测、病人状态监测等智能化的辅助医护人员的工作;同时通过对人体数据的三维重建,获取人体完整的三维信息,例如身高、臂长、胸围、臀围等,可进行人体量体等应用。因此本项目涉及到的技术手段主要包括传感器校正、彩色与深度数据融合、点云配准以及人体节点提取方法。项目参与人员在视觉SLAM与RGB-D传感器校正方面积累了丰富的经验和研究成果,先后参与完成了与本项目相关的多项国家、省部级以及横向课题,形成了具有自主知识产权的低成本RGB-D三维测图系统,尤其是已经对本项目的部分研究内容进行了一些探索性的研究,在计算机视觉与摄影测量领域的国际顶级学术期刊上发表了十余篇高水平SCI篇。同时,代码层面上,针对RGB-D SLAM以及点云数据处理等方面已经积累了大量的开源代码,例如openpose、pcl等开源数据库以及cloud compare等开源软件源码,皆可为本项目涉及的相应工作提供良好的研究基础。
1.2 国内外发展综述
与传统的视觉传感器相比,RGB-D传感器不需要计算即可直接获取深度信息,其高频输出的深度图像和视觉图像可实现逐像素匹配。基于RGB-D传感器的SLAM系统可避免单视相机尺度偏移问题[4]并可用于实时获取密集三维点云[5]。早期研究学者主要采用单个RGB-D传感器进行视觉SLAM和室内三维数据采集研究,其研究内容主要集中在算法效率提升[6-9],相机追踪方法及全局优化方法[10-13]等方面,根据其相机追踪方法分类,主要分为稠密式、半稠密式和特征点式。
(1)KinectFunsion 体重构技术是第一个针对RGB-D传感器数据帧融合的稠密式算法,该方法的本质是通过ICP算法将当前深度数据帧与全局表面模型进行匹配,获取当前数据帧与全局表面模型间的相对姿态。该方法中表面模型是由截断符号距离函数(Truncated Signed Distance Function, TSDF) 表达[14],其中全局表面模型是所有数据帧累积的结果[10, 15]。然而,该方法只能用适用于小范围的RGB-D三维测图,数据量测范围小于7m^3,存在资源消耗严重,难以实现大范围室内三维测图。[16]基于该技术研究大型场景模型数据的拼接方法,在局部场景数据融合方面,采用体重构方式实现相机追踪,在多模型数据拼接方面,通过SIFT与ICP联合的方式可实现大型场景三维点云的拼接。但该方法难以实现实时大场景测图,且传感器轨迹在数据拼接过程中未得到持续优化。同时大量的研究学者致力于优化Kinectfusion算法效率,采用octree优化加速[6],多层级三维重构方法[7],以及空间哈希压缩方法[8]等技术手段,将KinectFusion方法测图范围扩大,但难以在标准CUP下实现实时测图。
(2)与稠密式方法不同的是,半稠密式SLAM系统通过对齐整张图像间的光强信息的方式优化相机几何,首个半稠密式RGB-D SLAM 系统为DVO-SLAM系统,该系统针对图像像素点光测残差与具有深度信息的像素深度差构建误差方程,通过最小化两者整体误差实现相机追踪[17]。此后基于单目相机的LSD-SLAM系统采用最小化图像边缘区域的光测误差来实现相机追踪,可实现单目传感器连续追踪以及半稠密点云建图[18]。总体来看,基于半稠密式的相机追踪不依赖于图像特征,对模糊图像或者纹理匮乏区域条件下具有更好的相机追踪鲁棒性,但是该方法对光照变化、卷帘门式快门以及非朗伯反射敏感。
(3)基于特征点的数据帧融合方法是通过稀疏特征匹配点实现相机追踪,该方法内存消耗少,处理速度快,适用于大范围室内三维测图应用。为提升传感器追踪精度,大量的研究学者采用不同的特征匹配方法,包括通过SUFR算子从RGB数据帧中获取稀疏特征匹配点,通过最小化特征匹配点间距离或者最小化特征匹配点重投影误差计算数据帧之间相对姿态[19];使用Binary Robust Appearance and Normals Descriptor(BRAND)描述RGB-D特征,该描述算子可将视觉信息和几何形状信息融合到一起,可有效降低错误匹配[20];采用ORB特征进行相机追踪,回环检测以及重定位,提出一套面向单视相机、立体相机以及RGB-D传感器的完整SLAM系统[11]。[21]等人考虑到视觉图像序列可作为深度图像的补充,采用视觉信息与深度信息融合的方式来增强RGB-D传感器的测图能力,提高RGB-D传感器测图范围,但该方法只是扩大了RGB-D传感器的测图范围,无法优化传感器轨迹。另外,一些研究学者考虑到相机追踪容易深度误差影响[22],采用融合深度误差函数的方式来降低残差影响,以提高数据帧之间的融合精度[22, 23, 24]。
近年来,机器人领域大量的研究提出从单一传感器的视觉SLAM扩展到多传感器协同SLAM是提升相机追踪鲁棒性重要技术手段[25-28]。多视觉传感器测量方法早期被应用于structure from motion(SFM),实现多传感器系统姿态估计[29]。[30] 提出一套基于Harris算子的8个视觉传感器集成的SLAM系统,该方法相对单视觉SLAM系统来说从测量范围和重构质量上都得到很好的提升。[27, 31]等人基于Parallel Tracking and Mapping(PTAM)系统,采用无重叠视角的双相机系统实现小型飞行器的复杂环境下的自主导航,并且加入了闭环检测。该研究表明相较于单视相机SLAM,多视传感器联合SLAM在姿态追踪上具有更好的鲁棒性。以上多视传感器SLAM方法都是基于传统的视觉传感器,多RGB-D传感器联合SLAM方面,仅[25]等人做了相关工作,该研究提出采用双Kinect2联合的方式来实现室内三维测图,分析了多RGB-D传感器半自动外方位校正和相机追踪的迭代优化方法,研究结果表明,多个RGB-D传感器联合测图可有效提升传感器追踪精度,并可获取更精细的室内三维信息。但该系统依然存在几个问题,首先在进行传感器外方位校正时忽略SLAM累积误差;其次该双RGB-D测图系统未集成闭环检测方案,且忽略了传感器同步不准确造成的误差累积问题。
参考文献:[1] 陈锐志, 陈亮, 基于智能手机的室内定位技术的发展现状和挑战, 测绘学报, 10 (2017) 016.
[2] W. Darwish, S. Tang, W. Li, W. Chen, A New Calibration Method for Commercial RGB-D Sensors, Sensors, 17 (2017) 1204.
[3] Sensor.Structure, Structure Sensor, (2015).
[4] S.A. Scherer, D. Dube, A. Zell, Using depth in visual simultaneous localisation and mapping, Robotics and Automation (ICRA), 2012 IEEE International Conference on, (IEEE2012), pp. 5216-5221.
[5] F. Endres, J. Hess, J. Sturm, D. Cremers, W. Burgard, 3-D Mapping With an RGB-D Camera, IEEE Transactions on Robotics, 30 (2014) 177-187.
[6] M. Zeng, F. Zhao, J. Zheng, X. Liu, A Memory-Efficient KinectFusion Using Octree, in: S.-M. Hu, R. Martin (Eds.) Computational Visual Media, (Springer Berlin Heidelberg, 2012), pp. 234-241.
[7] J. Chen, D. Bautembach, S. Izadi, Scalable real-time volumetric surface reconstruction, ACM Trans. Graph., 32 (2013) 1-16.
[8] M. Nießner, M. Zollhöfer, S. Izadi, M. Stamminger, Real-time 3D reconstruction at scale using voxel hashing, ACM Transactions on Graphics (TOG), 32 (2013) 169.
[9] F. Kahl, J. Sturm, C. Kerl, E. Bylow, Real-Time Camera Tracking and 3D Reconstruction Using Signed Distance Functions, Robotics: Science and Systems (RSS), Online Proceedings, 9 (2013), pp. 135-152…
[10] R.A. Newcombe, S. Izadi, O. Hilliges, D. Molyneaux, D. Kim, A.J. Davison, P. Kohi, J. Shotton, S. Hodges, A. Fitzgibbon, KinectFusion: Real-time dense surface mapping and tracking, Mixed and Augmented Reality (ISMAR), 2011 10th IEEE International Symposium, (2011), pp. 127-136.
[11] R. Mur-Artal, J.D. Tardos, ORB-SLAM2: An Open-Source SLAM System for Monocular, Stereo, and RGB-D Cameras, IEEE Transactions on Robotics, PP (2017) 1-8.
[12] A.S. Huang, A. Bachrach, P. Henry, M. Krainin, D. Maturana, D. Fox, N. Roy, Visual Odometry and Mapping for Autonomous Flight Using an RGB-D Camera, in: I.H. Christensen, O. Khatib (Eds.) Robotics Research : The 15th International Symposium ISRR, (2017), pp. 235-252.
[13] K. Di, Q. Zhao, W. Wan, Y. Wang, Y. Gao, RGB-D SLAM Based on Extended Bundle Adjustment with 2D and 3D Information, Sensors, 16 (2016) 1285.
[14] B. Curless, M. Levoy, A volumetric method for building complex models from range images, Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, (ACM1996), pp. 303-312.
[15] R.A. Newcombe, S.J. Lovegrove, A.J. Davison, DTAM: Dense tracking and mapping in real-time, Computer Vision (ICCV), 2011 IEEE International Conference on, (2011), pp. 2320-2327.
[16] 呙维, 胡涛, 朱欣焰, 基于 Kinect 的深度数据融合方法, 计算机应用研究, 31 (2014) 285-288.
[17] C. Kerl, J. Sturm, D. Cremers, Dense visual SLAM for RGB-D cameras, Intelligent Robots and Systems (IROS), (2013), pp. 2100-2106.
[18] J. Engel, T. Schöps, D. Cremers, LSD-SLAM: Large-scale direct monocular SLAM, European Conference on Computer Vision, (2014), pp. 834-849.
[19] N. Engelhard, F. Endres, J. Hess, J. Sturm, W. Burgard, Real-time 3D visual SLAM with a hand-held RGB-D camera, Proc. of the RGB-D Workshop on 3D Perception in Robotics at the European Robotics Forum, Vasteras, Sweden, (2011), pp. 534-449.
[20] H. Zhang, Y. Liu, J. Tan, Loop closing detection in RGB-D SLAM combining appearance and geometric constraints, Sensors, 15 (2015) 14639-14660.
[21] S. Tang, Q. Zhu, W. Chen, W. Darwish, B. Wu, H. Hu, M. Chen, Enhanced RGB-D Mapping Method for Detailed 3D Indoor and Outdoor Modeling, Sensors, 16 (2016) 1589.
[22] D. Walid, W. Chen, S. Tang, W. Li, Full Parameters Calibration for Low Cost Depth Sensors, Melaha 2016 International Conference and Exhibition, Cairo, Egypt, (2016), pp. 256-263…
[23] D.R.d. Santos, M.A. Basso, K. Khoshelham, E.d. Oliveira, N.L. Pavan, G. Vosselman, Mapping Indoor Spaces by Adaptive Coarse-to-Fine Registration of RGB-D Data, IEEE Geoscience and Remote Sensing Letters, 13 (2016) 262-266.
[24] K. Vestena, D. Dos Santos, E. Oilveira Jr, N. Pavan, K. Khoshelham, a Weighted Closed-Form Solution for Rgb-D Data Registration, ISPRS-International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, (2016) 403-409.
[25] S. Yang, X. Yi, Z. Wang, Y. Wang, X. Yang, Visual SLAM using multiple RGB-D cameras, Robotics and Biomimetics (ROBIO), 2015 IEEE International Conference on, (2015), pp. 1389-1395.
[26] L. Heng, G.H. Lee, M. Pollefeys, Self-calibration and visual slam with a multi-camera system on a micro aerial vehicle, Autonomous Robots, 39 (2015) 259-277.
[27] S. Yang, S.A. Scherer, A. Zell, Visual SLAM for autonomous MAVs with dual cameras, Robotics and Automation (ICRA), 2014 IEEE International Conference on, (2014), pp. 5227-5232.
[28] G. Hee Lee, F. Faundorfer, M. Pollefeys, Motion estimation for self-driving cars with a generalized camera, Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, (2013), pp. 2746-2753.
[29] J.-M. Frahm, K. Koser, R. Koch, Pose estimation for multi-camera systems, DAGM-Symposium, (2004), pp. 286-293.
[31] M. Kaess, F. Dellaert, Visual slam with a multi-camera rig, Georgia Institute of Technology, (2006), pp. 276-283.
[31] S. Yang, S.A. Scherer, A. Zell, Robust onboard visual SLAM for autonomous MAVs, Intelligent Autonomous Systems 13, (2016), pp. 361-373.
2、项目可行性研究
2.1 研究方案可行
项目的研究方案是在充分调研以及前期研究积累的基础上深入和扩展,项目的研究方案是在系统总结国内外关于RGB-D传感器数据特点、相机追踪以及传感器轨迹全局优化关键技术等研究的基础上,并结合近景摄影测量与计算机视觉优化理论提出的,具有坚实的理论基础和研究背景。在项目研究方案的设计中,既注重与研究内容的匹配,又注意实验流程的细节设计和方案的可操作性,对研究内容中的难点做了充分的估计,针对其中涉及的关键技术进行了深入的剖析并提出了详细的解决方案。
2.2 基础实验条件完备可靠
本项目依托的深圳大学空间信息智能感知与服务深圳市重点实验室、深圳大学海岸带地理环境监测重点实验室和深圳大学智慧城市研究院,与武汉大学共同研制出具有国际先进水平的自主知识产权移动测图系统(MMS)、智能路面检测系统,解决了多传感器同步与集成控制、多源数据融合处理与分析、道路弯沉连续测量关键技术和产业化问题;实验室拥有完善的研究条件和实验环境,配备包括服务器、图形处理工作站、深度相机、立体相机、CCD 相机、POS 系统、无人机飞行器、智能轨道测量系统等设备;拥有多台大型专业设备,如多波束测深仪、三维激光扫描仪、长距离激光扫描仪等,为本项目研究中的数据采集、处理和精度评估提供了基础软硬件实验平台。同时项目组具备良好的实验条件,项目参与人员在参与的科技部重点研发计划、自然科学基金以及香港教育基金项目过程中,系统测试过多种RGB-D传感器包括Kinect V2、Structure Sensor、Intel RealSense R200、Azure Kinect DK等,对不同设备的数据精度、适用场景以及测图方法进行了初步评定,收集和积累了大量的RGB-D测试数据与算法代码。因此,本研究已有的技术基础和数据基础能够保证实验的顺利开展。
2.3 参考资料开源代码:
PCL点云处理库
OpenPose:人体检测算法
CloudCompare开源点云处理框架
OpenCV:开源图像处理库
3、 产品化与未来潜力
3.1 产品化目标
本项目拟基于低成本RGB-D传感器,基于深度与视觉融合的人体建模与骨骼识别算法,获取高精准人体节点信息(25个节点),获取人体三维信息,建立较高精度人体体态模型。
同时,通过相机获取的彩色流和深度流的信息可以获知人体动作姿态信息。将人体体态和人体动作姿态信息结合便可获知详细完整的人体信息,配合相关的医疗应用可以实现在医院中辅助病患治疗的作用。
基于以上目标,本项目拟基于奥比中光深度传感器形成一套从人体建模、人体节点识别与姿态检测的一体化软硬件技术体系,进行产业化推广。
3.2产品化及未来潜力
目前老龄化已成为世界性的问题,同时中国专业护工的培训系统并不成熟,医院中的护工多不具备专业知识,护士也会承担一部分护工的工作。如将人体姿态识别与智能机器人、医疗监护等领域进行结合,在减少医护人员的负担的同时,也可以使一些电子设备及时的对病患的动作进行反应,如根据病患起身的姿态床头的角度可以自动抬升等等,以此在一定程度上使医疗看护走向智能化,建立以人为核心的智能医疗服务空间。
除此之外,如果能基于低成本RGB-D传感器完成较高精度的人体姿态信息的获取,可以将此应用于影视或是娱乐产业,降低人体动作捕捉设备的成本,产品化后也有会有较良好的发展前景。
二、设备使用情况
1 试机体验报告
使用了比赛举办方提供的人体识别demo,其中人体节点较少仅有19个人体节点,且人体识别的算法较差难以较好的分割出人体形状,并存在较多识别错误的状况。所以参赛方将主要针对该问题进行算法的改进,提取出25个人体节点并修改人体识别的算法。
总体而言,相机模组demo可以实现彩色流、深度流以及点云数据的展示,证明相机具有较好的基础功能的实现能力,其相机数据的准确性,将在后续的开发中进行探究。
2、设备套件使用状况
参赛方使用了ORBBEC提供的Astra Pro相机模组进行了项目的开发。基于Windows环境进行软件开发,由于使用的皆为开源的数据库以及开源代码,所以具有较好的移植性,就并未配合开发板进行开发。
三、软件项目计划
1、项目预期计划流程图
进度
截至项目提交时间,参赛方已完成流程计划中除人体姿态识别外的所有项目内容,完成进度有:获取相机的彩色流以及深度流数据 → 获取相机内参 → 获取点云数据 → 人体与背景分离并提取人体点云数据 → 进行人体点云数据匹配获取完整人体点云信息 → 人体模型的三维重建 → 人体节点信息的高精度提取。
人员组织与分工
参赛方共四名成员:许芮溧、林玮妍、佘佳霓和汤圣君
四名成员分别负责:开发文档的记录和编写、代码编写软件开发以及技术支持指导。
四、设计说明书
1、项目计划概况
本次项目计划大致分为数据获取,数据预处理、人体节点识别与提取、点云变化检测提取人体点云、人体点云配准与融合五个部分。基于ORBBEC的Astra Pro相机与Python开发环境实现深度图与彩色图的获取与数据预处理;采用openpose开源代码于C++开发平台实现基于图像的人体节点识别提取;于C++平台搭建PCL开发环境将经处理后的数据生成点云并进行变化检测,实现背景剔除提取人体点云;于CloudCompare软件实现多个人体点云的配准与融合,获取完整人体点云。
2、项目开发过程详细记录
(1) 相机标定:由于无法通过Orbbec Viewer导出Astra Pro的内参,本小组决定自己对相机进行标定以获取内参。利用GML Camera Calibration软件和棋盘图对相机进行校正,成功获取相机内参。
图:Orbbec Viewer导出的数据
(2) 数据获取与数据预处理Python环境下配置opencv2与openni2,电脑连接奥比中光的Astra pro3D传感摄像头,运行代码,分别利用opencv2和openni2获取彩色与深度数据。
获取单独一帧的深度、彩色、点云数据并保存(takePhoto.py)
首先初始化环境:
从深度流中读取深度数据进行处理并保存到dframe中,用opencv展示深度图:
从视频流中读取彩色数据并保存到cframe中,用opencv展示彩色图:
设置文件路径,保存彩色图、深度图、深度数据csv文件、无色点云csv文件、彩色点云csv文件:
录制深度流oni文件(saveDepthStream.py)
初始化Recorder对象为rec,将深度流添加进rec以记录深度数据:
深度数据转换成点云(Depth2PointCloud.py)
读取深度数据csv文件并展示深度图:
生成彩色点云(genColorPointCloud.py)
读取彩色图像colimg与无色点云xyzpoi,生成彩色点云xyzrgbpoi并保存,完整代码如下:
录制彩色视频流avi文件(saveColorStream.py)
同时录制深度流和彩色视频流(saveDepthStream&ColorStream.py)
(3) 人体节点识别与提取编译openpose源码,生成解决方案,打开文件,添加模型文件的路径
由于本系统只需要识别人体的关节,只开启BODY_25的识别,hand、face等都设置为false受限于GPU的性能,为了保证正常的节点识别net_resolution设置如下,
利用图片识别人体节点并保存保存节点信息
保存节点信息为图片
1、利用相机实时识别节点并保存
2、解析json文件,保存节点信息为csv
(4) 点云变化检测提取人体点云csv转pcd读取csv数据
变化检测通过八叉树变化检测获取变化的点云,大部分为人体点云
保存变化的点云
人体点云截取
由于变化检测得到的人体点云有大量的噪点,需要滤除。过滤参数需要自行设定,参数可以根据人与摄像机之间的距离以及人体大致高度、宽度与深度确定。可以通过固定相机的位置以及采集数据时人体所在的位置得到更为精确的参数,以便获取低噪点的点云。
(5) 人体点云配准与融合
由于进度问题,人体点云自动化配准开发代码未能按时完成,先用CloudCompare尝试进行完整人体点云构建。
项目开发过程中,一共提取了12份人体点云数据,但由于设备获取得到的点云精度不够,导致某些点云数据在配准时产生极大误差,严重完整人体点云重建结果。经测试,舍弃两份侧面人体点云数据,利用剩下的10份数据构建出大致粗糙的完整人体点云模型。
构建人体正面与背面点云
在测试过程中,拍摄了人体12个角度的数据,将其分成两份,分别对应了人体的正面与背面。以正面人体点云数据为例,现有数据五份:body2.pcd、body3.pcd、body4.pcd、body5.pcd、body6.pcd,利用CloudCompare对数据进行body6→body2的一一配准与融合。
打开CloudCompare,加载这五份数据,选中body5.pcd与body6.pcd,先用Tools→Registration→Matching bouding-box centers 让两份点云实现位置对齐;
再用Tools→Registration→Fine registration(ICP)实现以body5为参照的点云配准;
选中body5.pcd以及配准后的body6.registered.pcd,用Merge multiple clouds 工具将两份点云融合;
重复以上步骤,实现五份点云数据的配准与融合,最终得到一份正面人体点云数据。
正面与背面人体点云数据的拼接
利用Translate/Rotate工具对点云进行平移旋转,再用Merge multiple clouds 工具实现两份人体点云数据的拼接以得到完整人体点云模型。
**五、技术优势分析
本项目具有以下几个技术优势:**
1、多视角观测变量融合的人体建模
多视角观测变量融合的相机追踪包含混合要素约束的关键帧检测方法和多维多视角观测值混合优化的姿态更新算法两部分内容。两者相辅相成,前者可为传感器追踪提供可靠、高质量的数据帧,关键帧选择将采用图像模糊度、数据帧基线以及特征点匹配率进行约束;多维多视角观测值混合优化的姿态更新算法将采用局部最小二乘平差的方式最小化相邻关键帧间多维视觉匹配点与几何匹配点混合重投影误差,实现传感器姿态更新。因此,该算法涉及二三维特征点分类及匹配点提取、多视角观测值索引构建及局部重投影误差最小二乘优化。该方法可以有效克服深度传感器测量精度和距离问题,采用SFM特征点进行辅助融合。
2、融合深度与视觉的高精度人体节点提取方法
采用的深度传感器受限于数据精度还难以准确对人体部位进行准确聚类获取到完整人体节点,传感器示例中仅仅能识别19个人体节点,还不足以用于进行人体姿态的分析,而深度相机可同步获取视觉与深度图像,本方案采用深度与视觉融合的人体节点提取方法进行25节点的人体节点提取,充分利用了彩色与深度融合信息,提取结果相比原始SDK提供的人体节点提取结果更加精确,且节点数量更多,能够更加有效的实现人体姿态和人体参数的提取。
完整Github代码地址:https://github.com/3DCVdeveloper/xuruili
备注:
点击下面链接,进入奥比中光开发者社区,了解更多3D视觉技术信息:https://developer.orbbec.com.cn/