2 向量场和表面分类
在2002年,Tubic等人提出了一种新的三维数据表示的体积框架,称为向量场。该框架能够使用一种类型的数据表示来实现交互式3D建模的所有步骤(包括配准、集成、建模和可视化),同时保持所有步骤的点数和视图数的线性计算复杂度。本节介绍了关于点集数据的向量场表示的术语,然后扩展框架,引入嵌入进向量场表示中的近似表面分类方法。
向量场是一个体积表示,其中每个体素编码从体素中心指向表面上要建模的最近点的向量。因此,通过向量场表示可以直接、即时地获得视图配准的相关信息,如最近点、到曲面的法向量和到曲面的切平面。假设一个点云数据是可用的,向量场是通过更新位于数据点附近的每个体素的协方差矩阵C来构建的,该体素位于一个大小为的的包络中:
(1)
其中,N是已经参与体素更新的点的个数。
协方差矩阵最小特征值对应的特征向量表示最近点到切平面的法向量,则体素处向量场的方向计算为
(2)
其中表示标量积。
图1 向量场重建
图1显示了向量场表示的2D视图,包络内(以虚线为界)的所有体素都使用表面上的点集信息(黑色)进行更新。为了进一步扩展,我们在向量场中定义了两种类型的体素:活动体素和表面体素。活动体素是包含指向表面上最近点的向量场信息的体素(图1中包络内的体素)。表面体素是包含表面上点的活动体素。表面体素可以通过查找表面体素编码的最近点是否位于该体素内来轻松检验(在图1的示例中,表面体素用红色表示)。
图2 法线方向和切线方向的曲率的例子
利用向量场框架,我们提出了一种表面分类方法。这里的主要思想是基于Besl在1986年引入的高斯曲率和平均曲率的符号,将表面体素划分为8种基本表面类型。然后我们假设表面体素内表面上的所有区域(或点)与该体素中的表面类型相同。直观地看,如果体素足够小,这个假设对于光滑表面是可以接受的。因此,通过向每个表面体素添加名为“表面类型”的附加信息来增强向量场表示。为此,在一个表面体素上,我们通过编码的向量场值检测表面上最近的点,然后使用邻近表面体素的其他最近的点来估计该点的高斯曲率和平均曲率。这些曲率的符号决定了这一点周围表面的局部类型。这些信息随后存储在这个表面体素中。我们采用Chen和Schmitt描述的方法,从法向量及其邻近点估算一点的曲率。在我们的示例中,最近点处的法向量由向量场隐式编码(如图1所示)。在计算曲率之前,首先对所有法向量的方向进行归一化,以确保与相机方向的点积为负。图3显示了检测表面体素上给定最近点的邻近最近点的示例。现在Chen和Schmitt的方法被如下利用。
图3 最近点p及其邻域,由红色的表面体素组成
该方法的主要思想是为点的局部切平面上的一组单位长度的切向量选择一个合适的坐标系。图2显示了围绕一点的切平面,法线曲率,主曲率和切线向量。法线曲率是曲线投影到包含切线向量和表面的法线的平面上的曲率。在一点上,法线曲率的最大值和最小值是主曲率。假设点有个邻点。用该点及其邻点的法向量估计点局部切平面上的法线曲率和切线方向,如下:
(3)
(4)
其中是向量的欧式范数,和是在和处的法向量。设是切线方向对应的法线曲率最大值。我们可以选择点处切平面上的特殊坐标系如下:
(5)
由此,根据Chen和Schmitt的方法,可以得到个方程:
(6)
其中是和之间的夹角。采用最小二乘法求解系数的方程组,最后计算高斯曲率和均值曲率:
(7)
这种估计曲率的方法通常用于曲面的网格表示。对于点集数据,查找诸如邻近点和法向量之类的信息在计算代价上是很大的。在向量场表示中,所有这些信息都是隐式可用的,并且直接编码在每个体素中。
因此,公式(3)(4)和(7)中的计算仍然很简单,因为它们被用在向量场中编码的最近点。计算高斯和均值曲率后保留的信息为表1中定义的该点处的曲面类型。
表1 由高斯和均值曲率定义的曲面类型
3 配准
本节详细介绍了利用曲面类型信息增强的向量场从粗到精的配准过程,并强调了算法每一步所使用的对应关系和误差度量。该算法的示意图如图4所示。利用每个视图中的数据分别构建增强向量场。向量场表示包括第2节中介绍的曲面类型。该信息用于估计每对视图之间的粗略方向。最后,将所有粗略注册的视图提交到姿态优化过程中进行最终配准。
图4 从粗到精的配准说明
在粗配准估计过程中,从每个视图中的数据构建向量场后,选择一个视图中的一种表面类型来检测其他视图中表面上的相同区域。所选的表面类型必须包含少量的表面体素(覆盖表面上的小区域或特殊区域),并且该数字在两个视图中必须相似(覆盖表面上的相同区域)。选择这些点的一个方法是构建视图中每种类型体素数量的直方图,并选择数量介于最小计数和最大计数之间的体素。为了估计两个视图之间的粗变换,必须找到这些区域上的对应点。我们使用了Chen等人提出的RANSAC-DARCES方法,RANSAC-DARCES是RANSAC(随机样本一致性)和DARCES(数据对齐刚性约束穷尽搜索)过程的结合。主要思想是利用几何约束来搜索相应的点。例如,RANSAC从一个视图中选择主点,次点和辅助点三个控制点。另一个视图中的对应点必须满足与这三个控制点的几何形状相匹配的约束。这意味着距离必须等于,并且点必须位于以为圆心,半径的圆上,如图5所示。如上所述,RANSAC只选择少量的体素来估计粗配准。这种策略避免了需要实现深度搜索方法,如Chen所提出的方法。这有助于减少匹配过程中满足几何约束的计算量。对于RANSAC-DARCES选择的3个点对和中的每一个,估计一个刚性变换。通过首先使用从第一个视图中所有表面体素中提取的所有最近的点(称为参考点)来评估刚性变换的有效性,然后使用该刚性变换将参考点带到第二个视图中的新位置。在第二个视图中,找到了转换后的参考点与表面成功对齐的次数。Chen的论文介绍了这一产生标准。在我们的例子中,当一个转换的参考点落在另一个视图的表面体素中时,会检测道一个事件。该产生准则相当于测量点到小于体素大小的表面的距离的误差函数,但是不需要任何复杂的计算。这是我们基于向量场的方法的一个优点。产生出现次数最多的变换被认为是粗配准过程的最佳变换。
图5 RANSAC-DARCES方法给出的三个对应点的几何约束
在姿态细化过程中,从上述粗配准过程中获得的所有预配准视图都将进行增量配准。利用向量场的位姿细化方法是Tubic等人提出的,基本上是ICP算法的一种变体。它包括在每次估计视图之间的转换后迭代更新向量场表示。在ICP中,查找对应点的步骤近似为查找最近的点。向量场的优点就是它隐式地提供了最近的点。图6是用向量场搜索最近对应点的示例。给定一个数据点,只需要定位该点所在的体素,然后使用存储在体素向量场中的值来找到最近点的近似值。在该图中,我们不是寻找数据点的最近点,而是得到切面上最近点的近似值作为的最近点。如果点属于活动体素(活动体素是已经计算出向量场的体素),则称为控制点,为估计变换的匹配点。因此,如果粗配准的结果不准确,并且用于构建向量场的体素大小很小,则不可能在细配准过程中找到足够的匹配点来估计变换。为了处理粗刚体变换的误差,从一个粗分辨率(即大体素)的向量场开始,逐步减小体素大小,直到接近数据的分辨率,实现姿态的细化。假设我们有M组点,我们的姿态精细化算法可以总结如下:
算法中的变换是从控制点和匹配点中估计出来的,这些点之间的距离计算出的误差函数最小,如下所示
(8)
其中是欧式距离,N是图6中和是对应点的个数,是估计变换。向量场表示中所有可用的信息使得误差函数的计算变得简单。该算法的收敛性取决于是否达到预先设定的最大迭代次数,或者几次连续迭代的误差测量是否保持不变。
图6 体素中最近的点的确定