激光与光电子学进展, 2018, 55 (1): 011008, 网络出版: 2018-09-10   

基于方法库的点云去噪与精简算法 下载: 2219次

Point Cloud Denoising and Simplification Algorithm Based on Method Library
作者单位
西安工程大学电信学院, 陕西 西安710048
摘要
为了减少不同尺度噪声对三维点云模型重建效果的影响,提出一种基于直通滤波、统计滤波、半径滤波、改进的双边滤波、体素栅格滤波的方法库的点云模型去噪与精简算法。首先利用直通滤波将目标物体提取出来,再依据噪声点离模型主体的距离,将其分为小尺度噪声和大尺度噪声,然后利用统计滤波结合半径滤波去除大尺度噪声,利用改进的双边滤波去除小尺度噪声,最后通过体素栅格滤波进行点云精简来降低空间复杂度,并以三角网格面重建展示该算法的精度效果。实验结果表明,该算法可有效去除点云模型的不同尺度噪声,在不破坏点云本身几何结构的前提下,保证点云精简的均匀化,而且算法执行速度快,重建效率高。
Abstract
In order to reduce the influence of different scales of noise on the reconstruction of three-dimensional point cloud models, a denoising and simplification algorithm based on the method library of the passthrough filter, statistical filter, radius filter, improved bilateral filter and voxel grid filter is proposed. Firstly, the object is extracted by the passthrough filter. Then according to the distance between the noise points and the model body, the noise points are divided into the small scale noise and the large scale noise. The large scale noise is removed by the statistical filter and the radius filter, and the small scale noise is removed by the improved bilateral filter. Finally, the three-dimensional point cloud is simplified by the voxel grid filter to reduce the space complexity and the accuracy of the proposed algorithm is shown via the triangular mesh reconstruction. The experimental results show that the proposed algorithm can effectively remove different scales of noise existing in the point cloud model and ensure the uniformity of point cloud simplification under the precondition of not destroying the geometrical structure of the point cloud. In addition, this algorithm runs quickly and has high reconstruction efficiency.

1 引言

在计算机辅助几何设计、医学诊断、文物保护、影视娱乐等应用需求的推动下,三维点云模型重建越来越受重视。由于三维点云模型重建过程复杂,分为点云数据获取、滤波、分割、配准、特征提取与曲面重建等步骤,因此面临许多问题。特别是在三维点云数据获取阶段易受到扫描设备精度、被测物体环境或者操作者经验等影响,不可避免存在各种噪声点,从而影响重建的精细度[1-2]。因此,为了提高点云模型重建的精度,必须对三维模型点云数据进行去噪、平滑、精简等预处理。

目前,有许多国内外研究者对点云模型的预处理阶段进行了积极探索,并提出了相应算法。文献[ 3-4]将二维图像双边滤波的思想引入三维点云模型中,提出了基于双边滤波的各向异性点云模型光顺去噪算法,但该算法对大尺度离群点的去噪效果不佳,会产生过光顺问题。文献[ 5]提出三维点云系统性的去噪平滑算法,该算法可较好地进行点云去噪,曲面保特征性强,但是计算量大。文献[ 6]提出了一种基于法向修正、中值滤波及迭代降噪的点云平滑算法,但当模型中离群点和噪声点较多时,法向量修正产生的偏差会严重影响点云平滑效果。文献[ 7-8]提出了三维点云噪声分类去噪算法,将点云噪声尺度化,利用不同的去噪算法对点云进行去噪和平滑,但是计算量繁重,影响后续重建效率。文献[ 9-10]主要针对彩色深度图像进行去噪精简,通过K-means聚类算法以及曲率估计得到点到聚类中心的欧氏距离和邻近点曲率变化,以此判断是否为噪声点并通过特征保持实现点云精简,该算法特征维度较高、计算量大。文献[ 11]利用数据点的曲率构造点云模型的模糊集,通过计算最小模糊熵得到最佳曲率阈值,在曲率满足一定要求时迭代计算模糊熵,实现点云精简,该算法描述性强,能很好地保留点云模型的细节特征,但是易受噪声点影响,造成误删特征点。

