基于方法库的点云去噪与精简算法 下载: 2219次
1 引言
在计算机辅助几何设计、医学诊断、文物保护、影视娱乐等应用需求的推动下,三维点云模型重建越来越受重视。由于三维点云模型重建过程复杂,分为点云数据获取、滤波、分割、配准、特征提取与曲面重建等步骤,因此面临许多问题。特别是在三维点云数据获取阶段易受到扫描设备精度、被测物体环境或者操作者经验等影响,不可避免存在各种噪声点,从而影响重建的精细度[1-2]。因此,为了提高点云模型重建的精度,必须对三维模型点云数据进行去噪、平滑、精简等预处理。
目前,有许多国内外研究者对点云模型的预处理阶段进行了积极探索,并提出了相应算法。文献[ 3-4]将二维图像双边滤波的思想引入三维点云模型中,提出了基于双边滤波的各向异性点云模型光顺去噪算法,但该算法对大尺度离群点的去噪效果不佳,会产生过光顺问题。文献[ 5]提出三维点云系统性的去噪平滑算法,该算法可较好地进行点云去噪,曲面保特征性强,但是计算量大。文献[ 6]提出了一种基于法向修正、中值滤波及迭代降噪的点云平滑算法,但当模型中离群点和噪声点较多时,法向量修正产生的偏差会严重影响点云平滑效果。文献[ 7-8]提出了三维点云噪声分类去噪算法,将点云噪声尺度化,利用不同的去噪算法对点云进行去噪和平滑,但是计算量繁重,影响后续重建效率。文献[ 9-10]主要针对彩色深度图像进行去噪精简,通过K-means聚类算法以及曲率估计得到点到聚类中心的欧氏距离和邻近点曲率变化,以此判断是否为噪声点并通过特征保持实现点云精简,该算法特征维度较高、计算量大。文献[ 11]利用数据点的曲率构造点云模型的模糊集,通过计算最小模糊熵得到最佳曲率阈值,在曲率满足一定要求时迭代计算模糊熵,实现点云精简,该算法描述性强,能很好地保留点云模型的细节特征,但是易受噪声点影响,造成误删特征点。
鉴于上述各种点云模型去噪与精简算法的优缺点,提出一种基于直通滤波、统计滤波、半径滤波、改进的双边滤波、体素栅格滤波的方法库的点云模型去噪与精简算法。该算法结合多种滤波算法有效去除掺杂在点云模型中的不同尺度的噪声点,而且将过密的点云模型均匀化,克服数据冗余量过大、重建耗时长、效率过低等问题,并对处理后的点云模型以三角网格面重建展示其固有形貌。
2 本文算法流程分析
首先将点云模型周围的噪声点分为大尺度噪声点与小尺度噪声点。大尺度噪声点指那些与点云模型主体关联性小,或距离点云模型主体中心较远的错误点。小尺度噪声点指那些与点云模型主体表面关联,或与点云模型真实点混杂的表面点。为了减少不同尺度噪声点对点云模型重建的影响,提出一种有效的点云模型去噪与精简算法,其流程如
1) 直通滤波[12]:分割出目标物。去除点云周围的无用信息,将目标点云分割出来。
2) 统计滤波结合半径滤波:去除大尺度噪声。先将直通滤波分割的结果作为点云输入,利用统计滤波进行初次去噪,可以去除大部分大尺度噪声点;接着利用半径滤波进行二次去噪,以利于去除剩余的大尺度噪声。
3) 改进的双边滤波:去除小尺度噪声。去除大尺度噪声后,使用改进的双边滤波进行小尺度噪声点的纠正与光顺平滑。
4) 体素栅格滤波:均匀精简。为了减少点云数据量对计算机内存造成的影响,提高点云重建效率,利用体素栅格滤波进行均匀精简。
5) 三角网格重建:曲面重建。根据重建物的曲面与原有模型表面的相似度来评估去噪与精简的效果。
3 相关理论
3.1 大尺度噪声点的去除
采用统计滤波和半径滤波去除大尺度噪声点。统计滤波指对查询点与邻域点集之间的距离进行统计分析,并去除一些不在设定范围内的大尺度噪声。三维点云模型中的第n个数据点记为qn,n=1,2,3,…,S,假设qn到任意点的距离为di,则qn到它所有k个邻近点的平均距离Davr-n用高斯分布(均值为μ,标准差为σ)表示为
设定标准范围Spa-n,用于判断模型中的数据点是否为噪声点,计算如下:
根据平均距离Davr-n和标准范围Spa-n选择相应的点。即当点qn对应的平均距离Davr-n大于标准范围Spa-n时,则删除该点;反之,则保留该点。参见
为了更加全面地去除大尺度噪声点,采用半径滤波进一步去除大尺度噪声点。半径滤波指遍历三维点云模型中每一个数据点,规定每个数据点在指定半径内至少要有一定数目的近邻。设以三维点云模型中的数据点qn为中心,r为半径的球体范围内的近邻数目为m,设定的最少近邻数目为M,其中,M=(2%~5%)·m。
根据m和M,判定是否保留对应的点qn:当m大于M,则保留该点;反之,则删除该点。参见
3.2 小尺度噪声点的去除
采用改进的双边滤波去除小尺度噪声点。双边滤波常应用于二维图像滤波,如今已推广到三维点云模型中,其基本思想是将三维点云模型表面的噪声点依次沿着数据点的法向量方向移动,逐渐调整噪声点的坐标与位置。
双边滤波的表达式为
式中p'i为滤波后的点云数据,pi为原始点云数据,α为双边滤波权重因子,ni为点pi的法矢。
α的表达式为
式中N(pi)为数据点pi的邻域点,ni、nj分别为数据点pi、pj的法向量,wc为数据点pi到其邻域点的光顺滤波权因子,ws为数据点pi的邻域点在pi法向ni上的特征保持权因子。
由于双边滤波因子受数据点局部邻域特征信息的影响较大,而且无法处理较大的噪声点,因此,为提高其保特征性与稳健性,对原始双边滤波因子进行改进。改进后的双边滤波因子为
光顺平滑权函数是标准高斯滤波,定义为
特征保持权函数也是标准高斯滤波,定义为
式中σc为数据点pi到其邻近点的距离对pi的影响因子,主要反映每个采样点的双边滤波因子的切向影响范围与控制光顺程度;σs为数据点pi到邻近点的距离在其法向上的投影对数据点pi的影响因子,主要反映每个采样点的双边滤波因子的法向影响范围与控制特征保持程度。改进双边滤波去噪平滑流程如下。
步骤1:对于每个数据点pi进行k邻域搜索,求出它的k个最近邻域点 N(pi)。
步骤2:散乱点云法向量估计。遍历三维点云模型中的每个数据点pi,在k邻域用主成分分析法获得数据点pi的法矢的基础上,通过法向一致性调整,使得所有法向量都朝向模型的外侧。
步骤3:求出每个邻域点的光顺平滑权函数参数和特征保持权函数参数,分别代表点pi到邻域点pj的距离x=
步骤4:将步骤3的结果代入(6)式和(7)式计算出光顺平滑权函数wc(x) 和特征保持权函数ws(y)。
步骤5:将步骤4的结果代入(5)式,计算出改进双边滤波因子的值α'。
步骤6:调整数据点pi的几何位置。通过(3)式计算使用改进双边滤波后的新数据点p'i的位置,将采样点pi移动到新的几何位置p'i处。
步骤7:当遍历完所有数据点后,得到光顺去噪后的新点云模型,算法终止。
3.3 点云的精简
为了进一步提高点云模型的重建效率以及去噪算法的精度,采用文献[ 13]的k邻域三维体素栅格点云精简算法对去噪后点云模型进行均匀精简。其算法具体步骤如下。
步骤1:分别获取点云数据在坐标系内x轴、y轴和z轴3个方向上的最大、最小坐标值,计算长方体包围盒的边长。
步骤2:预先设定体素栅格内不少于k个数据,确定小立方体栅格边长。
步骤3:通过最小二乘平面法来估计数据点的法向量,并依据模型中每个数据点pi及其k近邻点的关系计算出每个数据点pi及其k近邻点的最小二乘局部平面H,并以最小二乘局部平面的法向量近似表示三维点云数据模型的法向量。
步骤4:通过主成分分析法得到最小二乘局部平面H的法向量,并计算出数据点pi经过该法向量的k邻域点质心,通过分解数据点pi到质心的距离所组成的协方差矩阵可计算出特征值以及对应的特征向量,以最小特征向量近似表示数据点pi的法向量。
步骤5:根据所求点云数据模型中每个数据点pi的法向量与其邻近点法向量之间的夹角是否大于预先设定的阈值来判定该数据点是否特征点,选取离小立方体栅格重心最近的数据点来代替整个栅格内所有数据点,以此完成点云的精简。
步骤6:利用贪婪投影三角化算法[14-15]对精简后的点云模型重建。
4 实验结果与分析
为验证本文算法的可行性,使用微软Kinect 2.0视觉传感器扫描实物人台模型,以扫描获取的PCD格式的三维模型数据为研究对象。实验平台为Window 10 64位操作系统,Visual Studio 2013 Visual C++ win 32控制台应用程序,开源点云库为PCL1.7.2。
图 6. 使用本文算法测试45°人体点云模型的结果图。(a)原始点云;(b)大尺度去噪;(c)小尺度去噪;(d)均匀精简;(e)重建
Fig. 6. Test results of 45° human point cloud model using the proposed algorithm. (a) Original point cloud; (b) large scale denoising; (c) small scale denoising; (d) uniform simplification; (e) reconstruction
图 7. 使用本文算法测试180°人体点云模型的结果图。(a)原始点云;(b)大尺度去噪;(c)小尺度去噪;(d)均匀精简;(e)重建
Fig. 7. Test results of 180° human point cloud model using the proposed algorithm. (a) Original point cloud; (b) large scale denoising; (c) small scale denoising; (d) uniform simplification; (e) reconstruction
图 8. 使用本文算法测试自身点云模型的结果图。(a)原始点云;(b)大尺度去噪;(c)小尺度去噪;(d)均匀精简;(e)重建
Fig. 8. Test results of self point cloud model using the proposed algorithm. (a) Original point cloud; (b) large scale denoising; (c) small scale denoising; (d) uniform simplification; (e) reconstruction
表 1. 每个模块的运行时间与点云数量的变化情况
Table 1. Running time of each program module and variations of the point number of the point cloud
|
由
综合整体效果而言,本文算法原理简单,不仅能有效去除点云模型周围不同尺度的噪声点,而且对点云模型有一定的快速平滑和光顺作用;除此之外,能有效去除模型中的部分点云数据冗余,将过密的点云数据均匀化,是一种有效的点云去噪与精简算法。
5 结论
提出一种基于方法库的点云模型去噪与精简算法,主要以最新的开源点云库PCL为基础,以微软Kinect 2.0扫描的PCD格式的三维点云数据为研究对象,综合运用PCL中直通滤波、统计滤波、半径滤波、改进的双边滤波、体素栅格滤波等算法对45°人体点云模型、180°人体点云模型以及自身点云模型进行点云模型的去噪与精简研究,最终表明本文算法能够有效去除点云模型中不同尺度的噪声点,而且在没有破坏点云本身几何结构的前提下,能高效去除点云模型中的冗余数据,使过密的点云均匀精简,并以三角网格面重建出高精度的三维人体点云模型。该算法原理简单,易于实现,具有一定的实用价值。
[2] 葛宝臻, 赵丹, 田庆国, 等. 三光带激光三维人脸扫描方法[J]. 中国激光, 2010, 37(6): 1594-1598.
[3] Fleishman S, Drori I, Cohen-Or D. Bilateral mesh denoising[J]. ACM Transactions on Graphics, 2003, 22(3): 950-953.
[5] Yang ZX, Xiao DF. A systemic point-cloud de-noising and smoothing method for 3D shape reuse[C]. Proceedings of the 2012 12th International Conference on Control, Automation, Robotics and Vision, 2012: 1722- 1727.
[6] 苏志勋, 栗志扬, 王小超. 基于法向修正及中值滤波的点云平滑[J]. 计算机辅助设计与图形学学报, 2010, 22(11): 1892-1898.
[7] 曹爽, 岳建平, 马文. 基于特征选择的双边滤波点云去噪算法[J]. 东南大学学报: 自然科学版, 2013, 43(S2): 351-354.
[8] 袁华, 庞建铿, 莫建文. 基于噪声分类的双边滤波点云去噪算法[J]. 计算机应用, 2015, 35(8): 2305-2310.
[9] Zhang XM, Yu XG, Wan WG, et al. The simplification of 3D color point cloud based on voxel[C]// Proceedings of IET International Conference on Smart and Sustainable City, 2013: 251- 254.
[10] 苏本跃, 马金宇, 彭玉升, 等. 基于K-means聚类的RGBD点云去噪和精简算法[J]. 系统仿真学报, 2016, 28(10): 2329-2334.
[11] 陈璋雯, 达飞鹏. 基于模糊熵迭代的三维点云精简算法[J]. 光学学报, 2013, 33(8): 0815001.
[12] 薄夫祥. 基于Kinect与PCL的三维重建系统研究[D]. 沈阳: 东北大学, 2013: 44- 45.
Bo FX. Research on 3D reconstruction system based on Kinect and PCL[D]. Shenyang: Northeastern University, 2013: 44- 45.
[13] 李仁忠, 杨曼, 刘阳阳, 等. 一种散乱点云的均匀精简方法[J]. 光学学报, 2017, 37(7): 0710002.
[15] 高向敏. 散乱点云模型三角网格化处理算法的研究与实现[D]. 南京: 南京师范大学, 2011: 32- 57.
Gao XM. Research and implementation of triangular mesh processing algorithm for scattered point cloud model[D]. Nanjing: Nanjing Normal University, 2011: 32- 57.
李仁忠, 杨曼, 冉媛, 张缓缓, 景军锋, 李鹏飞. 基于方法库的点云去噪与精简算法[J]. 激光与光电子学进展, 2018, 55(1): 011008. Li Renzhong, Yang Man, Ran Yuan, Zhang Huanhuan, Jing Junfeng, Li Pengfei. Point Cloud Denoising and Simplification Algorithm Based on Method Library[J]. Laser & Optoelectronics Progress, 2018, 55(1): 011008.