点云模型的切片式曲面重构算法设计
2020-09-02陈华伟袁小翠
陈华伟 袁小翠 伍 权
1(贵州师范大学机电工程学院 贵州 贵阳 550025)2(南昌工程学院江西省精密驱动与控制重点实验室 江西 南昌 330099)
0 引 言
非均匀有理B样条(Non-Uniform Rational B-Splines,NURBS)曲面[1-2]为双参数曲面,其定义域为四边域,具有规则的u、v方向控制点数(点阵)。因此,在进行曲面拟合时,要求规则的型值点输入。而点云模型输入是大数据量的散乱点云,对机械产品而言,常规的做法是根据正向建模的思想,提取点云形貌中的型线或型面特征,然后再逐面重新构建[3]。该方法可以精细化构面,但是对复杂点云模型,其逆向建模过程相当复杂,建模效率低。因而,在商业设计环境下,需要更快捷,而又不失建模质量的方法。切片法采用切片方式对模型进行分割,在二维分割面上提取切片边界,然后通过蒙皮的方式构造曲面,可以很方便地构造NURBS曲面四边域并重构曲面表面,因而成为NURBS曲面逆向建模的重要方法。轮船船身、飞机机翼等大曲面的模线法曲面重构[4]也是切片法的具体体现。
1 算法流程
NURBS是STEP标准中工业产品几何形状建模的基本数学方法,因而,由该方法构建的NURBS曲线面兼容于不同的CAD软件,是当前曲线面建模的主要方法。NURBS曲线数学表达式为:
(1)
式中:ωi为权因子,Pi为控制点,Ni,p(u)为p次B样条基函数,当p=3时,称之为三次B样条曲线。
对应地,NURBS曲面数学表达式为:
(2)
式中:ωi,j为权因子,Pi,j为控制点,Ni,p(u)、Nj,q(v)分别为u方向p次和v方向q次B样条基函数,m、n分别为u、v方向的控制点数。当m=n=3时,称之为双三次B样条曲面。
以散乱点云模型为输入,通过切片法重构NURBS曲面,主要经过点云切片分割、切片边界提取、曲面拟合等步骤,并逐步产生规则点集、线和面模型,实现模型的降维增维和有序化处理,处理流程如图1所示。
2 点云切片式分割
2.1 切片设计
区域分割时首先需要确定分割方向,不失一般性,通过构造包围盒,沿包围盒主轴方向进行区域划分。图2中,包围盒0123-4567可由最小坐标点0(xmin,ymin,zmin)和最大坐标点6(xmax,ymax,zmax)确定,并与XYZ坐标系方向一致。以Z轴为分割方向,可得其中一分割面0′1′2′3′。
图2 沿包围盒主轴方向分割
接下来,采用等区间分割法,将点云划分至各等分区间。为了便于后续投影计算,设定每个分割面的影响范围为其左右半区域内的点。如图3所示,设分割方向为Z轴,则第i个分割面的Z坐标zi=zmin+i×seg(i=0,1,…,U),其中seg=(zmax-zmin)/U为区间高度,U为区间数。
图3 等区间分割
三点即可构面,在分割面内任取不共线的三点即可确定分割面方程,设已取三点Pti(xi,yi,zi),i=0,1,2,则可求分割面法矢:
分割面方程为:
F(x,y,z)=A(x-x0)+B(y-y0)+C(z-z0)=
Ax+By+Cz+D=0
(3)
式中:常数项D=-Ax0-By0-Cz0。
区域Ui由相邻切平面Pi和Pi+1所夹,则按式(4)确定数据点与区域的归属关系:
FiFi+1<0
(4)
遍历所有点,如果点满足式(4),则该点划归区域Ui。
2.2 切片数据结构设计
合理的切片数据结构设计将有效支撑切片式重构的各阶段,其中,切片和切片边界数据结构用于切片数据分割、存贮、边界的对象和过程描述,其结果数据还可直接用于NURBS曲线、曲面拟合。不失一般性,给出这两项重要的数据结构。
structSlice
//切片
{
Axis axis;
//分割方向为轴向X/Y/Z
std::vector
//分割面
std::vector
//左半区域点集
std::vector
//右半区域点集
};
切片数据结构Slice主要描述了切片方向axis、分割面pl和切片左右半区域(见图2)的点集vL、vR。
structSliceBoundary
//切片边界
{
Planepl;
boolbClosed;
std::vector
};
切片边界结构SliceBoundary主要描述了边界所在分割面pl,边界是否闭合bClosed和边界点集v。
3 切片边界提取
3.1 区域点向分割面投影
对于区域内的点,以半区域位置为界限,将通过算法将半区域内的点映射到邻近分割面内。图3中,首分割面只有右半区域(00′区域),末分割面只有左半区域,将通过投影法直接将半区域内的点映射至对应分割面。假设D为平面ABC外一点,点D在平面上的投影点D′,由向量关系得DD′⊥AB,故有:
DD′·AB=0
(5)
同理,DP⊥AC,有:
DD′·AC=0
(6)
联立式(3)、式(5)、式(6)为三元一次方程组,可求出D′。
3.2 分割面上点集的边界提取
点云边界提取算法很多,简单模型可采用场力法和转角法[5]。映射点集均位于分割面上,对平面内点云可以采用转角法提取点集的凸包边界,其主要思路为:
1) 预定义一坐标轴为参考方向,记为向量v1;搜寻最小坐标点作为边界起点,记为startPoint。
2) 在startPoint邻域内搜索下一点。遍历邻域内的点Ptk,Ptk与startPoint形成向量v2,计算向量夹角v1∧v2,将最大夹角对应的点Ptk加入边界点集。
3) 置v1=v2,继续上述搜索;直到找到一个边界点与startPoint相同。
显然,采用转角法获取的边界为首尾相连的闭合边界,而且边界点集是有序点集,其顺序就代表了边界方向。
3.3 边界闭合性和一致性调整
实际模型中,方向投影边界有闭合和非闭合之分,而且为了保证后续曲面拟合,要求所有边界同时为打断或闭合状态,对于非闭合边界,还需要进行打断或解环操作。
打断后,边界方向可能不一致,应及时更新边界起点和边界点序,如图4。面向NURBS曲面拟合,应确保每个分割面上边界方向一致性。定义分割面的法向为正,分割面内的边界按右手法则为正。下面以PmaxI为基准面,进行边界方向调整:1) 对于分割面PmaxI,采用三点法计算分割面法向dir,作为所有分割面的正向;2) 遍历分割面Pi(i=0,1,…,U),对每个分割面,计算其法向diri,判断dir·diri>0,则认定Pi与PmaxI同向;否则为异向;3) 异向的情况下,采用二分算法倒置Pi内的边界点序。
图4 边界方向
进行打断操作后可获得非闭合边界,其边界起点自然确定。但是对于闭合边界,面向NURBS曲面拟合,还需要确保各条边界起点位置的一致性。设第0条边界上的第1个点为v0,边界点集重心为vc0,另设第1条边界点集的重心为vc1,构造平面p(v0,vc0,vc1),如图5所示。设定位于平面p右侧,且与平面p及v0点距离和最短的点为边界起点,即所求点vj位于p的法矢正向,且满足max(|v0,vj|+|vj,vc0|)。确定了各边界的起点之后,应对边界其他点进行顺调。
图5 边界起点一致性调整
4 NURBS曲面拟合
由分割面边界点可直接拟合出各条边界曲线[6]。在NURBS曲线拟合中,如果型值点数为n,控制点数为m,则要求m 曲线拟合中存在型值点分布不均的情况,这对曲线拟合影响不大,但会影响到曲面拟合的效果。NURBS曲面拟合需要输入规则点阵,而且应尽量保证型值点阵分布的均匀性。对此,通过对拟合曲线进行采样或插值[7-8]的方法,重新采集型值点,形成规则化的U×V型值点点阵,用于NURBS曲面拟合。 将初始点集向拟合后的曲面投影,计算初始点与投影点之间的距离即为拟合误差[7-9],统计所有拟合点的误差,可得平均误差、最大误差等参数,作为曲面拟合质量评价。 总体上,NURBS曲面拟合过程包括以下四个步骤: 1) 曲线拟合:以分割面Pi边界点集为输入,拟合NURBS曲线Ci,i=0,1,…,U; 2) 均匀采样:采用deBoor算法,对Ci进行等间隔插值采样,得到U×V型值点点阵; 3) 曲面拟合:采用插值算法生成NURBS曲面S; 4) 误差分析:采用投影算法计算初始点集至S的距离误差,进行误差分析。 以上算法在CATIA RADE(Rapid Application Development Environment)开发平台通过二次开发实现,其中,NURBS曲线曲面拟合和编辑功能由CAA开发接口提供,外界可直接调用,有关CATIA环境下NURBS曲线面重构算法可参考文献[10]。下面以花瓶模型为例,对切片和NURBS曲线面拟合过程进行说明。 如图6所示的实验一是未对边界作闭合性和一致性调整的结果,显然,沿X轴和Y轴分割的曲面拟合结果是错误的,只有沿Z轴剖切的曲面拟合结果是正确的。这主要是由于剖切方向不同,引起分割面边界线长短及其分布差距太大(图6(b)、(d)),得到的点阵难以构成四边域(图6(d))等问题。但是从图6(f)-(h))可见,与花瓶主轴方向一致的分割就能获得很好的曲面重构效果。 图6 实验一(6个分割面) 为此,通过改进算法,并对分割面边界进行闭合性和一致性调整,就能获得更好的拟合效果,如图7所示的实验二。沿X轴分割时,由于在侧边缘上难以分割到足够点,导致侧边缘部位边界线趋短,右侧曲面出现了漏洞;沿Y轴分割时,由于在后侧难以分割到足够点,导致后侧边缘部位边界线趋短且不规则,后侧上方花瓶口部位曲面出现剧烈变形;显然,只有沿Z轴分割的曲面拟合结果最好。整体上,经过程序优化后,各方向分割均能得到直观的曲面拟合效果。 图7 实验二(20个分割面) 由图6(g)和图7(d)对比可知,随着分割面的密度增大,拟合曲面越光滑,说明通过适当增加分割曲线及其采样型值点密度,可提高NURBS曲面拟合精度。图7(a)中拟合面出现了明显的褶皱,也可通过适当提高采样密度的方法进一步提高曲面重构效果。 基于CATIA二次开发成果,还通过自主开发实现了上述算法。基于VC和OpenGL平台开发,其中NURBS曲线曲面拟合算法通过集成NURBS++开源算法库实现。如图8所示的实验三,通过模型主轴方向的分割和拟合均达到了预想的效果。 图8 实验三 NURBS曲面是四边域曲面,重构过程中要求事先准确划分四边形区域,或者提取规范的型值点点阵。对散乱大数据点云模型拟合NURBS曲面,应顺应模型特征,构造合适的四边域。理论上,切片式分割拟合可规避复杂的模型特征,将三维曲面拟合问题降维至二维曲线拟合问题,提高曲面构建的效率和成本;曲面构建的精度则可以通过加密切片数量和增加型值点采样密度实现。但是,对特征线面多(如机械零件)、细节特征多(雕塑)等复杂模型,简单地通过一次剖切和重构就能实现曲面重构的想法显然不切实际。根据CAD中正向设计的思想,通过点云区域分割、分片曲面拟合、曲面拼接步骤才能更准确地表达原始模型的型面特征,这也是有待展开研究的内容。5 实 验
6 结 语