鉴于上述各种点云模型去噪与精简算法的优缺点,提出一种基于直通滤波、统计滤波、半径滤波、改进的双边滤波、体素栅格滤波的方法库的点云模型去噪与精简算法。该算法结合多种滤波算法有效去除掺杂在点云模型中的不同尺度的噪声点,而且将过密的点云模型均匀化,克服数据冗余量过大、重建耗时长、效率过低等问题,并对处理后的点云模型以三角网格面重建展示其固有形貌。

2 本文算法流程分析

首先将点云模型周围的噪声点分为大尺度噪声点与小尺度噪声点。大尺度噪声点指那些与点云模型主体关联性小,或距离点云模型主体中心较远的错误点。小尺度噪声点指那些与点云模型主体表面关联,或与点云模型真实点混杂的表面点。为了减少不同尺度噪声点对点云模型重建的影响,提出一种有效的点云模型去噪与精简算法,其流程如图1所示。各部分的作用如下。

图 1. 算法流程图

Fig. 1. Flow chart of the proposed algorithm

下载图片 查看所有图片

1) 直通滤波[12]:分割出目标物。去除点云周围的无用信息,将目标点云分割出来。

2) 统计滤波结合半径滤波:去除大尺度噪声。先将直通滤波分割的结果作为点云输入,利用统计滤波进行初次去噪,可以去除大部分大尺度噪声点;接着利用半径滤波进行二次去噪,以利于去除剩余的大尺度噪声。

3) 改进的双边滤波:去除小尺度噪声。去除大尺度噪声后,使用改进的双边滤波进行小尺度噪声点的纠正与光顺平滑。

4) 体素栅格滤波:均匀精简。为了减少点云数据量对计算机内存造成的影响,提高点云重建效率,利用体素栅格滤波进行均匀精简。

5) 三角网格重建:曲面重建。根据重建物的曲面与原有模型表面的相似度来评估去噪与精简的效果。

3 相关理论

3.1 大尺度噪声点的去除

采用统计滤波和半径滤波去除大尺度噪声点。统计滤波指对查询点与邻域点集之间的距离进行统计分析,并去除一些不在设定范围内的大尺度噪声。三维点云模型中的第n个数据点记为qn,n=1,2,3,…,S,假设qn到任意点的距离为di,则qn到它所有k个邻近点的平均距离Davr-n用高斯分布(均值为μ,标准差为σ)表示为

Davr-n=i=1kdik(1)

设定标准范围Spa-n,用于判断模型中的数据点是否为噪声点,计算如下:

Spa-n=μ±g·σ,g=1,2,(2)

根据平均距离Davr-n和标准范围Spa-n选择相应的点。即当点qn对应的平均距离Davr-n大于标准范围Spa-n时,则删除该点;反之,则保留该点。参见图2,以k=4为例,随机选取模型中一个数据点,计算其周围4个邻近点的平均距离Davr-n(黑圆表示),设定的标准范围(绿圆表示),只有b点被删除。

图 2. 统计滤波示意图

Fig. 2. Principle sketch map of the statistical filter

下载图片 查看所有图片

为了更加全面地去除大尺度噪声点,采用半径滤波进一步去除大尺度噪声点。半径滤波指遍历三维点云模型中每一个数据点,规定每个数据点在指定半径内至少要有一定数目的近邻。设以三维点云模型中的数据点qn为中心,r为半径的球体范围内的近邻数目为m,设定的最少近邻数目为M,其中,M=(2%~5%)·m

根据mM,判定是否保留对应的点qn:当m大于M,则保留该点;反之,则删除该点。参见图3,在设定半径(绿圆表示)指定条件至少要有3 个邻居时,只有f点会被删除,如果指定至少要有5个邻居,则e点和f点都将被删除。

图 3. 半径滤波示意图

Fig. 3. Principle sketch map of the radius filter

下载图片 查看所有图片

3.2 小尺度噪声点的去除

采用改进的双边滤波去除小尺度噪声点。双边滤波常应用于二维图像滤波,如今已推广到三维点云模型中,其基本思想是将三维点云模型表面的噪声点依次沿着数据点的法向量方向移动,逐渐调整噪声点的坐标与位置。

双边滤波的表达式为

p'i=pi+α·ni,(3)

式中p'i为滤波后的点云数据,pi为原始点云数据,α为双边滤波权重因子,ni为点pi的法矢。

α的表达式为

α=pjN(pi)wcpi-pjwsni,pi-pj<pi-pj,nj>pjN(pi)wcpi-pjwsni,pi-pj,(4)

