资讯详情

NormalEstimation法向量估计理论和代码---PCL源码笔记

NormalEstimation

确定,因此,转换后成为最小二乘法平面拟合的问题。矩阵的特征向量和特征值(或PCA-主成分析),协方差矩阵来自查询点创建。最大主要成分是投影到某个方向后方差最大的方向(信息量最大的方向);法向量是投影到某个方向后信息量最小的方向,需要PCA将点云投影到特征值最小的方向。

这里有几个概念:

  • 平面的定义和点到直线的距离
  • 最小二乘法和主成分分析(PCA)
  • 协方差矩阵及其特征向量和特征值

法向量求解步骤

目标平面可以是一个点 x x x法向量 n ? \vec{n} n 还有一点 p i ∈ P k p_i \in P^k pi∈Pk 平面距离为: d i = ( p i ? x ) ? n ? d_i = (p_i - x) \cdot \vec{n} di=(pi​−x)⋅n

即取平面上一点,平面外一点的到平面的距离,就是这两点组成的向量在法向量上面的投影。

如果点到平面的距离为0,即 d i = 0 d_i = 0 di​=0,我们就可以求出平面的法向量了。因此通过以下步骤:

  1. 求所有点的质心 p k p^k pk x = p ˉ = 1 k ⋅ ∑ i = 1 k p i x = \bar{p} = \frac{1}{k} \cdot \sum_{i=1}^k p_i x=pˉ​=k1​⋅i=1∑k​pi​

  2. 计算质心 p k p^k pk的协方差矩阵 C ∈ R 3 × 3 C \in \R^{3 \times 3} C∈R3×3,及其特征向量和特征值 C = 1 k ∑ i = 1 k ϵ ⋅ ( p i − p ˉ ) ⋅ ( p i − p ˉ ) T , C ⋅ v j ⃗ = λ j ⋅ v j ⃗ , j ∈ { 0 , 1 , 2 } C = \frac{1}{k} \sum_{i=1}^k \epsilon \cdot (p_i - \bar{p}) \cdot (p_i - \bar{p})^T, C\cdot \vec{v_j} = \lambda_j \cdot \vec{v_j}, j\in \{0, 1, 2\} C=k1​i=1∑k​ϵ⋅(pi​−pˉ​)⋅(pi​−pˉ​)T,C⋅vj​ ​=λj​⋅vj​ ​,j∈{ 0,1,2}

    其中 ϵ \epsilon ϵ通常为1。 如果 0 ≤ λ 0 ≤ λ 1 ≤ λ 2 0 \leq \lambda_0 \leq \lambda_1 \leq \lambda_2 0≤λ0​≤λ1​≤λ2​, 或者, n ⃗ \vec{n} n 可以在球坐标系下用 ϕ , θ \phi, \theta ϕ,θ表示: ϕ = arctan ⁡ ( n z n y ) , θ = arctan ⁡ ( n y 2 + n z 2 ) n x \phi = \arctan (\frac{n_z}{n_y}) , \theta = \arctan \frac{\sqrt{(n_y^2+n_z^2)}}{n_x} ϕ=arctan(ny​nz​​),θ=arctannx​(ny2​+nz2​) ​​

    可以看到,通过主成分分析法(PCA)来计算它的方向具有 如下图所示:

    在这里插入图片描述

  3. 计算法向与视点 解决这个问题的办法就是使用视点 V p V_p Vp​。对所有法线 n i ⃗ \vec{n_i} ni​ ​定向只需要使它们一致朝向视点的方向,满足下面的方程式: n i ⃗ ⋅ ( V p − p i ) > 0 \vec{n_i} \cdot (V_p - p_i) > 0 ni​ ​⋅(Vp​−pi​)>0

PCL法向量估计

先来看看PCL法向量估计的模板。通常包含以下步骤:

  • 设置输入点云,及其索引方法
  • 设置临近点的半径
  • 计算法向量
#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
 
{ 
        
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);

  ... read, pass in or create a point cloud ...

  // Create the normal estimation class, and pass the input dataset to it
  pcl 

标签: 300kg传感器accu

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台