PCL 点云处理算法与模块实战指南
本文档整理自 PCL 核心功能模块,涵盖从基础操作到高级算法的全流程。建议在实际开发前确保已正确安装 PCL 及相关依赖库。
基础 IO 操作
常用 API 示例
// 复制点云数据
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. 常用滤波器
- 直通滤波器:基于坐标范围过滤
- 体素滤波器:VoxelGrid 及改进版本(含最小点数约束、特征计算)
- 统计滤波器:剔除离群点
- 半径滤波器:基于邻域密度过滤
- 条件滤波器:基于自定义条件过滤(含曲率下采样)
- 模型滤波器:基于几何模型过滤
- 投影滤波器:投影到平面、球面、圆柱或拟合直线
- 索引提取器:子集提取
- 高斯/双边滤波:平滑处理(含法线、强度、快速多线程版本)
- 中值滤波:有序点云去噪
- 阴影点移除
2. 采样滤波
- 均匀/快速均匀采样
- 随机采样
- 法线空间/索引空间采样
- MLS 上采样
- 最远点采样
- 改进降采样算法
- 局部最大值/栅格最低点
- 指定高程点获取
3. 裁剪滤波
- CropHull:任意多边形内部点云提取
- :立方体内点云过滤