式中N(pi)为数据点pi的邻域点,ninj分别为数据点pipj的法向量,wc为数据点pi到其邻域点的光顺滤波权因子,ws为数据点pi的邻域点在pi法向ni上的特征保持权因子。

由于双边滤波因子受数据点局部邻域特征信息的影响较大,而且无法处理较大的噪声点,因此,为提高其保特征性与稳健性,对原始双边滤波因子进行改进。改进后的双边滤波因子为

α'=pjN(pi)wcpi-pjws<ni,nj>-1<pi-pj,nj>pjN(pi)wcpi-pjws<ni,nj>-1(5)

光顺平滑权函数是标准高斯滤波,定义为

wc(x)=exp[-x2/(2σc2)](6)

特征保持权函数也是标准高斯滤波,定义为

ws(y)=exp[-y2/(2σs2)],(7)

式中σc为数据点pi到其邻近点的距离对pi的影响因子,主要反映每个采样点的双边滤波因子的切向影响范围与控制光顺程度;σs为数据点pi到邻近点的距离在其法向上的投影对数据点pi的影响因子,主要反映每个采样点的双边滤波因子的法向影响范围与控制特征保持程度。改进双边滤波去噪平滑流程如下。

步骤1:对于每个数据点pi进行k邻域搜索,求出它的k个最近邻域点 N(pi)。

步骤2:散乱点云法向量估计。遍历三维点云模型中的每个数据点pi,在k邻域用主成分分析法获得数据点pi的法矢的基础上,通过法向一致性调整,使得所有法向量都朝向模型的外侧。

步骤3:求出每个邻域点的光顺平滑权函数参数和特征保持权函数参数,分别代表点pi到邻域点pj的距离x= pi-pj和点pi的法矢与邻域点pj的法矢两者的内积y=ni·nj

步骤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的法向量与其邻近点法向量之间的夹角是否大于预先设定的阈值来判定该数据点是否特征点,选取离小立方体栅格重心最近的数据点来代替整个栅格内所有数据点,以此完成点云的精简。图4所示为k邻域三维体素栅格精简原理。

步骤6:利用贪婪投影三角化算法[14-15]对精简后的点云模型重建。图5所示为三角网格面重建原理。

图 4. k邻域三维体素栅格精简原理图[13]

Fig. 4. Schematic of k-neighbors voxel grid simplification[13]

下载图片 查看所有图片

图 5. 三角网格面重建原理图[13]

Fig. 5. Schematic of triangular mesh reconstruction[13]

下载图片 查看所有图片

4 实验结果与分析

为验证本文算法的可行性,使用微软Kinect 2.0视觉传感器扫描实物人台模型,以扫描获取的PCD格式的三维模型数据为研究对象。实验平台为Window 10 64位操作系统,Visual Studio 2013 Visual C++ win 32控制台应用程序,开源点云库为PCL1.7.2。图6~8分别为采用本文算法对45°人体点云模型、180°人体点云模型、自身点云模型进行测试的结果,第一行分别为原始点云、大尺度去噪、小尺度去噪、均匀精简后以及重建后的正面图,第二行分别为其对应的侧面图,第三行分别为其局部放大图。表1为使用本文算法对45°人体点云模型、180°人体点云模型以及自身点云模型进行测试时每个模块的运行时间与点云数量的变化情况。

图 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

IndexPoint cloudOriginalpoint cloudLarge scaledenoisingSmall scaledenoisingUniformsimplificationReconstruction
Point number45° human27911252782605439773977
180° human30424299102896053145314
Self12902612458212391161686168
Running time /ms45° human-613+72085629921856
180° human-523+908123927952620
Self-1621791614952783425

查看所有表

图6(a)可知,人体模型周围布满许多噪声点,有距离点云模型较远的大尺度噪声点,也有粘连于点云模型表面的小尺度噪声点。由图6(b)可知,经过统计滤波结合半径滤波后偏离点云模型主体的大尺度噪声点基本去除,仅剩一些粘连于点云模型表面的小尺度噪声点。由图6(c)可知,经过改进的双边滤波后粘连于点云模型的小尺度噪声点基本去除,而且模型比较平滑光顺。由图6(d)可知,经过体素栅格滤波后点云模型的点数明显变稀疏了,点云模型的颜色也变浅了。由图6(e)可知,经过三角网格面重建后,点云模型的固有形貌得以展示,纹理基本接近原有模型表面。图7图8显示的效果与图6基本相同,因此本文算法对这三个点云模型均适用。除此之外,表1展示了本文算法每个模块的运行时间与点云数量的变化情况。由表1可知,点云模型数据量越大,程序运行时间越长,精简后的点云数量亦越大。

