陈廷豪,吴 婷,潘成钢,吴 建,包 涵,李嘉杰

(嘉兴学院 机电工程学院,浙江 嘉兴314001)

3D打印技术,又称为“增材制造”,是以数字模型为基础,通过逐层累加材料制造零件的一种技术。3D打印技术的内容涵盖了产品生命周期前端的“快速原型”和全生命周期的“快速制造”相关的所有打印工艺、技术、设备类别和应用。它的显着优点是无需传统刀具和模具,能够成型任意复杂的零件,可以有效简化生产工序,缩短制造周期[1-2]。因此,3D打印技术具有高的加工柔性与快的市场响应速度,能够广泛应用于医学,机械工程,工业设计等领域[3]。

在3D打印的过程中,首先要对模型进行分层切片处理,获取模型各层切片的轮廓数据。这些切片轮廓是由一系列微小线段所组成,模型的精度越高,切片轮廓包含的微小线段和非特征冗余点就越多。为适应3D打印的实际需要,必须对切片轮廓数据进行精简处理。因为密集数据点不仅会降低计算机运行速率,占用较大的内存,还会降低打印时喷头运作的流畅度,影响成型的效率和质量。

现国内外学者对数据精简研究已有一定的成果。Teh等[4]提出使用离散曲率进行数据精简的方法,通过把某点的近似曲率作为判据,与设定的阈值进行比较,删除离散曲率较小的点,这一方法在曲率变化较小处容易因为删除某些特征点导致后续的累积过程出现错误。杨峰等[5]提出使用累积曲率的方式进行数据精简,当判断某个数据点是否为冗余点需要被去除时,将其曲率累加到累积曲率中,用累积曲率和曲率阈值作比较,直到累积曲率值满足被去除的条件时,累积曲率清零,这种方法能够避免累积误差导致的简化错误,但累计曲率阈值的设定较为困难。Huang等[6]人利用二值图像对数据点进行采样,然后采用基于Lloyd聚类的精简算法,将数据点进行聚类分割后,通过计算拟合误差来获得合理的聚类数据,但由于该算法需要反复迭代,运行效率较低。吴凤和等[7]提出曲率弦高法,利用曲率比的方式改进单一的弦高参数,使得弦高阈值在判断过程中进行变化,从而得到比弦高法更好的精简效果。方源敏等[8]提出了改进角度偏差法,该方法通过计算各点的偏角值,然后根据平均偏角值使用插值的方式进行精简。洪军等[9]提出角度弦高联合准则,以内角与弦高两个参数为判据进行数据精简。李新等[10]改进了角度弦高联合准则,对连续判断区域中各个点的弦高与内角进行计算,取其中最大的角度与弦高进行阈值判断,以防止累计误差的产生。

本文通过分析切片轮廓上冗余点的分布情况,采用基于偏角弦高的数据精简方法对切片数据进行特征保留。该方法以已保留的路径点作为参照,首先对待测点进行弦高的粗判断,然后再通过计算偏角的大小来确定需要保留的特征点,从而高效地精简切片数据点。

1 算法原理

传统弦高角度法:对于切片轮廓路径上有序排列的数据点,相邻两个数据点构成一个路径矢量,待测点相对于上一个路径矢量的偏角反映了相邻数据点的方向变化程度,弦高反映相邻数据点的偏离距离。如图1所示,当数据点Pi相对于上一个路径矢量A■→B的偏角或弦高较小时,Pi可以当作冗余点去除。但单一使用偏角进行判断容易忽略轮廓上线段较长的特征点,而单一使用弦高容易忽略细节特征点。因此,本文提出偏角弦高的数据精简方法,具体方法如下:

图1 本文方法精简原理图

以切片轮廓上待测点Pi的前两个路径数据点A、B为基准点,AB为路径基线,计算Pi到基线AB的偏角αi和弦高hi,若αi和hi均小于阈值,则标记Pi为冗余点,此时基线不变,继续判断后续点Pi+1到基线AB的偏角αi+1和弦高hi+1,若αi+1和hi+1有一个大于阈值,则标记Pi+1为保留点,并将Pi+1作为新基准点B,Pi作为新基准点A,然后判断后续点Pi+2到新基线AB的偏角αi+2和弦高hi+2,重复上述步骤直到切片轮廓上的所有数据点均处理完毕。可以看出,这种方法是以前面已保留的路径点作为参照,因此没有累计误差,每个待测点的偏角和弦高只需计算一次。

