【视觉算法】SHOT特征描述子

回顾一下上一篇文章学习的物体识别流程,首先计算模型点云特征,并将特征保存;然后计算场景点云特征,并将特征保存;在此基础上,进行特征匹配;每一对特征点,进行霍夫投票,投票峰值对应的那些点对,即为正确的特征对应;至此,剔除了错误点对;再根据正确的对应关系解算旋转矩阵和平移向量,即完成了物体识别和姿态估计。
现在我们开始学习SHOT特征描述子,简要说明一下,SHOT特征描述子在构建的局部参考系内(旋转和平移不变性),统计特征点周围的拓扑特征,将特征保存在直方图中,并对其进行归一化(对点云密度和噪声具有鲁棒性)。下面逐一学习:
一、局部参考系的构建
首先看一个公式:
在这里插入图片描述以特征点周围的k邻近点构建了协方差矩阵M(如果你了解过点云中一点的法线估计过程、ICP目标函数的求解过程,那么对上式是非常熟悉的),M表示了各点之间的两两线性相关性。
为了方便计算,这样构建M:
在这里插入图片描述
R是局部参考系的计算半径,pi是以特征点p为球心,半径为R的球体内的点,di是pi到p的欧式距离。
对M进行特征值分解(EVD),我们得到了三个两两正交的单位特征向量和三个非负的特征值,特征值递减排序,其对应的特征向量分别对应着x,y,z三个轴。此时,x,y,z的正方向是存在歧义的,为了确定正方向(消除歧义),文章采取了这样的策略:
在这里插入图片描述
其中
在这里插入图片描述
对上面公式的解释:为确定局部参考系x轴的正方向,在半径R内,计算特征点p到pi的向量与x+/x-的点积,非负即两向量夹角在0到90°之间,相应的Sx统计了符合这一条件的点的集合;正方向取该集合中点的个数大者。
对于相等的特殊情况,统计在平均中值距离周围的点(M(k),k是限定的距离)中符合这一条件的点的集合;同样,方向取大者。
通俗讲,使x轴正方向指向半径R内点密度大的方向,消除了x轴取向的歧义。
对于z轴的取向,和x的步骤相同,y轴取向由z×x确定。
至此,局部参考系构建完成,它具有旋转和平移不变性。
二、特征计算和存储
为了计算特征,文章将上述的局部参考系按照方位8个,俯仰2个,径向2个进行划分:
在这里插入图片描述
为了使图形简洁,上图中方位只划分了4个。
这样,一共划分为32个子区间,每个区间由划分了11(实验效果最好)个区间的直方图表示,这样构成了长度为32×11=352的直方图。注意,是由32个直方图按照空间相邻关系拼接而成的,这一点在理解后面的插值操作时非常重要。
直方图的横轴是cosθ,也就是对cosθ的值划分了11个子区间,之所以是cosθ,而不是θ,是因为cosθ非常容易计算(两点法线点积);纵轴是计数,即出现在该区间的频率。
计算局部座标系的每个划分区间内的每一点和座标系原点(特征点)的角度θ的余弦值cosθ,按其值保存在直方图中。这样,初步得到了该特征点的直方图表达。ps:这里之所以说初步,是为了便于宏观理解,实际上还有插值过程。
然而,因为该描述子是基于局部直方图的,不可避免会受到边缘效应的影响,此外,上面提到的空间区域划分,也会产生边缘效应(处在边缘时怎么处理?)。为了解决这一问题,文章采取了四线性插值,下面逐一解释:
法线余弦的插值:
在这里插入图片描述
插值区间选取为横轴上相邻的两个cosθ,s为区间长度,除以s完成了归一化,在cosθi和cosθi+1上,分别+1-d,即完成了插值(即对处在边缘上的点,将其计数分摊到两个相邻的区间内)。
方位角、俯仰角、距离的插值:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
插值区间选取为空间区域划分中相邻两空间对应的直方图中相同索引(cosθ的值)的两个区间,归一化,插值(和上面类似)。
最后,将整个描述子(直方图)归一化,即完成了该特征点的描述。
至此,SHOT特征描述子就学习完了。ps:文章还介绍了如何扩展到RGB信息,暂不学习。
才疏学浅,如有不妥之处,望指正。
参考文献:
(1) Salti S , Tombari F , Stefano L D . SHOT: Unique signatures of histograms for surface and texture description[J]. Computer vision and image understanding, 2014, 125(AUG.):251-264.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章