PCL 点云处理算法索引
本指南整理了 Point Cloud Library (PCL) 在 C++ 环境下的核心算法模块,涵盖从基础输入输出到高级三维重建的完整流程。以下分类基于常用功能场景,便于快速查阅相关实现路径。
基础操作示例
点云复制与读取
// 复制点云数据
pcl::copyPointCloud(*cloud, indicesY, *cloud_yboundary);
// 读取 PCD 文件
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
if(pcl::io::loadPCDFile<pcl::PointXYZ>("source_slice_4000_change.pcd", *cloud) == -1){
PCL_ERROR("Could not read file\n");
}
点云保存
// 二进制格式保存
pcl::io::savePCDFileBinary("dragonfps.pcd", *filtered);
一、点云滤波
滤波是预处理的关键步骤,用于去除噪声或提取感兴趣区域。
1. 常用滤波器
- 直通滤波器
- 体素滤波器(含改进版及最小点数约束)
- 统计滤波器
- 半径滤波器
- 条件滤波器(含基于曲率的下采样)
- 模型滤波器
- 投影滤波器(平面、球面、圆柱、拟合直线)
- 索引提取器
- 高斯滤波(含噪声添加)
- 双边滤波(基于强度/法线/快速/多线程)
- 中值滤波(有序点云)
- 阴影点移除
2. 采样滤波
- 均匀采样(含快速版本)
- 随机采样
- 法线空间采样
- 索引空间采样
- MLS 上采样
- 最远点采样
- 局部最大值滤波
- 栅格最低点获取
3. 裁剪滤波
- 任意多边形内部点云提取 (CropHull)
- 立方体内点云过滤 (CropBox)
- 平面裁剪器 (PlaneClipper3D)
二、KD 树与八叉树
空间索引结构对搜索效率至关重要。
1. KD 树
- 基本使用方法
- 圆柱形邻域搜索
- K 近邻可视化
- 平均密度计算
- 重叠点删除
2. 八叉树
- 基本使用方法


