基于PCL库的点云滤波算法研究

2020-09-12 14:29:34 卫星电视与宽带多媒体 2020年13期

李瑞雪 邹纪伟

【摘要】点云滤波处理作为点云数据处理的初始步骤,其去噪效果直接影响到后续点云分割、地物分类、三维模型重建等操作结果。不同滤波算法由于其原理不同,运行效率及适用性也存在很大差异,通过选取直通滤波、体素滤波、统计滤波、条件滤波、半径滤波这五种经典滤波算法,对其原理作详细描述。在PCL库的基础上,设置不同的阈值对每种算法进行了大量的实验及分析,验证参数设定对每种算法的运行效率,适用范围及滤波结果质量的影响。

【关键词】点云数据;预处理;滤波算法;阈值;PCL库

中图分类号:TN94                 文献标识码:A               文章编号:1673-0348(2020)013-083-03

Research on point cloud filtering algorithm based

on PCL library

Li Ruixue  Zou Jiwei

(1.Shanghai Jieshi Information Technology Co., Ltd. ; 2. Jiangxi University of Science and Technology)

Abstract As the initial step of point cloud data processing, and the denoising effect directly affects the quality of subsequent operation results such as segmentation and classification of point cloud, reconstruction of independent feature extraction 3d model, and other operation results. different filtering algorithms due to its principle, operation efficiency and applicability is also very big difference, By selecting five classical filtering algorithms, namely pass-through filtering, voxel filtering, filtering, conditional filtering and radius filtering, the principle of these algorithms is described in detail. Cloud Library, a lot of experiments and analyses were carried out for each algorithm by setting different thresholds to verify the influence of parameter setting on the operation efficiency, application scope and filter result quality of each algorithm.

Key words Point cloud data; Pretreatment; Filtering algorithm; The threshold value; Point Cloud Library

點云滤波处理作为点云处理的第一步,对后续数据的处理尤为重要。受设备、人员操作、天气、被测物体表面材质等多种因素影响,采集所获的点云数据不可避免的出现离群点、噪声点,则点云滤波是点云分割、地物分类、三维构建等后续处理的关键。

一般点云数据去噪分为网格化噪声去除和无网格点云模型去噪两种方法,网格去噪典型的代表有Taubin使用拉普拉斯滤波算法对网格模型进行去噪,Fleishman和Jones等使用具有各向同性的双边滤波进行网格模型的去噪。无网格点云模型去噪的有赵乾、刘英等人运用小波滤波方法对实木板材的点云数据进行预处理,张芳菲等使用近邻搜索的算法对孤立噪声点进行了有效滤除。

本文介绍直通滤波、体素滤波、统计滤波、条件滤波、半径滤波五种点云滤波方法,对相应技术理论和算法流程进行了描述,通过实验探究各类算法的不同参数设定下点云滤波去噪效果及运行效率。

1. 点云滤波算法

PCL点云库是跨平台的C++点云库,并且能够编译和运行在Linux,Windows等操作系统。点云滤波是对特定点云数据调用不同滤波器设置参数准确地将数据中噪声点移除,保证准确率的同时兼顾运行效率。

1.1 直通滤波算法(Pass Through)

通过设置阈值参数,指定参数范围之内的点通过,将参数范围之外的点过滤掉,实现对点云数据的基本过滤。步骤如下:

第一,导入特定点云数据;

第二,对Z方向设定不同点云阈值;

第三,筛选离散点,保存去噪后的点云数据,选择最佳去噪阈值。

1.2 体素化算法(Voxelization)

体素化算法通过体素化网格进行下采样数据,减少数据点,有利于下一步的点云分割,地物分类等。将网格重心点替代体素网格内所有点,保留过滤后的点云数据。步骤如下:

第一,将点云数据输入体素滤波器;

第二,设定0.5*0.5、1.0*1.0、1.5*1.5、2.0*2.0多种不同规格的体素栅格阈值;

第三,重心点替代其他点,重采样点云数据;

第四,保存体素栅格替代后的点云数据,比较不同规格体素栅格阈值的筛选效果,确定最佳去噪阈值。

1.3 统计滤波算法(Statistical Outlier Removal)

统计滤波算法统计每个点到它邻域点的平均距离,去除超出设定距离阈值范围的点。假设原始点云数据集X=(xi,i=1,2····,n),滤除后的点云数据集X=(xi,i=1,2···,m),令K为其均值,N为其标准差,Si表示其到邻域中点到的平均距离,设定处于(K-std*N, K+ std*N)范围之外的点为离散点,从点云数据集中去除掉。步骤如下:

第一,导入点云数据至统计滤波器;

第二,设定不同邻域搜索点云阈值k,计算查询点到邻域点的平均距离;

第三,设定标准差n的倍数,运行滤波器;

