1 引 言
物体三维重建是对三维物体建立适合计算机表示和处理的模型[1],是在计算机环境下对三维物体进行处理和分析其性质的基础[2],也是在计算机中建立表达客观世界的虚拟现实的关键技术[3].
计算机内生成三维物体主要由两种方法实现. 一种是使用几何建模软件,在人为控制下生成三维几何模型,另一种则是通过三维重建,利用物体的二维投影重建出物体的三维信息等[4]. 经过三维重建得到一组三维点云数据,三维点云数据在逆向工程、工程检测、自主导航、文物保护、虚拟现实等领域的应用中,发挥着至关重要的作用[5]. 因此,研究三维点云数据的几何特征的提取与误差分析是评判三维重建效果的关键技术,对于改善三维重建的算法与应用具有重要的意义.
利用三维图像分析,从三维细化的结果中,可以获得三维物体的很多特征信息,包括物体的形状结构、连接与拓扑关系以及物体的轴线基准、轴线长度等,它们反映了三维物体的一些基本结构性质和基准线、基准面等特征. 三维细化处理完成后,进一步根据三维重建图像数据和三维细化后提供的基准信息,计算表面积和表面曲率以及各种形状和位置尺寸[6-8].
2 表面几何参数的提取与计算
2.1 读取重建物体与物体的CAD模型所有点坐标
参数提取过程以CATIA作为软件基础,以Excel为辅助. 在参数提取过程中,主要使用CATIA调整重建物体的形状、位置,并输出得到点云数据. 基本过程为:在CATIA中新建一个点群造型编辑,将待比较的重建物体与物体CAD模型的STL文件分别导入,重建结果坐标原点与定义的原点不一致,修改重建物体坐标与大小,使重建物体坐标与CAD模型坐标一致,导出各点坐标并存储于Excel表格中.
重建物体中包含的点个数相对于CAD模型来说,数据量非常大,比较起来不仅非常复杂,而且对计算机要求很高. 如果对物体中每个面都进行比较,工作量很大,而且具有盲目性,是不切合实际的. 为了提高工作效率,让分析处理方法更快更稳定的在各种计算机上运行,将待比较的面提取出来,分别进行比较.
2.2 提取待比较平面
从CATIA中导出的Excel表格中包含了所有点的坐标,如何将所需面的点云数据筛选出来也是一个必须解决的问题. 由于重建物体不规则,不能清楚的知道平面所在的范围,用MATLAB显示所有点,选出平面大致范围,利用迭代法的思路,多次筛选并显示,最后得到所需点云数据.
2.3 拟合CAD模型对应面
CAD模型经导出的STL文件仅有特征顶点,不能直接与重建面进行比较,要对模型面进行拟合. 拟合是将已知某函数的若干离散函数值{f1,f2,…,fn},通过调整函数中若干待定系数f(λ1,λ2,…,λn),使得该函数与已知点集的差别(最小二乘法意义上的)最小,即将平面上一系列的点,用一条光滑的曲线连接起来. 因为这条曲线有无数种可能,从而有各种拟合方法. 拟合出的曲线一般可以用函数表示[9].
拟合以及插值还有逼近是数值分析的三大基础工具,通俗意义上它们的区别在于:拟合是已知点列,从整体上靠近它们,插值是已知点列并且完全经过点列;逼近是已知曲线,或者点列,通过逼近使得构造的函数无限靠近它们. 将通过拟合的对应面,与待比较面进行分析比较,求出表面几何特征参数[10-11].
2.4 误差分析
求出对应点坐标,对平面进行误差分析以及平面评估. 此处选择计算表面粗糙度、变化量标准差、表面平面度和平行度来进行评估.
粗糙度是反映数据集中趋势的一项指标. 其计算公式为
[Ra=i=1n(|ΔXi|)n] (1)
标准差为方差的算术平方根,反映组内个体间的离散程度. 其公式为
[s=i=1n(Xi-X)2(n-1)] (2)
平面度误差是指被测实际表面对其理想平面的变动量. 平面度误差是将被测实际表面与理想平面进行比较,两者之间的线值距离即为平面度误差值;或通过测量实际表面上若干点的相对高度差,再换算以线值表示的平面度误差值. 其公式为
[μ=max(ΔXi)-min(ΔXi)] (3)
平行度是两平面或者两直线的平行程度,一平面相对于另一平面平行的误差最大值. 为了区分平面度与平行度,定义平面度取20%最大与最小值的差的均值. 其公式为
[δ=(0.8nnΔXi-10.2nΔXi)(0.2n)] (4)
式(1)~(4)中,[ΔXi]表示待比较方向上重建物体与CAD模型的坐标变化量;[Xi]表示重建物体待比较方向上的坐标值;[X]表示重建物体待比较方向上的坐标的平均值;n表示所提取面所有点个数. 通过平均值和标准差,可以计算误差值的集中趋势和离散程度. 通过平面度,可以计算平面的最大误差值.
3 结果与讨论
3.1 导出重建物体与物体的 CAD 模型所有点坐标
将重建物体与物体的CAD三维模型的STL文件分别打开并导入,存储于表格. 将三维物体的各点显示出来,发现重建结果的坐标原点与定义的原点不一致[如图1(a)],把重建物体图平移并旋转到定义的坐标系中[如图1(b)],将文件点坐标导出,得到所需坐标.
3.2 提取待比较平面
导出的表格中包含所有点的坐标值,通过数据筛选将所需面的点云坐标筛选出来. 通过软件显示并选取出所需的范围. 将物体的CAD三维模型面编号[如图2(a)],以1号面为例,从重建物体[如图2(b)]中提取出1号面. 选取1号面4个顶点,筛选出所需平面,得到物体的CAD三维模型[如图3(a)]与重建物体[如图3(b)]的1号面各点坐标.
3.3 拟合CAD模型对应面
物体的CAD三维模型导出的STL文件仅有特征顶点,将待比较平面进行拟合并求出平面方程. 输入1号面上三点坐标,求出过三点坐标的平面方程,再通过该平面方程,求出物体的CAD三维模型1号面上与重建物体1号面上的对应点坐标,进行比较.
3.4 误差分析
对重建物体与物体的CAD三维模型对应的5个面进行了误差分析,分别得出并记录各个面的表面粗糙度、变化量标准差、表面平面度和平行度,如表1所示.
通过表1中的各组数据,可以看出重建的5个面中,2号面的平面度最好,5号面的粗糙度最小,较为光滑,并与模型的5号面平行效果更好. 这些数据可以反馈到三维重建过程中,用于改善三维重建效果.
4 结 语
本研究实现了三维重建结果表面特征的提取与误差分析. 将重建物体与实际物体的CAD模型的表面进行比较,通过分析粗糙度、平面度、平行度等参数,得出了便于评判重建效果的数据,为后续对三维重建算法的优化改进提供了参考数据.