陳廷豪,吳 婷,潘成鋼,吳 建,包 涵,李嘉杰
(嘉興學院 機電工程學院,浙江 嘉興314001)
3D打印技術,又稱為“增材制造”,是以數字模型為基礎,通過逐層累加材料制造零件的一種技術。3D打印技術的內容涵蓋了產品生命周期前端的“快速原型”和全生命周期的“快速制造”相關的所有打印工藝、技術、設備類別和應用。它的顯著優點是無需傳統刀具和模具,能夠成型任意復雜的零件,可以有效簡化生產工序,縮短制造周期[1-2]。因此,3D打印技術具有高的加工柔性與快的市場響應速度,能夠廣泛應用于醫學,機械工程,工業設計等領域[3]。
在3D打印的過程中,首先要對模型進行分層切片處理,獲取模型各層切片的輪廓數據。這些切片輪廓是由一系列微小線段所組成,模型的精度越高,切片輪廓包含的微小線段和非特征冗余點就越多。為適應3D打印的實際需要,必須對切片輪廓數據進行精簡處理。因為密集數據點不僅會降低計算機運行速率,占用較大的內存,還會降低打印時噴頭運作的流暢度,影響成型的效率和質量。
現國內外學者對數據精簡研究已有一定的成果。Teh等[4]提出使用離散曲率進行數據精簡的方法,通過把某點的近似曲率作為判據,與設定的閾值進行比較,刪除離散曲率較小的點,這一方法在曲率變化較小處容易因為刪除某些特征點導致后續的累積過程出現錯誤。楊峰等[5]提出使用累積曲率的方式進行數據精簡,當判斷某個數據點是否為冗余點需要被去除時,將其曲率累加到累積曲率中,用累積曲率和曲率閾值作比較,直到累積曲率值滿足被去除的條件時,累積曲率清零,這種方法能夠避免累積誤差導致的簡化錯誤,但累計曲率閾值的設定較為困難。Huang等[6]人利用二值圖像對數據點進行采樣,然后采用基于Lloyd聚類的精簡算法,將數據點進行聚類分割后,通過計算擬合誤差來獲得合理的聚類數據,但由于該算法需要反復迭代,運行效率較低。吳鳳和等[7]提出曲率弦高法,利用曲率比的方式改進單一的弦高參數,使得弦高閾值在判斷過程中進行變化,從而得到比弦高法更好的精簡效果。方源敏等[8]提出了改進角度偏差法,該方法通過計算各點的偏角值,然后根據平均偏角值使用插值的方式進行精簡。洪軍等[9]提出角度弦高聯合準則,以內角與弦高兩個參數為判據進行數據精簡。李新等[10]改進了角度弦高聯合準則,對連續判斷區域中各個點的弦高與內角進行計算,取其中最大的角度與弦高進行閾值判斷,以防止累計誤差的產生。
本文通過分析切片輪廓上冗余點的分布情況,采用基于偏角弦高的數據精簡方法對切片數據進行特征保留。該方法以已保留的路徑點作為參照,首先對待測點進行弦高的粗判斷,然后再通過計算偏角的大小來確定需要保留的特征點,從而高效地精簡切片數據點。
傳統弦高角度法:對于切片輪廓路徑上有序排列的數據點,相鄰兩個數據點構成一個路徑矢量,待測點相對于上一個路徑矢量的偏角反映了相鄰數據點的方向變化程度,弦高反映相鄰數據點的偏離距離。如圖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:將所有保留的數據點作為精簡后的數據輸出。
為驗證本文算法的高效性,以齒輪STL模型切片輪廓為例(如圖4),將本文方法與文獻[10]傳統的角度弦高聯合法進行精簡測試對比。算法在Windows 10環境下利用Matlab進行開發,實驗在2.4GHz的CPU、8GB內存的PC機上運行。

圖4 齒輪模型切片輪廓
原始齒輪切片輪廓每層數據點共有3163個點,在相同角度閾值Δα和弦高閾值Δh的參數條件下,本文方法和文獻[10]法的精簡效果如圖5所示。從圖5結果可以看出,這兩種方法都能夠在齒根的高曲率輪廓處保留較多的特征點,但是文獻[10]法在低曲率的齒輪漸開線輪廓處保留的數據點較少,尤其是靠近齒頂處的曲線輪廓與原始漸開線形狀誤差較大。本文方法不僅能夠在高曲率變化處保留較多的數據點,而且在低曲率片段中也能保留較多細節的特征點。可見本文方法能夠利用較少的離散點較好地表示復雜原有輪廓信息,總體結果疏密有秩,精簡效果較好。

圖5 不同方法數據精簡效果對比
將本文方法與文獻[10]法的精簡結果從精簡率、精簡誤差、耗時三個方面的指標進行評價,其結果如表1所示。表1的技術指標表明了文獻[10]法由于精簡率較高為93.5%,從而導致精簡誤差較大,其精簡平均誤差達到了0.0378mm,而本文方法雖然精簡率有所下降為90.7%,但精簡誤差降低為0.0237mm。另外,本文方法在算法耗時方面比文獻[10]法具有更大的優勢,算法執行時間提高超過了一個數量級,這是由于文獻[10]法的基線要參考后面的待測點,因此需要反復計算待測點和冗余點到基線的弦高與角度,從而導致每個待測點的偏角和弦高需要多次計算,而本文算法是以前面已走過的路徑點作為參照,因此沒有累計誤差,每個待測點的偏角和弦高只需計算一次,所用時間較少。

表1 數據精簡指標對比
本文采用偏角弦高的數據精簡方法,有效地實現了3D打印切片輪廓的數據精簡。該方法以偏角與弦高為依據,防止單靠某一參數導致重要特征信息的丟失,并以粗篩選和精篩選作為測量點是否需要精簡的判斷流程,避免了不必要的計算。實例測試結果表明,該方法不僅能夠在高曲率變化處保留較多的數據點,而且在低曲率片段中也能篩選出較高特征的數據點,實現輪廓數據按曲率合理分布,算法執行效率高,精簡效果較好。