由于本文算法需要使用偏角与弦高两种数据,若每次判断都对这两种数据进行运算,会较多地占用计算机的内存,故引入筛选法进行算法改良,减少算法的运算量。

筛选法是使用粗判断和精判断来实现特征数据分离的方法。如图2所示,先计算待测点Pi的弦高hi,并对hi进行粗判断,若hi>阈值Δh,则该点为保留点,不用再计算偏角;若弦高hi≤阈值Δh,则再进入精判断,计算偏角αi,若偏角αi≤阈值Δα,则该点为冗余点,反之,则作为特征点保留。整个筛选流程如图2所示。

图2 筛选流程示意图

对于切片轮廓上连续的数据点集{P1,P1,…,Pn},整个精简流程如图3所示。具体执行步骤如下:

图3 本文算法流程图

步骤1:首先输入切片轮廓数据,并设定弦高阈值Δh以及偏角阈值Δα。

步骤2:选取切片轮廓数据中的第一个数据点P1为基准点A,第二个数据点P2为基准点B,AB连成基线。

步骤3:将数据点Pi(i=3,4,…,n)作为判断点,若i≥n,则说明轮廓线上的点已处理完毕,转步骤7;否则,计算Pi到基线AB的弦高

步骤4:判断hi和阈值Δh的大小,若hi≤Δh,进入精判断,计算数据点Pi与基线AB的偏角然后转步骤5;反之,标记Pi为保留点,转步骤6。

步骤5:判断偏角αi和阈值Δα的大小,若αi≤Δα,则标记Pi为删除点,并令i=i+1,转步骤3;反之,标记Pi为保留点,转步骤6。

步骤6:令Pi为新基准点B,Pi-1为新基准点A,AB连成新基线,并令i=i+1,转步骤3。

步骤7:将所有保留的数据点作为精简后的数据输出。

2 实例验证

为验证本文算法的高效性,以齿轮STL模型切片轮廓为例(如图4),将本文方法与文献[10]传统的角度弦高联合法进行精简测试对比。算法在Windows 10环境下利用Matlab进行开发,实验在2.4GHz的CPU、8GB内存的PC机上运行。

图4 齿轮模型切片轮廓

2.1 精简效果对比

原始齿轮切片轮廓每层数据点共有3163个点,在相同角度阈值Δα和弦高阈值Δh的参数条件下,本文方法和文献[10]法的精简效果如图5所示。从图5结果可以看出,这两种方法都能够在齿根的高曲率轮廓处保留较多的特征点,但是文献[10]法在低曲率的齿轮渐开线轮廓处保留的数据点较少,尤其是靠近齿顶处的曲线轮廓与原始渐开线形状误差较大。本文方法不仅能够在高曲率变化处保留较多的数据点,而且在低曲率片段中也能保留较多细节的特征点。可见本文方法能够利用较少的离散点较好地表示复杂原有轮廓信息,总体结果疏密有秩,精简效果较好。

图5 不同方法数据精简效果对比

2.2 精简指标分析

将本文方法与文献[10]法的精简结果从精简率、精简误差、耗时三个方面的指标进行评价,其结果如表1所示。表1的技术指标表明了文献[10]法由于精简率较高为93.5%,从而导致精简误差较大,其精简平均误差达到了0.0378mm,而本文方法虽然精简率有所下降为90.7%,但精简误差降低为0.0237mm。另外,本文方法在算法耗时方面比文献[10]法具有更大的优势,算法执行时间提高超过了一个数量级,这是由于文献[10]法的基线要参考后面的待测点,因此需要反复计算待测点和冗余点到基线的弦高与角度,从而导致每个待测点的偏角和弦高需要多次计算,而本文算法是以前面已走过的路径点作为参照,因此没有累计误差,每个待测点的偏角和弦高只需计算一次,所用时间较少。

表1 数据精简指标对比

3 结论

本文采用偏角弦高的数据精简方法,有效地实现了3D打印切片轮廓的数据精简。该方法以偏角与弦高为依据,防止单靠某一参数导致重要特征信息的丢失,并以粗筛选和精筛选作为测量点是否需要精简的判断流程,避免了不必要的计算。实例测试结果表明,该方法不仅能够在高曲率变化处保留较多的数据点,而且在低曲率片段中也能筛选出较高特征的数据点,实现轮廓数据按曲率合理分布,算法执行效率高,精简效果较好。