java 点云曲率_一种点云主曲率计算方法与流程

java 点云曲率_一种点云主曲率计算方法与流程_第1张图片

本发明涉及工程零件表面点云测量领域,更具体的,涉及一种点云主曲率计算方法。

背景技术:

三维数据测量现已广泛应用于复杂型面零件的加工质量检测、运行状态监测及快速检修过程中,以及时进行外形评价并做出决策,避免产生大量加工废品或运行安全事故。为此,工程中常通过反求工程方法,利用激光扫描仪或三坐标测量机等对工件外形进行测量,并对测量数据进行对齐与曲面重建,通过与工件CAD模型的比较分析以评价其加工质量或规划修复区域加工工艺。由于受测量工件外形轮廓尺寸及传感器测量范围限制,单一视角很难获取工件外形完整测量数据,往往需要多个视角甚至多个传感器测量才可获取完整测量数据。

传统的MLS曲面采用单一固定半径高斯核函数定义方法,在获得的拟合曲面在平坦区域振荡,在高曲率区域欠逼近,无法突出细节,且无法准确反映测量工件上任意点处沿不同方向形状变化较大的特征,此将使逼近的MLS曲面存在一定的固有逼近误差,并最终影响测量数据到MLS曲面的对齐精度。

技术实现要素:

本发明为克服现有的MLS曲面采用单一固定半径高斯核函数定义方法,存在无法突出细节,无法准确反映测量工件上任意点处沿不同方向形状变化较大的特征的技术缺陷,提供一种点云主曲率计算方法。

为解决上述技术问题,本发明的技术方案如下:

一种点云主曲率计算方法,其特征在于,包括以下步骤:

S1:构造自由曲面,在曲面上采集点云得到Q1并计算Q1中每个点的法矢;

S2:根据得到的法矢,在Q1中选定一个点p,在其k邻域内计算质心,并由质心计算协方差矩阵;

S3:根据得到的协方差矩阵,计算其特征值和特征向量;

S4:比较得到最大和次大特征值及其对应的特征向量,通过计算得到主曲率;

S5:根据得到的主曲率构造各向异性高斯核函数,得到权函数;

S6:根据权函数构造局部加权法矢,由加权法矢得到局部各向异性最小二乘曲面;

S7:判断是否为最后一个点,若是,则结束;若否,则执行步骤S2。

其中,所述步骤S2包括以下步骤:

S21:对于点云Q1中的点p,利用KD-Tree算法获取到点p的k邻域,以点p为中心,以R为半径创建球域,设球域坐标系为(β,α,γ),球域内的点pj可表示为:

其中,α∈[0,2π],u∈[-1,1],r∈[0,R],在整个球域内生成nb个均匀分布点;

S22:将得到的nb个点pj投影到由p点及其邻域构建的移动最小二乘曲面上,得到投影点p′j,若则p′j在区域A内部,即球域与移动最小二乘曲面的相交区域的内部,否则在外部;

S23:收集区域A内部的点构成点集用nBin表示B内点的数目,则区域A的体积Vojb可表示为:其中,Vb是以点p为中心,半径为R的球的体积,大小为4πR3/3;

S24:根据得到的区域A的体积,计算质心b和协方差矩阵J(A),其计算公式为:

其中,在所述步骤S4中,根据协方差矩阵J(A)得到最大及次大的特征值,记为Mb1,Mb2以及其所对应的方向向量v1、v2,p点处的主曲率可表示为其计算公式为:

其中,所述步骤S5构造各向异性高斯核函数的公式具体为:

其中,θ(||x-pi||)为权函数。

其中,构造局部加权法矢,其计算公式为:

其中,n(x)表示每一个点的法矢,根据加权法矢构造局部各向异性最小二乘曲面,其计算公式为:

与现有技术相比,本发明技术方案的有益效果是:

本发明提供的一种点云主曲率计算方法,通过使用两个主曲率作为高斯核函数的参数,增加利用自适应最小二乘曲面拟合点云在平坦区域的光滑度,有效突出了细节部分。

附图说明

图1为一种点云主曲率计算方法方法流程图。

图2为创建的球域示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

如图1、图2所示,一种点云主曲率计算方法,包括以下步骤:

S1:构造自由曲面,在曲面上采集点云得到Q1并计算Q1中每个点的法矢;

S2:根据得到的法矢,在Q1中选定一个点p,在其k邻域内计算质心,并由质心计算协方差矩阵;

S3:根据得到的协方差矩阵,计算其特征值和特征向量;

S4:比较得到最大和次大特征值及其对应的特征向量,通过计算得到主曲率;

S5:根据得到的主曲率构造各向异性高斯核函数,得到权函数;

S6:根据权函数构造局部加权法矢,由加权法矢得到局部各向异性最小二乘曲面;

S7:判断是否为最后一个点,若是,则结束;若否,则执行步骤S2。

更具体的,所述步骤S2包括以下步骤:

S21:对于点云Q1中的点p,利用KD-Tree算法获取到点p的k邻域,以点p为中心,以R为半径创建球域,设球域坐标系为(β,α,γ),球域内的点pj可表示为:

其中,α∈[0,2π],u∈[-1,1],r∈[0,R],在整个球域内生成nb个均匀分布点;

S22:将得到的nb个点pj投影到由p点及其邻域构建的移动最小二乘曲面上,得到投影点p′j,若则p′j在区域A内部,即球域与移动最小二乘曲面的相交区域的内部,否则在外部;

S23:收集区域A内部的点构成点集用nBin表示B内点的数目,则区域A的体积Vojb可表示为:其中,Vb是以点p为中心,半径为R的球的体积,大小为4πR3/3;

S24:根据得到的区域A的体积,计算质心b和协方差矩阵J(A),其计算公式为:

更具体的,在所述步骤S4中,根据协方差矩阵J(A)得到最大及次大的特征值,记为Mb1,Mb2以及其所对应的方向向量v1、v2,p点处的主曲率可表示为其计算公式为:

更具体的,所述步骤S5构造各向异性高斯核函数的公式具体为:

其中,θ(||x-pi||)为权函数。

更具体的,构造局部加权法矢,其计算公式为:

其中,n(x)表示每一个点的法矢,根据加权法矢构造局部各向异性最小二乘曲面,其计算公式为:

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

你可能感兴趣的:(java,点云曲率)