第四,可视化分析不同阈值的筛选效果,确定最佳去噪阈值。

1.4 条件滤波算法 (Conditional Removal)

條件滤波算法可为多个方向指定阈值,达到点云去噪的效果。步骤如下:

第一,为条件滤波器导入点云数据;

第二,设定多个不同方向的条件阈值;

第三,筛选离散点,保存去噪后的点云数据,确定最佳去噪阈值。

1.5 半径滤波算法(Radius Outlier Removal)

半径滤波算法原理是设定圆的半径,也可设定落在以某点为中心点的圆中点的数量。剔除不在圆内的点或剔除小于设定值数量的点,二者共同影响滤波结果。步骤如下:

第一,输入点云数据;

第二,设定圆内点的数量阈值;

第三,对查询点的搜索半径Radius设定不同邻域搜索阈值;

第四,筛选离散点,可视化,观察比较不同阈值的筛选效果,确定最佳去噪阈值。

2. 实验与分析

本文实验数据是由RIEGL VZ-1000扫描获取的学校图书馆、行政楼及周边地物点云,如图1所示,共有566991个点,复杂的场景能有效检验滤波算法的鲁棒性。

2.1 直通滤波

本文主要对Z方向进行操作,通过设置100

通过表1可以看出,若Z值设置得过小,则会对地物进行拆分,当Z值设置合理时,将仅保留地面以上,建筑物以下的点,从而去除其它干扰点。阈值设定以及位于Z方向的点云个数决定了滤波效果,范围设置大,点云个数多则被去除的点云更多,而滤波时间受阈值的影响较小。

2.2 体素滤波

体素滤波算法设置体素网格,设置不同大小的体素栅格,网格设置得越大,过滤掉的点云越多,部分结果如表2所示。

通过表2可以看出,当格网设置得越大时,点云越稀疏,运行时间越短,且体素滤波并不能真正的去除噪点,仅是在保留原始点形状的前提下,减少数据量。

2.3 条件滤波

条件滤波与直通滤波类似,不同点在于可以同时给多个方向指定阈值,移除无关点,部分结果如表3所示。

通过表3可以得出,条件滤波耗时较短,在Z值设置在100-102时,将提取出地面点云,而当X大于0时,仅提取行政楼点云,而图书馆周边被滤掉,该算法所过滤掉的点数跟设置的阈值有关,不能对整体中的稀疏离散噪点进行去除。

2.4 统计滤波

统计滤波的作用主要是剔除离群点,本文设置四个不同的近邻搜索点个数k及标准差倍数n,部分结果如表4所示。

从表4可以看出,原始数据中的许多离群点被移除,独立地物更加清晰。不同阈值移除的点云数据量不同,其运行时间差异较大,当标准差倍数相同时,去噪效果较为接近,但当k越大时,运行时间较长。

2.5 半径滤波

半径滤波可设定圆的半径阈值,以及落在该圆内的点个数的阈值,小于设定阈值则将该点移除。本文设置了4个不同的阈值,部分结果如表5所示。

如表5得出,与滤波前作对比,图中的大多离散点被移除,建筑物及地物的轮廓也更加清晰。当滤波半径不变,设置的点数越大时,移除的噪点数也越多,运行的时间也将成倍增加,当设置的点数不变,滤波半径减少时,滤波时间则较接近,但去噪比例将明显提升。

3. 结语

本文分别对PCL中几种常用的滤波算法原理作详细描述,通过大量实验探究每种算法在设置不同的阈值后的滤波效果及运行效率,得出如下结论:

首先,在对整体点云中的离群点滤波处理时,直通滤波与条件滤波滤波效果不佳,但对筛选指定方向范围内的点云,其执行效率较高,适用于数据量大的点云数据集。

其次,统计滤波和半径滤波都能对离群点进行有效移除,二者的去噪效果较为接近,且设置阈值较为简单,但若点云数据量增大时,其运行时间都将成倍增加,因此可根据实际情况,对数据进行降采样(如体素滤波),来提升运行效率。

参考文献:

[1]田旭东,王艋.基于B样条小波分析的点云数据滤波处理技术[J].现代测绘,2019,42(03).

[2]Taubin.G.A.Signal.Processing,Appoach,to,Fair,Surface,Design[C]//(SIGGRAPH95).New  York: ACM Press, 1995:351-358.

[3]Fleishman S, Drori I, Cohen-Or D. Bilateral Mesh Denoising[J]. ACM Transactions on Graphics, 2003,22(3):950-953.

[4]赵乾,刘英,杨雨图,胡忠康,周晓林.实木板材无损检测中三维点云数据的预处理[J].林业工程学报,2018,3(05):46-51.

[5]张芳菲,梁玉斌,王佳.基于近邻搜索的激光点云数据孤立噪点滤波研究[J].测绘工程,2018,27(11):29-33.