一、Spin Image
Spin Image是基于点云空间分布的最经典的特征描述方法,其思想是将一定区域的点云分布转换成二维的Spin Image,然后对场景和模型的Spin Image进行相似性度量:
P:三维网格某顶点p的切面
n:p点单位法向量
x:p附近的三维网格上的另一个顶点
α:x点在P上的投影与p的距离
β:x点与P点的垂直距离
其中p和n定义为一个定向点(oriented point)
二、生成Spin Image的步骤
1.定义一个Oriented Point
2.以Oriented Point为轴生成一个圆柱坐标系
3.定义Spin Image的参数,Spin Image是一个具有一定大小(行数列数)、分辨率(二维网格大小)的二维图像(或者说是网格)。
4.将圆柱体内的三维坐标投影到二维Spin image,这一过程可以理解为一个Spin image绕着法向量n旋转360度,Spin image扫到的三维空间的点会落到Spin image的网格中。就是如下的公式:
5.根据Spin Image中的每个网格中落入的点不同,计算每个网格的强度I,显示Spin Image时以每个网格(也就是像素)I不同为依据。最直接的方法是直接计算每个网格中落入的点,然而为了降低对位置的敏感度降低噪音影响增加稳定性,Johnson论文中用双线性插值的方法将一个点分布到4个像素中。原理如下图:
上图中,默认的网格边长是1(但并非真实的边长),当一个点落入网格(i, j)中时,就会被双线性插值分散到(i, j), (i, j+1), (i+1, j), (i+1, j+1)四个网格中,这样就获得了Spin Image:
Spin Image绕着选择顶点的法向量自转360°,将所到之处的指点全部沾在二维图像上,累积成为一副图像,再经过处理就成为了Spin Image。
三、Spin Image的三个关键参数
1.分辨率:即二维网格中像素的实际尺寸,使用和三维网格相近的尺寸比较合适,因此通常是取三维网格所有边的平均值作为Spin Image的每个网格尺寸,通常会把网格的长和宽定义成相等,即边长:
e为三维网格模型中的一条边,N为三维网格中的边的总数;
2.大小:即Spin Image的行数和列数,两者一般也是相等的;
3.Support Angle:即法向量家教的大小限制,空间中顶点的法向量和创建圆柱坐标系所选点法向量之间的夹角:
对角度进行限制之后,相对于切面的“凹点(大于90°)”被剔除,保留了主要信息,降低了后续的计算量,一般角度的限制范围在60°到90°之间。
四、Spin Image特征匹配中的相似性度量和匹配时点的选择
1.相似性度量
使用以下公式来计算两个Spin Images之间的相似性:
其中R的计算公式:
N为每个Spin Image的像素数,atanh为反双曲正切函数,其输入的范围是[-1, 1],这是一种典型的统计学手段,R的取值范围是[-1, 1],两个Spin Images越相似,R越接近于1,完全一样时R的值为1。
可以看出C由两部分组成:第一部分时经反双曲正切函数得出的值的平方,第二部分是一个权重λ乘以一个较小的数,当两个Spin Images相似时第二部分所占的比重应该较小,当不接近时第二部分所占比重应该较大。λ的作用是用来限制Spin Images低重合时匹配的情况,λ的选择方式时将所有的Spin Images中的非空像素数按大小顺序列出来然后取中位数,这个中位数差不多是像素重叠的期望值,然后考虑到低重叠的情况,取这个中位数的一半来作为λ。
三维模型与场景匹配按下图的流程来进行:
在计算出相关系数后,由于模型的对称部分或者目标点附近的点的干扰,在场景中可能会有不止一个点与目标点的特征相近匹配,因此在确定Plausible Transformations之前需要进行过滤和多元组的匹配。
2.模型和场景匹配时点的选择:
两个三维模型进行匹配至少得要有三个点可以匹配:
对三维场景点的额选择:通过对形状编码确保均匀抽样,通过选择有精确法向量的Spin Image来提高匹配的几率,无杂点的完美模型一般随机选择10%的点就可以,实际运用中一般选择1/20 -- 1/2。
五、总结
Spin Image对遮挡和背景干扰具有很强的强健性,在点云配准和三维目标识别中得到广泛应用,其不足之处在于不具有尺度不变性,需要较大的存储空间和要求点云均匀分布。