以下是最新版 PCL(Point Cloud Library)点云处理算法的结构化汇总,基于 C++ 实现并持续更新。内容涵盖核心模块与前沿技术,所有数学表达均遵循标准格式。
一、基础数据结构
点云基础类型定义:
#include <pcl/point_types.h>
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
二、关键处理模块
1. 滤波算法
体素栅格下采样:
pcl::VoxelGrid<pcl::PointXYZ> voxel;
voxel.setLeafSize(0.01f, 0.01f, 0.01f); // 体素尺寸
voxel.filter(*filtered_cloud);
统计离群点移除:$$ \mu = \frac{1}{k} \sum_{i=1}^{k} d_i, \quad \sigma = \sqrt{\frac{1}{k} \sum_{i=1}^{k} (d_i - \mu)^2} $$
pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
sor.setMeanK(50); // 邻域点数
sor.setStddevMulThresh(1.0); // 标准差阈值
2. 特征提取
法向量估计:$$ \mathbf{n} \cdot (\mathbf{p}_i - \mathbf{p}_0) = 0 $$
pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;
ne.setKSearch(30); // 最近邻搜索
FPFH 特征描述子:$$ \text{FPFH}(\mathbf{p}) = \text{SPFH}(\mathbf{p}) + \frac{1}{k} \sum_{i=1}^{k} \frac{\text{SPFH}(\mathbf{p}_i)}{|\mathbf{p} - \mathbf{p}_i|} $$
pcl::FPFHEstimation<pcl::PointXYZ, pcl::Normal, pcl::FPFHSignature33> fpfh;
3. 分割算法
平面模型分割(RANSAC):$$ \text{argmin}_{\theta} \sum \mathbb{I}(|ax+by+cz+d| < \epsilon) $$
pcl::SACSegmentation<pcl::PointXYZ> seg;
seg.(pcl::SACMODEL_PLANE);
seg.(pcl::SAC_RANSAC);

