基于SR300体感器人体扫描点云的去噪方法
2018-10-13张铭凯梁晋刘烈金梁瑜王晓光
张铭凯,梁晋,刘烈金,梁瑜,王晓光
基于SR300体感器人体扫描点云的去噪方法
张铭凯,梁晋,刘烈金,梁瑜,王晓光
(西安交通大学 机械工程学院,机械制造系统工程国家重点实验室,陕西 西安,710049)
为克服传统三维人体扫描系统体积大、线路复杂、成本高的缺点,采用SR300体感器获取三维人体点云,针对体感扫描点云噪声大的问题,提出由外而内,分步去除噪声的系统方法。此方法无需点云间的拓扑关系,可以直接对三维散乱点云进行处理。首先,设计体感扫描实验平台获取人体点云并采用圆柱体分割法进行点云预处理;接着,提出并实现2种体外离群点去噪的算法,即统计分析法和球半径法,将这2种算法结合使用去除不同类型的离群点;最后,调整人体深度图的双边滤波去噪算法的权重因子到合理的范围内,分别以单幅点云和全身点云为对象,去噪时间分别仅为传统双边滤波的7.52%和3.69%。借助VS2010开发环境,并调用PCL库进行大量算法实验。研究结果表明:本文方法能够有效去除内外噪点且能保持边缘特征,获得较好的三维人体点云结果。
SR300;人体扫描;点云去噪;深度图;双边滤波
近年来,随着体感技术的迅速发展,使用体感器用于人体扫描的技术正在成为现今的研究热点。目前,已有大量学者使用微软的Kinect体感器扫描而重建三维人体模型[1−3],体感扫描广泛应用在人机交互、虚拟现实、3D打印等领域。如张英烈等[4]采用体感器扫描识别提取肢体运动,实现人体跟踪而获得游戏中的沉浸式体验;赖军等[5]采用扫描仪获取人体三维点云模型,进而实现提取人体尺寸的目的;蔡林沁等[6]提出一种基于手势识别的虚拟环境体感交互方法,实现了与虚拟环境的自然交互控制。传统的人体三维重建是采用非接触式三维光学扫描仪来实现的,为了获得较好的人体点云模型,往往使用工业相机和镜头。有的光栅式扫描系统还采用投影仪完成光栅投影,可这些设备价格昂贵,体积大,走线复杂,不易携带和维护。传统扫描仪只能扫描身体局部,若设置转台,则会因为扫描时间长、身体轻微动荡而增大误差。本文采用英特尔公司2016年初推出的SR300体感器,有效规避了上述缺点,其将黑白相机和投射器集成在1个模组上,只需1根USB3.0数据线即可完成所有数据的连接,小巧又便携,由多个体感器搭载的系统可几秒内完成全身扫描。但由于体感器设备本身误差、人体结构复杂等因素,获取的深度数据噪声大,影响人物重建效果,需对点云进行去噪处理。1个好的点云去噪算法一般需具备以下4种特征[7]:1) 有效剔除体外和夹杂在人体模型中的各种形式的噪声;2) 模型表面光顺的同时保持固有的细节信息;3) 在处理过程中防止模型体积收缩和扭曲变形;4) 较低的时间复杂度和空间复杂度。所以,研究如何有效去除所有噪点并获得高质量的三维点云数据是当前研究的难点。体感扫描噪声分布有不同规律,曹爽等[8]将散乱点噪声分为3类,实现了基于特征的点云去噪。其实噪点大体可以归结为2类:一类是主体点云外的噪点,也叫离群点或错误点;另一类是人体表面上的噪点,这些噪点使人体模型表面坑洼和粗糙。点云去噪按先后顺序也分人体散乱点模型的去噪和点云网格化(一般是三角化)的去噪。对于网格化点云去噪目前已获得广泛研究,如吴慎禄等[7]将点云数据划分为特征信息少的平坦区域和特征信息丰富的区域,分别采用不同算法去噪,完成了基于特征信息分类的点云去噪。苏本跃等[9]采用K−means聚类法对点云聚类,根据点到聚类中心距离和邻近点曲率变化判断噪声,对去除大量外部噪声取得一定效果。各种去噪算法各有优劣,结合各种方法优势的去噪方法被广泛使用。如ZHAO等[10]结合均值滤波和中值滤波优势应用于点云的去噪平滑,能保持一定的特征。TOMASI等[11]首先提出了双边滤波算法,实现了图像的降噪,还能保持边缘细节特征,后来被推广应用到点云去噪上。ZAMAN等[12]采用粒子群优化技术确定核密度带宽,接着设置阀值条件,使用均值漂移聚类算法去除离群点,移除离群点后,再采用双边滤波法对剩余点进行网格平滑,这种粒子群优化技术增强了核密度估计的鲁棒性,先去除离群点再实施网格平滑使去噪效果显著。与具有拓扑连接信息的网格化点云不同,点模型的去噪相对较复杂,去噪算法也相对较少。如离群点噪声去除方法按统计学可以分为3类:基于深度的点云去噪法[13]、基于距离的点云去噪法[14]、基于密度的点云去噪法[15]。此外,还有一些比较成功的点模型去噪方法。如梁新合等[16]通过计算点的法向矢量和法向局部方差获得与表面有关的自适应最优邻域,并利用3边滤波实现散乱点云的去噪,获得了光顺的离散表面。LIU等[17]利用稀疏点标记密集点,基于八叉树划分法对标记的密集点进行预处理,提高了算法效率,与全局点云去噪相比,保持了细节特征,这种方法新颖,具有拓展性。考虑到散乱点云本身有噪声,不可避免地会影响到三维重建的精度,因此,对带有噪声的点模型进行离群点去噪,再进行表面光顺去噪会更有意义。本文针对SR300体感器扫描人体点云噪声大、噪声点类型不同、一次去噪难以完全去除噪声的问题,采用由外而内分步去噪的方法进行去噪处理。首先使用圆柱体分割法获取条件范围内的点云,再结合使用统计分析法和球半径法去除离群点,最后采用一种针对深度图的双边滤波算法实现表面点云的光顺去噪。对去噪算法进行大量实验,找到合理范围内的参数,最大程度地达到去噪的目的。本文采用一种新的体感器用于人体扫描,可达到低成本获取人体三维点云的目的,同时去噪算法也能解决体感点云噪声大的问题,为后续人体三维重建提供参考。
1 三维人体点云获取及预处理
采用英特尔SR300体感器获取人体点云数据,体感器也叫深度相机。SR300组件包括红外激光投射器、红外黑白相机和彩色相机各1个,投射器采用编码光深技术,采集时投射出不可见的格雷码编码图像。红外相机以分辨率为640像素×480像素,60帧/s的速度获取人体深度数据。彩色相机以200万像素获取RGB纹理进行贴图。
1.1 三维人体点云获取
设计的体感扫描系统结构由4根钢架立柱组成,4根扫描立柱形成的扫描框架长×宽×高为1 600 mm× 1 200 mm×1 600 mm(实际高度2 000 mm),每根立柱上安装4个体感器,共16个,同一立柱上的体感器之间的距离为400 mm。扫描框架中间为本课题组研制的标定板,用于扫描前16个相机内外参数的标定。因为相机标定时投射红外图像,所以,在其周围增设红外灯带进行补光。标定成功后,人站立在框架中央,各相机采集图片,系统通过点云融合后获得全身三维人体点云。
1.2 点云预处理
针对体感扫描点云噪声大的问题,通过设定条件来限制人体点云范围,可以初步获取较好的点云质量,大大缩减后期的处理时间。传统的方法是分别设置,和轴的取值范围,对主体点云形成1个长方体型包围盒,删除处于盒外的点云,保留盒内的主体点云。如何东健等[18]采用此方法对植物三维点云完成了预处理。在一些特殊情况下,为获得更好的景深效果,在身高较矮的人脚下垫物再扫描,扫描时会把垫物和地面点云一起扫描,加上背景环境数据,会存在大量噪点。预处理的目的就是去除这些噪点。本文采用圆柱体分割法进行预处理,分割出圆柱体内点云,对圆柱体外点则删除。具体算法步骤为:1) 移动坐标系到人体鞋底点云平面即双脚正中间,进行直通滤波,过滤轴上不在定义坐标范围内的点;2) 对过滤的每个点进行表面法线估计;3) 基于法线估计分割获取平面点云模型;4) 限制圆柱体模型半径,分割出圆柱体点云模型。
2 人体点云去噪处理
经过预处理之后的人体点云,是圆柱体条件范围内保留的点云,包括主体点云和体外离群点。对于体外离群点,主要有偏离主体点云外的稀疏点和单个孤点。对于这2种类型离群点,分别采用统计分析法和球半径法去除,最后,针对深度图的双边滤波算法进行人体表面点云光顺去噪,在获取点云表面光顺的同时保持细节特征。
2.1 统计分析法去噪
对人体点云进行部分采样,测量任意一点与近邻点的距离,统计得出距离大都处于平均值。距离平均值越近和越远的点依次减少,因此,近邻点云距离分布具有均匀性、对称性、均匀变动性,近似服从正态分布,近邻点云距离与个数的关系如图1所示。
图1 近邻点云距离概率密度图
重复上述过程,遍历所有人体点云,计算所有点的单点距离均值d,求得全局距离均值为
则标准差为
最后得到距离阀值为
2.2 球半径法去噪
与统计分析法根据邻域内距离判断离群点不同,球半径法是一种通过判断某点球形邻域内是否满足点个数来决定该点删除与否的方法。设某点为P,定义其球半径为和球邻域点数,若P在球半径领域内搜索得到的点数小于,则删除P点,领域内至少有个近邻的点则保留。遍历所有人体点云,通过此步骤判断每个点的去留,如图2所示。
图2 球半径法示意图
定义好合适半径后,取不同近邻数,去噪结果不同:
1) 若=1,则删除1(1近邻数为0,不满足至少1个近邻点)和2,保留3和4;
2) 若=2,则删除1和2(2近邻数为1,1和2均没有满足至少2个近邻点),保留3和4;
3) 若=3,则删除1,2和3(3近邻数为2,没有满足至少3个近邻点),保留4。
2.3 双边滤波法去噪
双边滤波是一种表面点云光顺去噪方法,本文经过改进此方法,将该方法成功地应用于体感扫描人体点云的去噪。双边滤波是在高斯滤波基础上增加了1个高斯方差,在去噪过程中能保持高频细节,而高斯滤波则会明显地模糊边缘。双边滤波是结合了图像的空间邻近度和像素的滤波技术,即同时考虑了空间距离权重和点云像素权重,最后达到滤波效果。其算法思想可以简单用1个公式表示:空间函数乘以值域函数等于输出点云像素。
具体计算步骤如下。
式中:(,)和(,)分别为点和点的坐标。
3 去噪算法实验与结果分析
3.1 点云预处理结果与分析
(a) 杂点和主体点云;(b) 预处理后效果
3.2 统计分析法实验与结果分析
:1—0.1;2—0.3;3—0.5;4—1.0;5—2.0。
(a) =0.1,k=40;(b)=2.0,k=40;(c)=0.5,k=40
3.3 球半径法实验与结果分析
使用统计分析法去噪后,基本上能去除大部分离群点,接着采用球半径法去除剩余小部分离群点。在球半径法去噪实验中,定义球半径为30 mm,原始点云数为282 652个,通过选取不同的近邻数进行算法实验所得结果如表1所示。
表1 不同参数去噪数据
由表1可知:对于同一球半径,近邻数越多,去除的点云数越多,而算法时间基本不变,所以,算法时间主要与半径相关。近邻数取得太少,去噪不彻底,取得太多则会过度去噪。当半径为30 mm,近邻数为50个时,去噪效果最好,如图6所示。
(a) 去噪前;(b) 去噪后
3.4 双边滤波算法实现
因石膏本身粗糙,所以,扫描效果相对粗糙,滤波后效果显著;塑料表面相对光滑,滤波后能保持细节特征。为验证本文算法的效率,以模特头像和球半径去噪后全身人体点云为对象,模特原始点云数为44 986个,全身人体点云数为282 637个,进行传统双边滤波和本文双边滤波后统计结果如表2所示。
(a) 人体石膏头像滤波前;(b) 人体石膏头像滤波后;(c) 塑料模特滤波前;(d) 塑料模特滤波后
表2 不同算法去噪结果
从表2可知:对于体感人体点云数量不同的情况,传统双边滤波方法去噪时间基本上与点云数成正比,而使用本文双边滤波算法对不同点云数去噪时间变化不大。模特头像和全身人体点云滤波时间分别为传统双边滤波的7.52%和3.69%,效率显著提高,且能保持细节特征。
3.5 去噪算法对比分析
采用圆柱体分割法进行点云预处理去除各种复杂背景数据是体感扫描点云去噪的必要一步,其实质是根据用户定义相关的条件,分割出圆柱体内点云数据,去除对象主要是系统噪声,大致确定主体点云的范围。统计分析法和球半径法均是去除离群点的方法,由于散乱点没有相应的拓扑关系,所以,它们的共同点都是依据近邻关系设置去噪因子。但不同的是,统计分析法根据近邻平均距离来去除离群点,球半径法则根据球半径范围内近邻数去除离群点。根据去噪结果分析,统计分析法适合去除稀疏点云,球半径法特别适合去除小片聚集点云或单个孤立点,将两者结合基本可以有效去除所有的离群点。针对深度图的双边滤波光顺去噪法是对人体表面点云的平滑处理,得到更真实的人体模型。由于没有复杂的邻域拓扑关系,散乱点模型去噪相对网格化点云去噪效率高,同时也能保持相应特征。综合以上系统性去噪方法,可实现体感人体扫描点云大噪声去除的目标。
4 结论
1) 设计的体感人体扫描实验平台能获取全身三维人体点云数据,但扫描效果较粗糙,后续体感人体扫描系统有待改进。
3) 本文针对深度数据的双边滤波去噪算法比传统双边滤波法去噪效率高,对模特头像和全身人体点云滤波时间分别是传统双边滤波的7.52%和3.69%,既能点云表面光顺,又能保证细节特征。
[1] 马旋, 薛原, 杨若瑜, 等. 基于Kinect的人体实时三维重建及其应用[J]. 计算机辅助设计与图形学学报, 2014, 26(10): 1720−1726. MA Xuan, XUE Yuan, YANG Ruoyu, et al. Kinect-based real time 3D reconstruction from Kinect[J]. Journal of Computer- aided Design &Computer Graphies, 2014, 26(10): 1720−1726.
[2] 周瑾, 潘建江, 童晶, 等. 使用Kinect快速重建三维人体[J]. 计算机辅助设计与图形学学报, 2013, 25(6): 873−879. ZHOU Jin, PAN Jianjiang, TONG Jing, et al. Fast 3D human body reconstruction from Kinect[J]. Journal of Computer-aided Design & Computer Graphies, 2013, 25(6): 873−879.
[3] 乔思航, 程志全, 陈寅, 等. 基于三个Kinect 的个性化人体重建[J]. 系统仿真学报, 2013, 25(10): 2408−2411. QIAO Sihang, CHENG Zhiquan, CHEN Yin, et al. Personalized full-body reconstruction using three Kinect[J]. Journal of System Simulation, 2013, 25(10): 2408−2411.
[4] 张英烈, 夏梦, 陈临强. 基于视频跟踪的体感游戏设计[J]. 计算机工程与应用, 2015, 51(17): 44−47. ZHANG Yinglie, XIA Meng, CHEN Linqiang. Design of somatosensory games based on video tracking[J]. Computer Engineering and Applications, 2015, 51(17): 44−47.
[5] 赖军, 王博, 付全, 等. 基于点云模型的人体尺寸自动提取方法[J]. 中南大学学报(自然科学版), 2014, 45(8): 2676−2683. LAI Jun, WANG Bo, FU Quan, et al. Automatic extraction method of human body sizes based on 3D point clouds[J]. Journal of Central South University(Science and Technology), 2014, 45(8): 2676−2683.
[6] 蔡林沁, 张建荣, 刘彬彬. 基于手势识别的虚拟环境体感交互控制[J]. 华中科技大学学报(自然科学版), 2015, 43(S1): 136−139, 165. CAI Linqin, ZHANG Jianrong, LIU Binbin. Somatosensory interaction with virtual environments based on gesture recognition[J]. Journal of Huazhong University of Science and Technology(Natural Science Edition), 2015, 43(S1): 136−139, 165.
[7] 吴慎禄, 史皓良, 陈华伟. 基于特征信息分类的三维点数据去噪[J]. 光学精密工程, 2016, 24(6): 1465−1473. WU Shenlu, SHI Haoliang, CHEN Huawei. Denoising of three dimensional point data based on classification of feature information[J]. Optics Precision Engineering, 2016, 24(6): 1465−1473.
[8] 曹爽, 岳建平, 马文. 基于特征选择的双边滤波点云去噪算法[J]. 东南大学学报(自然科学版), 2013, 43(2): 351−354. CAO Shuang, YUE Jianping, MA Wen. Bilateral filtering denoise algorithm for point cloud based on feature selection[J]. Journal of Southeast University(Natural Science Edition), 2013, 43(2): 351−354.
[9] 苏本跃, 马金宇, 彭玉升, 等. 基于K-means 聚类的RGBD点云去噪和精简算法[J]. 系统仿真学报, 2016, 28(10): 2329−2334. SU Benyue, MA Jinyu, PENG Yusheng, et al. Algorithm for RGBD point cloud denoising and simplification based on K-means clustering[J]. Journal of System Simulation, 2016, 28(10): 2329−2334.
[10] ZHAO Ping, BAI Xuewei, LI Yongkui, et al. A new method of data smoothing for scan-line point cloud in reverse engineering[J]. Advanced Materials Research, 2014, 1006/1007: 352−355.
[11] TOMASI C, MANDUCHI R. Bilateral filtering for gray and color images[C]// Proceedings of the IEEE International Conference on Computer Vision. Bombay, India: IEEE, 1998: 839−846.
[12] ZAMAN F, WONG Y P, NG B Y. Density-based denoising of point cloud[C]// Lecture Notes in Electrical Engineering. Penang, Malaysia:Springer Verlag, 2017: 287−295.
[13] LI Jia, LIN Huan, LAN Qiuping, et al. Algorithm of recognizing and correcting the outlier based on depth difference[J]. Engineering of Surveying and Mapping, 2014, 23(11): 1−6.
[14] JIANG Feng, DU Junwei, SUI Yuefei, et al. Outlier detection based on boundary and distance[J].Acta Electronica Sinica, 2010, 38(3): 700−705.
[15] 梁士超, 韩永国, 吴亚东. 改进的核密度点云去噪算法的研究与实现[J]. 计算机工程与设计, 2015, 36(5): 1285−1289. LIANG Shichao, HAN Yongguo, WU Yadong. Research and implementation of improved kernel-density denoising algorithm based on point cloud[J]. Computer and Engineering and Design, 2015, 36(5): 1285−1289.
[16] 梁新合, 梁晋, 郭成, 等. 基于自适应最优邻域的散乱点云降噪技术研究[J]. 中国机械工程, 2010, 21(6): 639−643.LIANG Xinhe, LIANG Jin, GUO Cheng, et al. Study on scatter point cloud denoising technology based on self-adaptive optimal neighborhood[J]. China Mechanical Engineering, 2010, 21(6): 639−643.
[17] LIU Chang, YUAN Ding, ZHAO Hongwei. 3D point cloud denoising and normal estimation for 3D surface reconstruction[C]// International Conference on Robotics and Biomimetics. Zhuhai, China: IEEE, 2015: 820−825.
[18] 何东健, 邵小宁, 王丹, 等. Kinect 获取植物三维点云数据的去噪方法[J]. 农业机械学报, 2016, 46(1): 331−336. HE Dongjian, SHAO Xiaoning, WANG Dan, et al. Denoising method of 3-D point cloud date of plants obtained by Kinect[J]. Transactions of the Chinese Society for Agricultural Machinery, 2016, 46(1): 331−336.
(编辑 刘锦伟)
Denoising method of body scanning point cloud obtained by SR300
ZHANG Mingkai, LIANG Jin, LIU Liejin, LIANG Yu, WANG Xiaoguang
(State Key Laboratory for Manufacturing Systems Engineering, School of Mechanical Engineering, Xi’an Jiaotong University, Xi’an 710049, China)
In order to avoid the disadvantages of traditional 3D body scanning system such as large volume, complex circuit and high cost, SR300 was used to get 3D body point cloud. To deal with the problem of large noise in the scanning data, a step-by-step denoising method featuring outside-in was proposed. This method could deal with scattered 3D point cloud directly without the topological relation. Firstly, the somatosensory scanning platform was designed to get the human body point cloud and the point cloud preprocessing was carried out by using the cylinder segmentation method. Then, two algorithms named statistical analysis method and ball radius method were proposed and implemented to remove outliers of different types. Finally, bilateral filtering algorithm for human depth image was tested to make sure the weight factors were suitable. Taking the single point cloud and the whole body point cloud as examples, the denoising time was only 7.52% and 3.69% of the traditional bilateral filtering, respectively. A lot of algorithm experiments were taken by using the PCL library under the VS2010 development environment. The results show that the proposed method can effectively remove the internal and external noise with the edge feature maintained, and can get better 3D body cloud data.
SR300; body scanning; point cloud denoising; depth image; bilateral filtering
10.11817/j.issn.1672-7207.2018.09.015
TP391.4
A
1672−7207(2018)09−2225−07
2017−09−06;
2017−10−28
国家自然科学基金资助项目(51675404,51421004) (Projects(51675404, 51421004) supported by the National Natural Science Foundation of China)
梁晋,博士,教授,博士生导师,从事机电控制、机器视觉等研究;E-mail: liangjin@mail.xjtu.edu.cn