点云 PCA生成包围盒流程
基于PCA生成点云包围盒的原理流程
这段代码使用主成分分析(PCA)生成点云的方向包围盒(OBB),具体原理流程如下:
1. 点云数据加载
首先从PCD文件中加载点云数据,获取一组三维空间中的点。
2. 主成分分析(PCA)计算
- 计算质心:确定点云的中心位置
- 计算协方差矩阵:描述点在各个方向上的分布情况
- 特征值分解:对协方差矩阵进行分解,获得特征值和特征向量
- 特征向量表示点云主要分布方向
- 特征值表示沿着这些方向的分布程度(方差)
- 正交化处理:确保三个主方向严格垂直,形成标准的正交基
3. 点云坐标变换
- 构建变换矩阵,将点云的主方向与标准坐标轴对齐
- 旋转部分:使用特征向量构建旋转矩阵
- 平移部分:将点云质心平移到坐标原点
- 应用变换:将原始点云变换到新坐标系
4. 计算轴对齐包围盒
- 在变换后的坐标系中,点云已经与坐标轴对齐
- 计算变换后点云在X、Y、Z三个方向上的最大最小值
- 基于最大最小值计算包围盒尺寸(宽、高、深)和中心点
5. 变换回原始坐标系
- 计算逆变换矩阵
- 将包围盒中心点变换回原始坐标系
- 将包围盒的方向信息(从逆变换的旋转部分)转换为四元数表示
6. 可视化结果
- 显示原始点云和变换后的点云
- 绘制包围盒
- 添加主方向箭头,展示点云的三个主轴方向
这种方法生成的是最小外接包围盒(OBB),与普通轴对齐包围盒(AABB)相比,它的优势在于可以更紧密地包围不规则形状的点云,因为它的方向与点云的主要分布方向一致,而不是与世界坐标轴对齐。