【毕业课题学习】6DOF物体识别及抓取-PCL点云处理(三)---SHOT算子略解

【毕业课题学习】6DOF物体识别及抓取-PCL点云处理

这一部分打算详细介绍内部算法原理—

SHOT算子

教程中所用来做匹配描述的descriptors(描述子)采用的是SHOT(Signatures of Histograms),直接翻译过来–直方图特征???直方图是用的什么直方图,特征又是哪的特征,为了搞清楚整个算法构建,主要参考了以下几个内容:
论文:Unique Signatures of Histograms for Local Surface
Description
博客1:https://www.cnblogs.com/BellaVita/p/10019409.html
博客2:https://cloud.tencent.com/developer/article/1475995
然后去学习了
PCA(主成分分析法)中的重点内容 :Eigenvalue Decomposition (EVD) 特征分解:
https://blog.csdn.net/program_developer/article/details/80632779
http://blog.codinglabs.org/articles/pca-tutorial.html
什么是协方差矩阵:https://janakiev.com/blog/covariance-matrix/

现在来简单讲解以下SHOT描述子的构建过程:
提出这个描述子的论文(上面给出了论文名),做了一些前期工作,将当时用于匹配的描述子构建方法分为两种:

  1. 基于Histogram(直方图):有了K-邻域内(支撑区域)点的一系列特征描述子,采用对每个子区域进行特征(如表面法线等特征)统计的思路,可以构建出整个支撑区域的直方图特征。
  2. 基于Signature(特征):类似于2D图像的特征描述子,对特征点附近的信息进行编码,图像是圆形或矩形Patch中的灰度、梯度变化信息。相似的,点云特征描述子就是对点领域附近的几何信息和颜色、纹理信息进行编码;几何信息主要有K-近邻点(或者support)的法线方向、夹角、曲率等;

作者说我要把特征Signature和直方图Histogram结合起来提出一种新的描述子----叫做Signatures of Histograms,特点是uniqueness and repeatability 唯一性和可重复性,简单解释就是:小明同学怎么看都只有一个头(唯一),不管小明怎么动,其他人都知道小明的头是在那个位置(重复观测)。

接着又对局部本地参考系进行分析,认为局部参考坐标系(LRF)的确定是很重要的,并给出了实验分析。
对近15年的(论文发表时间是2010年)提出的描述子用Table1进行了总结。

来自论文Unique Signatures of Histograms for Local SurfaceDescription

最终该论文提出两个重要的内容:1.局部参考坐标系的定义 2.SHOT描述子构建
这也是这个描述子构建的流程

1. LRF的定义

上一篇说过,定义局部参考系是为了有个参考的东西,来使的算法具有旋转不变性,举个栗子:
图1. 坐标轴中有个点
在二维平面上,有x-y坐标系,点p在该坐标系下的点坐标为(1,1),反之,我们通过坐标可以很快找到该点在这个坐标系下的具体位置。那么假如,我们把整个图旋转,那还找得到点p吗?
结果很显然,旋转后,只要还能找到参考坐标系,那么,点p也就很容易找到。这就是参考坐标系的作用,换到三维空间来也是一样的,只要坐标系不变,那坐标系中的点的坐标也就不变。那接下来只需要观察经过变换前后的坐标,就可以匹配两个点了(描述子匹配也是这个道理)。
看到这,肯定就有人问,我怎么知道 变换前后 参考坐标系的位置在哪,这就是文章中第一部分要解决的问题,定义LRF:
建立局部参考坐标系,这里的局部,是遍历整片点云,对每个关键点都求解一个局部坐标系:以关键点为中心,以包含k个邻居的领域区域求解一个该关键点的LRF。
文章中,首先是定义的z轴,用的方法是PCA(建议先搞懂这个,以下默认你会PCA)
z轴:通过求解最小特征值所对应的特征向量,这个特征向量就是z轴的方向(求表面法线也可以通过这种方式求)。
x轴:当 z轴 与 关键点到第n个邻居点的向量 的夹角最大时,取此该时向量到 过关键点以z轴为法线的平面的投影,即为x轴。
y轴:取z轴与x轴的叉乘。
这里还有个坐标轴方向的问题,文章也给出了解决方案:
在这里插入图片描述
这个公式大致意思是说特征点P邻域内点Pi满足点到P的距离小于R并且该点减去特征点,与x+同向,满足这两个条件的点数较多,X+就是X轴的正向。也就是说必须使各向量的方向指向局部表面点分布的高密度方向。

解释唯一性和可重复性:
不管整片点云如何旋转,求出来的那个关键点的局部参考坐标系有且只有那一个。(理想情况)

2.直方图构建

直方图构建的作用就是把很多特征用直方图来描述,这样构成的直方图用于匹配更为精确。(举例,A生物,两只手,两只脚… B生物,两只手,两只脚…现在我们就可以通过这些特征来判别 A是否=B
那SHOT描述子的手脚又是什么呢?
在这里插入图片描述
如上图所示,SHOT设计了一个球体支撑结构,以关键点为球体中心。在已知局部坐标系的情况下
构造方法:以查询点p为中心构造半径为r 的球形区域,沿径向、方位、俯仰3个方向划分网格,其中径向2次,方位8次(为简便图中径向只划分了4个),俯仰2次划分网格,将球形区域划分成32个空间区域
以每个区域中 领域点的法线与z轴之间的夹角的余弦值 为样本,设计直方图:
在这里插入图片描述
像上图一样,横坐标为余弦值,余弦值的范围咱们知道是[-1,1],将横坐标均等划分为11个区间(bins),纵坐标为落入某区间的数量。(11是通过实验得出的,认为取11最好,能获得最佳识别率)
11x32=352,相当于得出了一个352维的特征空间,这也是那个函数叫SHOT352的来源。

至此,SHOT描述子差不多就构建好了,对于一些细节问题,这里就不过多讲了(四插值什么的我也没看懂-_-)。
通过SHOT描述子,咱们就可以将这个直方图用来描述(或者说是)代替这个关键点,用直方图做匹配(用的方法是kd_tree),匹配上的直方图对,对应的关键点也就匹配上了。利用两个关键点的LRF 对于世界坐标系的转换,还可以轻松得到关键点之间的变换,即大致代表整片点云的变换,由于误差或者错误匹配,所以还不能说某关键点匹配点对LRF的变换 = 两片点云的变换。
为了识别模型对象以及求模型点云到场景点云的变换,下篇继续Hough_voting_based方法对匹配上的关键点对进行聚类…

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页