4.如果N1<=k,则直接转到第五步;
5.扩展搜索区域到周围的子包围盒并且重新搜索。
当k个最近邻的小于候选点到扩展包围盒六个面的最近距离时,停止搜索。
重复上面的五个步骤直到所有点的K个近邻都被找到为止。
2.2法线估计
法向量估计被许多学科研究,例如:
计算机制图、图像处理和数学,但是大多数情况下是曲面的多样化表示。
法向量估计的结果对逆向工程中后续的工作有很大的影响,例如:
隐式曲面重建和模型渲染。
目前许多算法计算法向量作为曲面重建的一部分,或者一旦曲面重建完成,法向量也就可以被简单的计算出来。
因为这些算法需要输入的数没有噪声的、原始点云数据,所以在应用算法前这些数据需要通过平滑处理。
Hoppe等人提出了一种算法,这种算法每个点的法向量被估计通过计算对K个近邻点进行总体最小二乘估计获得的拟合平面的法向量来得到的。
这种方法是稳健的对于因为内在的低通滤波而存在噪声的点云数据。
在这个算法中,K的值是一个参数而且是基于法向量的估计目测手动得到的,并且在一个好的K值被选出之前需要实验不同的K值。
此外,相同的K值被用于点云数据中的所有点的法向量估计。
第一步是计算每一个数据点的定向的切平面。
一个数据点Xi和它的k个最近邻被定义为Nbhd(Xi)。
Xi作为切平面Tp(Xi)的中心,并且用最小二乘最优拟合法去近似这个主要的切平面,然后这个切平面的法线就被认为是这个点Xi的法向量ni。
为了计算这个法向量,要计算K个近邻的协方差矩阵。
如果λ表示与特征向量Vi相关的CV的最小特征值的绝对值,那么ni就可能是Vi或者-Vi。
2.3法向量调整
因为任意点的法向量是基于它的K个近邻被估计的,它有两个方向:
正方向和反方向。
法向量方向选择的目的是决定曲率估计的结果和渲染模型是否正确,因此,法向的方向必须被统一调整,以至于临近的平面具有同样的方向。
假设两个点Xi,Xj是相邻的,当数据是稠密的,并且平面是平滑的,相应的切平面Ti=(oi,ni)、Tj=(oj,nj)是近似平行的,也就是说ni*nj=+-1,如果平面的方向一致的,那么ni*nj=+1,否则ni或者nj应该被翻转。
在图三中,两个平面T1和T5是相反的,那么n1*n5=-1,n1或者n5应该被翻转。
找到全局统一的方向的困难是在所有部分中数据点“充分接近”这个条件应该被满足。
调整法线方向的一个简单的想法是设置方向从一个点到与它几何上最近的点作为传播的秩序。
然而,这也许会产生错误的结果,当试图传播方向经过尖锐的边界时,例如,在图四中,oi与oj是一对最接近的点,用上述方法调整他们的法线的方向会产生错误的结果(见图4b)。
为了避免上述的错误,周等人[11]设置传播规则通过黎曼图的最小生成树(MST)。
这个规则是有益的,因为它试图在数据中沿着最小曲率的方向传播法向,因此大大避免了出现歧义的情况。
但是它首先必须构建里曼图的最小生成树,并且需要来回移动每一个已经被调整的点当传播方向的时候,因此,它的时间复杂度是O(n+n^2),随着n的增大,他将会花费更多的时间。
刘等人[12]根据法线的长度阈值将散乱的点云分为平坦的和非平坦的。
依据k个最近邻是否是平坦的点,他们决定法线方向的传递方式,因此它使得建立数据点法线的黎曼图是没有必要的。
他们提出了二阶最近距离和以阶k个近邻的方法,为了加快方向量的传递。
在这篇文章中,采用文献[12]中的传播法线方向的方法,调整所有切平面法线方向的主要步骤是:
●找到Z坐标最大的点作为起始点,并且调节法线方向使(0,0,1)点与起始点的内积的结果大于0;
●根据给定的法线距离阈值将点云数据分为平坦的点云和非平坦的点云,然后根据K个最近邻调整法线,并且统计被调整点的个数;
●如果被调整点的数量等于点云数据的总数,统一切平面方向结束,否则表示在点云数据中存在“孤立的点”(点云数据是超级分散的),使用三阶最近距离的方法传递方向。
图5显示的是鼠标点云数据法线调整的过程。
点云数据的法线方向在法线估计之前不是统一的,如图5(b)所示。
在使用我们提出的方法调整法线方向之后,正确的结果如图5(c)所示。
2.4曲率估计
让S(r,t)成为一个常规的C^2连续的三维自由参数曲面,S上在S(r0,t0)处主曲率k1(r0,t0)和k2(r0,t0)被定义为在S(r0,t0)处法线曲率的最大值与最小值。
根据欧拉的理论,曲面S(r,t)切平面方向上法线曲率等于(见参考文献[13]):
θ是第一主方向与切线方向的夹角。
总(高斯)曲率K与平均曲率H是由曲面的主曲率唯一确定的:
为了估计曲率,有五个主要流行的算法:
抛物面拟合、圆拟合、Gauss-Bonnet规划、Wantanabe-Belyaev方法和Taubin方法。
在参考文献[14]中,以上五种不同方法的比较,并且他们总结了高斯曲率估计最好的算法是Gauss-Bonnet规划,而平均曲率估计最好的算法是抛物面拟合法。
他们也证明最稳定算法也具有收敛性的算法是密切抛物线拟合算法。
在这次实验中,为了估计曲率使用抛物面拟合算法。
这个算法近似顶点周围的最小邻域通过密切抛物面。
曲面的主曲率被考虑与抛物面的主曲率是完全相同的。
这个密切抛物面为:
系数a,b,c可以在最小二乘拟合算法中被找到,包括三个步骤:
(1)让顶点Xi作为Xi与k个最近邻点建立的局部坐标系的原点,Xi的法线作为z轴,然后将k个最近邻点的坐标系转换为局部坐标系,并且将新的坐标系放入等式(6)中。
建立了一个线性的超定系统:
(2)使用奇异值分解(SVD)的方法去解等式(7),然后找出系数a,b,c。
(3)高斯曲率和平均曲率计算如下:
重复后三步,直到所有点的曲率被估计完。
在最后点云的平均曲率的平均值MC倍计算。
2.5点云精简的原则和步骤
曲率是曲面固有的几何特性。
它可以反应模型的几何细节。
在试验中,使用抛物线拟合算法来估计曲率,这是估计平均曲率最好的方法。
因此,平均曲率作为数据精简的基本准则。
点云数据精简的核心准则是:
根据空间划分将点云数据分为几个子包围盒,每一个子包围盒包含一定数量的点,这些点代表局部几何特性。
根据意识形态的不同,点云数据的精简通过每个子立方体中分别提取点云。
根据原则,点云数据精简分为以下四个步骤:
(1)基于2.1中空间划分的结果,计算每个子包围盒的平均值Hi;
(2)如果Hi>MC,它表示子包围盒周围局部区域的部分几何结构发生很大的改变,提取比MC有更高平均曲率的点,因此在局部区域中更多的点被保留,并且局部几何特性被尽可能的、保留;
(3)如后Hi<=MC,它表明在子包围盒中局部的几何结构改变很小,平均曲率最接近H的点被选择,并且这个被选择的点被视为是子包围盒中所有点的代表。
结果是其他多余的点被删除。
(4)重复上述三个步骤,直到所有的子包围盒都被精简为止,然后保存所有提取出来的点。
3实验结果
本文提出点云数据精简方法被应用于样品零件,两个模型的结果被讨论。
因为曲率估计是基于每个数据点的K个邻域,对于K值比较小,点的噪声处于支配地位,特征值很小,并且特征向量不能显示曲面的切平面。
另一个极端,K值很大,K个紧邻的范围变得很大,并且表面曲率趋向于增加“厚度”。
实验结果表明K的取值范围在9-20之间是一个在计算时间和有充足的数据对于表面合理的差值之间的有效权衡对于底层表面形式。
在本次实验中,K值取10。
图6展示使用不同方法处理的发动机罩点云数据。
在图6(b)中展示的基于曲率法精简的发动机罩模型相比于图6(c)中所示的均匀采样法在发动机罩中间尖锐的边缘周边表留了更多的点而在平缓的区域保留较少的点。
对于点云数据采用适合的方法精简,尖锐的边界保留较好,如图6(d)所示,保留点的数量对于之后的曲面拟合并不是很好。
上面的图显示本文所使用的方法在平缓的地方保留更少的点,而在曲率高的区域保留更多的点。
4结论
在这篇文章中提取基于曲率的点云数据精简方法,这种方法通过点云的几何特征精简数据点。
这种方法用于估计被用于抛物线拟合的曲率估计上,以提高曲率估计的精度。
此外,根据数据精简的改进原则,数据精简的过程被简化。
与传统的采样方法如均匀采样法、弦偏差法相比,本文所提出的方法在保留更多的几何特性和减少大量的冗余点方面有更好的表现。