物体分类常用机器学习的方法,这里有句话说的透彻:数据与特征决定了机器学习的上限,而后面的模型/算法/参数只是来逼近这个上限。所以说特征的选择至关重要。这里对基于激光点云的物体分类常见特征做一下归纳整理。方便进一步学习,以及后续论文的写作。
一、对点云特征的要求
理想情况下相同或相似表面上的点的特征值将非常相似(相对特定度量准则〉,而不同表面上的点的特征描述子将有明显差异 。 下面几个条件,通过能否获得相同的局部表面特征值,可以判定点特征表示方式的优劣:
(1 )刚体变换( rigid transformations ) 一一 即 三 维旋转和 三 维平移变化不会影响特征向量 F 估计,即特征向量具有平移旋转不变性.
(2 ) 改变采样密度 ( varying sampling density) 一一原则上, 一个局部表面小块的采样密度无论是大还是小,都应该有相同的特征向量值,即特征向量具有抗密度干扰性。
(3 )噪声( noise ) 一一数据中有轻微噪声的情况下,点特征表示在它的特征向量中必须保持相同或者及其相似的值,即特征向盘对点 云 噪声具有稳健性。--《点云库PCL学习教程》PP272
二、点云特征的分类
按照特征的物理属性,可以将特征分为:几何域,强度域。
按照特征的空间尺度,可以分为:单点特征,局部特征,全局特征。
几何域强度域很好理解,不多解释了。下面主要按照空间尺度分类。
三、单点特征
主要有:三维坐标(X, Y, Z), 回波强度 Intensity, 法线 (Nx,Ny,Nz),主曲率(PCx, PCy, PCz, 及两个特征值 PC1, PC2)
XYZI 是点云的原始特征,是激光雷达返回的数据含有的。
表面法线和曲率可以好的代表一个点的几何特征。它们算得很快,而且算法简单,但是它们不能捕获细节,它们只是点的近邻的几何特征的近似估计。作为一个直接的结论,大多数的场景往往会包括很多有着相似特征的点,这会减少它们所带来的消息量。
点特征表示法所示,表面法线和曲率估计是某个点周围的几何特征基本表示法。虽然计算非常快速容易,但是无法获得太多信息,因为它们只使用很少的几个参数值来近似表示一个点的 k 邻域的几何特征。然而大部分场景中包含许多特征点,这些特征点有 相同的或者非常相近的特征值,因此采用点特征 表示法 ,其直接结果就减少了全局的特征信息. --《点云库PCL学习教程》P282
在原始表示形式下,点的定义是用笛卡儿坐标系坐标 x , y , z 相对 于 一个给定的原点来简单表示的三维映射系统的概念,假定坐标系的原点不随着时间而改变,这里有两个点 pl 和 p2 分别在时间 t1 和 t2 捕获,有着相 同的坐标。对这两个点做比较其实是属于不适定问题( ill - p osed problem ) ,因为虽然相对于一些距离测度 〈 如:欧几里德度量〉它们是相等的,但是它们取样于完全不同的表面,因此当把它们和邻近的其他环境中的点放在 一 起时,它们表达着完全不同的信息,这是因为在 tl 和 t2 之间局部环境有可能发生改变。一些获取设备也许能够提供取样点的额外数据,例如强度或表面反射率等,甚至颜色,然而那并不能完全解决问题,单从两个点之间来对比仍然是不适定问题 。--《点云库PCL学习教程》P271-P272
四、局部特征
通常, PCL 中特征向量利用快速 kd - tree 查询,使用近似法来计算查询点的最近邻元素,有两种常用的查询类型:
(1 )决定一个查询点的 k个 邻域元素, (k 为用 户已给参数)〈也称为 k -搜索〉 。
(2 )在半径 r 的范围内,确定一个查询点的所有邻元素(也称为半径-搜索〉。
--《点云库PCL学习教程》PP272
对于半径搜索来说,相同的邻域半径同一类对象可能会由于离激光源的距离不同而导致相同大小邻域内点数不一样多,因为距离越近采样点越密,反之越稀疏。扫描得到的同一个对象,不同搜索半径的时候得到的局部特征数值也不同!
对于k-搜索来说,同样由于距离导致采样密度不同,使得同样k个点所覆盖的邻域大小可能不同。
因此需要精心选择 [近邻搜索] 参数!
一个可行的方法是,近邻尺寸参数看作是特征提取的一个超参数,借鉴机器学习调超参数的方法:在一个取值区间内,每个超参数的具体值计算一次特征,计算得到的特征和类别标签的相关性(如卡方检验,互信息法等),取相关性最高的超参数值即近邻尺寸值。个人以为互信息法比较好,不需要设置额外的参数,sklearn 实现也很简单。
(一)几何域
局部特征常见的有各种几何特征描述子:PFH,FPFH,SHOT,C-SHOT,RSD,3D形状描述子等。
因为这些很常见,所以具体原理网上很好搜。
RSD描述子:
论文:General 3D Modelling of Novel Objects from a Single View
ESF描述子:
论文:Ensemble of Shape Functions for 3D Object Classification
3D形状描述子:
详见我这篇博客: https://blog.csdn.net/shaozhenghan/article/details/81536008
论文:Recognizing Objects in Range Data Using Regional Point Descriptors
Lalonde 特征(谱特征)
论文:Natural Terrain Classification using Three-Dimensional Ladar Data for Ground Robot Mobility
描述了三维局部结构为点、线或平面结构的程度。
假设 { x1 , x2 , x3 } 为每个点的邻域的三维局部结构协方差矩阵的特征值,且 x1 >= x2 >= x3 。则三维局部结构为点、线或平面结构的显著程度可通过 {sigma1=x1, sigma2=x1-x2, sigma3=x2-x3} 来度量。
通常来说特征值没有一个上限,为了归一化到 0-1 范围,可以将单个特征值xi 用 xi/(x1+x2+x3)来代替。
(局部特征化为全局特征的方法:用3个分量的直方图统计每个点的邻域的谱特征,求和再平均就可将局部特征转化为全局特征。)
(二)强度域
强度梯度(IGx, IGy, IGz):
PCL点云库中:类 IntensityGradientEstimation 实现强度梯度计算和管理, 强度梯度的方向是指向强度下降最快的方向,其二阶矩表征下降的速率。该局部特征也可以用上面所述局部特征化为全局特征的方法(即统计直方图) 化为全局特征。
PCL点云库计算得到某个点的(IGx, IGy, IGz) 向量,方向表示最大梯度方向,向量的模表示最大梯度大小。
局部强度均值与均方差:
顾名思义
强度旋转图:
相关论文:A Sparse Texture Representation Using Local Affine Regions
五、全局特征
(一)几何域
常见的几何域全局特征有:
VFH:Viewpoint Feature Histogram
CVFH:在VFH基础上解决了点云残缺的问题。
三维不变矩:矩特征主要表征了图像区域的几何特征,又称为几何矩, 由于其具有旋转、平移、尺度等特性的不变特征,所以又称其为不变矩。但要注意,不变矩对点云密度十分敏感!亲测:
可以看到下采样前后差距很大的,因此直接用不变矩不是一个好特征。但我找到了不变矩的处理方法,保证处理后的不变矩对点云密度不敏感,而且与不同物体的类别相关性很大!是个好特征。等我写完论文就在这补上。
三维尺寸:长宽高,体积,投影面积等。在XOY平面内,若物体平行与XY中某个坐标轴,则可以用(Xmax-Xmin) 与 (Ymax-Ymin)之中大者作为长,小者作为宽。若物体不平行于XY坐标轴,则可以先PCA投影到物体点云分布的两个主要方向X', Y',然后(X’max-X‘min) 与 (Y’max-Y‘min) 来近似估计长和宽。
投影密度×距离:一些文献中也可以看到XOY投影密度作为特征,但因为密度受距离影响,所以乘上距离更具有不变性。
高程差:Zmax-Zmin,可以消除路面起伏的影响。但其实小幅度的路面起伏影响不大,大幅度的路面起伏时,常规路面分割不太好处理,读过相关论文,CNN是地面点分割的一个办法(CNN for Very Fast Ground Segmentation in Velodyne LiDAR Data)
平面拟合残差/均方差:用一个平面拟合点云
GFPFH:全局的FPFH,具体原理还没看。
协方差矩阵特征值/比值/谱特征:与上文所述局部特征中类似,只是这里将它用在点云整体上,而非局部。
旋转图?还不确定这个是全局还是局部特征,后续再看相关文献。
(二)强度域
平均强度:顾名思义
最大强度:顾名思义
强度方差/均方差:顾名思义