点云特征记录(待完善)

less than 1 minute read

Published:

由于网上关于点云特征的文章、博文讲述较为混乱,而质量又良莠不齐。因此决定自己写一个主要特征的总结记录。

点云特征如同图像特征,是为了进行特定目的的机器学习而用的,而又以分类、分割等为最主要用途。一般我们希望点云特征能满足以下几种性质:

  • 平移旋转不变性:即点云的三维旋转和平移不会影响特征值;
  • 对噪声的鲁棒性:对于点集噪声或点云残缺有一定的鲁棒性;
  • 对密度的不变性:对于不同采样密度的同一物体的点云,点云特征应该保持不变。

单点特征

单点特征即点云中单个点的特征。这个比较简单,一般包括点云坐标$(x,y,z)$或$(r,\theta ,\phi )$、反射率等等。

局部特征

1 PFH & FPFH

Point Feature Histogram(PFH,点云特征直方图)是描述点云局部结构的几何特征。一般来讲,要描述每两个点之间的空间结构关系,需要12个参数:两个点的坐标值$(x,y,z)$+两个点的法向量$(n_x,n_y,n_z)$。PFH则是建立了局部坐标系,使用$\alpha,\theta,\phi$来表示两个点的相对空间关系,因此将12个参数减少为3个,如图1所示。PCL库中对于PFH的将参数值域划分为5个区间进行统计,因此输出一个包含125浮点数元素的特征向量($3^5$)。PFH的具体计算方法如下:

  1. 为点云中的每个点求它的表面法向量。因为点云数据是离散点,所以只能计算出近似的表面法向量。这里选用$k$近邻点进行平面拟合。对于点$p_i$ ,假设$p_i$与最近邻的$k$个点产生的协方差矩阵为$C$,$C​$的计算公式如下:
\[C=\frac{1}{k}\sum_{j=1}^{k}(p_j-\bar{p})(p_j-\bar{p})^T\]

其中$\bar{p}$为$k$个临近点的质心。这是为了对点云做去中心化处理。对协方差矩阵$C$特征值求解,可以得到三个特征值和各自对应的特征向量。因为特征值表示的是$p_i$远离质心$\bar{p}$的度量值,所以取最小特征值对应的特征向量为点$p_i$的表面法向量。

  1. 设定一个邻域半径值$r$,对每个点选取半径范围内的所有点用于计算该点的点特征直方图。对于两个点$p_i$和$p_j$,各自的表面法向量为$n_i$和$n_j$,对这两个点建立一个如图1所示的局部空间坐标系$(u,v,w)​$,计算如下:
\[u=n_j\\ v=u\times\frac{p_i-p_j}{\lVert p_i-p_j \rVert_2} \\ w=u\times v\]

因此图1中的三个参数$(\alpha,\theta,\phi)​$用如下公式计算:

\[\alpha=v\times n_i\\ \phi=u\times\frac{p_i-p_j}{\lVert p_i-p_j \rVert_2} \\ \theta=\arctan(w\cdot n_i,u\cdot n_i)\]

Sample

在此之后,FPFH(Fast Point Feature Histogram,快速点云特征直方图)则进一步对计算过程进行了加速。原本计算PFH需要计算点云中邻域内所有点两两之间的三个参数,FPFH则将这一规则改为:找出$p_i$的邻域内所有点,然后这些点再与自己邻域内的所有点计算对应关系,称之为SPFH,FPFH就是这些SPFH的加权和。这样做将复杂度由$O(n^2)$降低到了$O(nk)$。此外pcl::FPFHSignature33中使用11个区间来统计3个特征量,能得到特征向量长度为33.

2 SHOT

Signature of Histogram of Orientation(SHOT)类似于FPFH,也是一种基于统计的点云局部特征。如图2所示,其构造方法如下:

以查询点p为中心构造半径为$r$的球形区域,沿径向、方位、俯仰3个方向划分网格,其中径向2次,方位8次(为简便图中径向只划分了4个),俯仰2次划分网格,将球形区域划分成32个空间区域。在每个空间区域计算计算落入该区域点的法线$n_v$和中心点$p$法线$n_p$之间的夹角余弦$\cos\theta=n_v·n_p​$,再根据计算的余弦值对落入每一个空间区域的点数进行直方图统计,对计算结果进行归一化,使得对点云密度具有鲁棒性,得到一个352维特征。(原论文:UniqueSignatures of Histograms for Local Surface)

Sample

3 GFH

Global Feature Histogram,灵感来源于Spin Image。GFH特征其实是围绕中心点的点云的点数分布情况。他以中心点为自柱状坐标系的原点,把空间横向分割为为$I$段,然后每一段分扇形区域 $J$,每个扇形再分bins k。统计每个bin里面的点数,所有扇形区域的同一位置的bins连起来计算快速傅里叶变换FFT。如图3所示。

Sample

全局特征

1 统计特征 —— 主要是简单的点云统计,比如