三维点云处理中的滤波器技术详解
三维点云处理中的滤波器技术详解
前言
点云中往往会存在很多噪声,也就是常说的离群点,这些噪声可能会对有效数据的提取分析造成影响。因此,在数据分析前通常会考虑采用滤波器(Filter)等手段进行一些预处理的操作。过滤后的点云有助于对其进行更好的数据分析,如平面估计、分类、分割提取等。
常见的滤波算法
- 噪声去除
- Radius Outlier Removal:基于半径的异常值去除
- Statistical Outlier Removal:统计异常值去除
- 下采样
- Voxel Grid Downsampling:体素网格下采样
- Farthest Point Sampling:最远点采样
- Normal Space Sampling:法线空间采样
- 上采样/平滑/噪声去除
- Bilateral Filter:双边滤波
1. Radius Outlier Removal (ROR) 基于半径的异常值去除
基本思想:噪声点一般是离群孤立的,而正常数据点其周围会存在足够多的近邻点。
方法:检查数据点在其指定半径范围内的邻居数量,如果邻居数量少于某个阈值,则视为异常值并去除。
2. Statistical Outlier Removal (SOR) 统计异常值滤除
基本思想:基于点云数据的统计分布(如均值和标准差)来识别并移除异常值。
方法:根据每一点与邻近点距离的分布信息,计算这些点的高斯分布参数,然后使用 3σ 准则进行过滤。
3. Voxel Grid Downsampling (VGD) 体素网格下采样
基本思想:将三维点云空间划分为一系列的体素(Voxel),然后每个体素内选取少量特征点来表征该体素信息,最终生成降采样后的点云数据。
常见的选取方法如:中心点(Centroid)、随机点(Random select)。
- VGD - Exact:通过排序实现点云降采样。
- VGD - Approximated:使用 Hash Table 来加速降采样过程。
4. Farthest Point Sampling (FPS) 最远点采样
基本思想:从数据集中选择最远的点作为采样点,确保采样点分布均匀。
方法:从数据中随机选取一个点作为初始点,然后不断迭代地选择距离已有采样点集合的最远点。
5. Normal Space Sampling (NSS) 法向空间采样
基本思想:在法向量空间内均匀随机抽样,以保持地物特征。
方法:先在法向量空间构建一系列的容器,然后依据平面法向量将所有点放到对应容器中,接着从所有容器中均匀地选点。
6. Learning to Sample
通过几何意义上的限制,使得降采样后的点具有和降采样之前相似的几何状态。核心思路是基于语义检测任务,要求降采样之后的点能够达到语义分析的效果。
7. Bilateral Filter (BF) 双边滤波
基本思想:在滤波过程中同时考虑空间邻近度和像素值相似性,以达到保边去噪的效果。
应用场景:图像处理、点云上采样等。
Voxel Grid Downsampling 练习
1. 代码实现
体素网格降采样算法的基本流程包括:
- 根据输入的数据和体素尺寸,计算不同维度上可分割的体素数量
- 将数据映射到对应的体素单元得到索引
- 根据点云对应的体素索引进行排序
- 从每个体素格子中选取特征点(中心点、随机点)来代表该体素单元
- 降采样后的点云输出
2. 可视化效果
使用 ModelNet40 数据集进行点云降采样测试,降采样网格大小为0.1m,体素网格点云分别为中心点和随机点方式表示,测试效果如下:
上图从左到右分别是:原始点云图、VGD降采样点云(中心点法)、VGD降采样点云(随机点法)。