综合整体效果而言,本文算法原理简单,不仅能有效去除点云模型周围不同尺度的噪声点,而且对点云模型有一定的快速平滑和光顺作用;除此之外,能有效去除模型中的部分点云数据冗余,将过密的点云数据均匀化,是一种有效的点云去噪与精简算法。

5 结论

提出一种基于方法库的点云模型去噪与精简算法,主要以最新的开源点云库PCL为基础,以微软Kinect 2.0扫描的PCD格式的三维点云数据为研究对象,综合运用PCL中直通滤波、统计滤波、半径滤波、改进的双边滤波、体素栅格滤波等算法对45°人体点云模型、180°人体点云模型以及自身点云模型进行点云模型的去噪与精简研究,最终表明本文算法能够有效去除点云模型中不同尺度的噪声点,而且在没有破坏点云本身几何结构的前提下,能高效去除点云模型中的冗余数据,使过密的点云均匀精简,并以三角网格面重建出高精度的三维人体点云模型。该算法原理简单,易于实现,具有一定的实用价值。

参考文献

[1] Yu Y T, Li J, Guan H Y, et al. Three-dimensional object matching in mobile laser scanning point clouds[J]. IEEE Geoscience & Remote Sensing Letters, 2015, 12(3): 492-496.

[2] 葛宝臻, 赵丹, 田庆国, 等. 三光带激光三维人脸扫描方法[J]. 中国激光, 2010, 37(6): 1594-1598.

    Ge B Z, Zhao D, Tian Q G, et al. Three-dimensional human face laser scanning based on three-line structured light[J]. Chinese Journal of Lasers, 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.

[4] Jones T R, Durand F, Desbrun M. Non-iterative, feature-preserving mesh smoothing[J]. ACM Transactions on Graphics, 2003, 22(3): 943-949.

[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.

    Su Z X, LI Z Y, Wang X C. Denoising of point-sampled model based on normal modification and median filtering[J]. Journal of Computer Aided Design & Computer Graphics, 2010, 22(11): 1892-1898.

[7] 曹爽, 岳建平, 马文. 基于特征选择的双边滤波点云去噪算法[J]. 东南大学学报: 自然科学版, 2013, 43(S2): 351-354.

    Cao S, Yue J P, Ma W. Bilateral filtering denoise algorithm for point cloud based on feature selection[J]. Journal of Southeast University: Natural Science Edition, 2013, 43(S2): 351-354.

[8] 袁华, 庞建铿, 莫建文. 基于噪声分类的双边滤波点云去噪算法[J]. 计算机应用, 2015, 35(8): 2305-2310.

    Yuan H, Pang J K, Mo J W. Denoising algorithm for bilateral filtered point cloud based on noise classification[J]. Journal of Computer Applications, 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.

    Su B Y, Ma J Y, Peng Y S, 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.

[11] 陈璋雯, 达飞鹏. 基于模糊熵迭代的三维点云精简算法[J]. 光学学报, 2013, 33(8): 0815001.

    Chen Z W, Da F P. 3D point cloud simplification algorithm based on fuzzy entropy iteration[J]. Acta Optica Sinica, 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.

    Li R Z, Yang M, Liu Y Y, et al. Uniform simplification algorithm of scattered point cloud[J]. Acta Optica Sinica, 2017, 37(7): 0710002.

[14] Wiemann T, Kai L, Hertzberg J. Optimizing triangle mesh reconstructions of planar environments[J]. IFAC-Papers On Line, 2016, 49(15): 218-223.

[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.

本文已被 12 篇论文引用
被引统计数据来源于中国光学期刊网
引用该论文: TXT   |   EndNote

相关论文

加载中...

关于本站 Cookie 的使用提示

中国光学期刊网使用基于 cookie 的技术来更好地为您提供各项服务,点击此处了解我们的隐私策略。 如您需继续使用本网站,请您授权我们使用本地 cookie 来保存部分信息。
全站搜索
您最值得信赖的光电行业旗舰网络服务平台!