陳廷豪,吳 婷,潘成鋼,吳 建,包 涵,李嘉杰
(嘉興學(xué)院 機電工程學(xué)院,浙江 嘉興314001)
3D打印技術(shù),又稱為“增材制造”,是以數(shù)字模型為基礎(chǔ),通過逐層累加材料制造零件的一種技術(shù)。3D打印技術(shù)的內(nèi)容涵蓋了產(chǎn)品生命周期前端的“快速原型”和全生命周期的“快速制造”相關(guān)的所有打印工藝、技術(shù)、設(shè)備類別和應(yīng)用。它的顯著優(yōu)點是無需傳統(tǒng)刀具和模具,能夠成型任意復(fù)雜的零件,可以有效簡化生產(chǎn)工序,縮短制造周期[1-2]。因此,3D打印技術(shù)具有高的加工柔性與快的市場響應(yīng)速度,能夠廣泛應(yīng)用于醫(yī)學(xué),機械工程,工業(yè)設(shè)計等領(lǐng)域[3]。
在3D打印的過程中,首先要對模型進行分層切片處理,獲取模型各層切片的輪廓數(shù)據(jù)。這些切片輪廓是由一系列微小線段所組成,模型的精度越高,切片輪廓包含的微小線段和非特征冗余點就越多。為適應(yīng)3D打印的實際需要,必須對切片輪廓數(shù)據(jù)進行精簡處理。因為密集數(shù)據(jù)點不僅會降低計算機運行速率,占用較大的內(nèi)存,還會降低打印時噴頭運作的流暢度,影響成型的效率和質(zhì)量。
現(xiàn)國內(nèi)外學(xué)者對數(shù)據(jù)精簡研究已有一定的成果。Teh等[4]提出使用離散曲率進行數(shù)據(jù)精簡的方法,通過把某點的近似曲率作為判據(jù),與設(shè)定的閾值進行比較,刪除離散曲率較小的點,這一方法在曲率變化較小處容易因為刪除某些特征點導(dǎo)致后續(xù)的累積過程出現(xiàn)錯誤。楊峰等[5]提出使用累積曲率的方式進行數(shù)據(jù)精簡,當(dāng)判斷某個數(shù)據(jù)點是否為冗余點需要被去除時,將其曲率累加到累積曲率中,用累積曲率和曲率閾值作比較,直到累積曲率值滿足被去除的條件時,累積曲率清零,這種方法能夠避免累積誤差導(dǎo)致的簡化錯誤,但累計曲率閾值的設(shè)定較為困難。Huang等[6]人利用二值圖像對數(shù)據(jù)點進行采樣,然后采用基于Lloyd聚類的精簡算法,將數(shù)據(jù)點進行聚類分割后,通過計算擬合誤差來獲得合理的聚類數(shù)據(jù),但由于該算法需要反復(fù)迭代,運行效率較低。吳鳳和等[7]提出曲率弦高法,利用曲率比的方式改進單一的弦高參數(shù),使得弦高閾值在判斷過程中進行變化,從而得到比弦高法更好的精簡效果。方源敏等[8]提出了改進角度偏差法,該方法通過計算各點的偏角值,然后根據(jù)平均偏角值使用插值的方式進行精簡。洪軍等[9]提出角度弦高聯(lián)合準(zhǔn)則,以內(nèi)角與弦高兩個參數(shù)為判據(jù)進行數(shù)據(jù)精簡。李新等[10]改進了角度弦高聯(lián)合準(zhǔn)則,對連續(xù)判斷區(qū)域中各個點的弦高與內(nèi)角進行計算,取其中最大的角度與弦高進行閾值判斷,以防止累計誤差的產(chǎn)生。
本文通過分析切片輪廓上冗余點的分布情況,采用基于偏角弦高的數(shù)據(jù)精簡方法對切片數(shù)據(jù)進行特征保留。該方法以已保留的路徑點作為參照,首先對待測點進行弦高的粗判斷,然后再通過計算偏角的大小來確定需要保留的特征點,從而高效地精簡切片數(shù)據(jù)點。
傳統(tǒng)弦高角度法:對于切片輪廓路徑上有序排列的數(shù)據(jù)點,相鄰兩個數(shù)據(jù)點構(gòu)成一個路徑矢量,待測點相對于上一個路徑矢量的偏角反映了相鄰數(shù)據(jù)點的方向變化程度,弦高反映相鄰數(shù)據(jù)點的偏離距離。如圖1所示,當(dāng)數(shù)據(jù)點Pi相對于上一個路徑矢量A■→B的偏角或弦高較小時,Pi可以當(dāng)作冗余點去除。但單一使用偏角進行判斷容易忽略輪廓上線段較長的特征點,而單一使用弦高容易忽略細(xì)節(jié)特征點。因此,本文提出偏角弦高的數(shù)據(jù)精簡方法,具體方法如下:
圖1 本文方法精簡原理圖
以切片輪廓上待測點Pi的前兩個路徑數(shù)據(jù)點A、B為基準(zhǔn)點,AB為路徑基線,計算Pi到基線AB的偏角αi和弦高h(yuǎn)i,若αi和hi均小于閾值,則標(biāo)記Pi為冗余點,此時基線不變,繼續(xù)判斷后續(xù)點Pi+1到基線AB的偏角αi+1和弦高h(yuǎn)i+1,若αi+1和hi+1有一個大于閾值,則標(biāo)記Pi+1為保留點,并將Pi+1作為新基準(zhǔn)點B,Pi作為新基準(zhǔn)點A,然后判斷后續(xù)點Pi+2到新基線AB的偏角αi+2和弦高h(yuǎn)i+2,重復(fù)上述步驟直到切片輪廓上的所有數(shù)據(jù)點均處理完畢。可以看出,這種方法是以前面已保留的路徑點作為參照,因此沒有累計誤差,每個待測點的偏角和弦高只需計算一次。
由于本文算法需要使用偏角與弦高兩種數(shù)據(jù),若每次判斷都對這兩種數(shù)據(jù)進行運算,會較多地占用計算機的內(nèi)存,故引入篩選法進行算法改良,減少算法的運算量。
篩選法是使用粗判斷和精判斷來實現(xiàn)特征數(shù)據(jù)分離的方法。如圖2所示,先計算待測點Pi的弦高h(yuǎn)i,并對hi進行粗判斷,若hi>閾值Δh,則該點為保留點,不用再計算偏角;若弦高h(yuǎn)i≤閾值Δh,則再進入精判斷,計算偏角αi,若偏角αi≤閾值Δα,則該點為冗余點,反之,則作為特征點保留。整個篩選流程如圖2所示。
圖2 篩選流程示意圖
對于切片輪廓上連續(xù)的數(shù)據(jù)點集{P1,P1,…,Pn},整個精簡流程如圖3所示。具體執(zhí)行步驟如下:
圖3 本文算法流程圖
步驟1:首先輸入切片輪廓數(shù)據(jù),并設(shè)定弦高閾值Δh以及偏角閾值Δα。
步驟2:選取切片輪廓數(shù)據(jù)中的第一個數(shù)據(jù)點P1為基準(zhǔn)點A,第二個數(shù)據(jù)點P2為基準(zhǔn)點B,AB連成基線。
步驟3:將數(shù)據(jù)點Pi(i=3,4,…,n)作為判斷點,若i≥n,則說明輪廓線上的點已處理完畢,轉(zhuǎn)步驟7;否則,計算Pi到基線AB的弦高
步驟4:判斷hi和閾值Δh的大小,若hi≤Δh,進入精判斷,計算數(shù)據(jù)點Pi與基線AB的偏角然后轉(zhuǎn)步驟5;反之,標(biāo)記Pi為保留點,轉(zhuǎn)步驟6。
步驟5:判斷偏角αi和閾值Δα的大小,若αi≤Δα,則標(biāo)記Pi為刪除點,并令i=i+1,轉(zhuǎn)步驟3;反之,標(biāo)記Pi為保留點,轉(zhuǎn)步驟6。
步驟6:令Pi為新基準(zhǔn)點B,Pi-1為新基準(zhǔn)點A,AB連成新基線,并令i=i+1,轉(zhuǎn)步驟3。
步驟7:將所有保留的數(shù)據(jù)點作為精簡后的數(shù)據(jù)輸出。
為驗證本文算法的高效性,以齒輪STL模型切片輪廓為例(如圖4),將本文方法與文獻[10]傳統(tǒng)的角度弦高聯(lián)合法進行精簡測試對比。算法在Windows 10環(huán)境下利用Matlab進行開發(fā),實驗在2.4GHz的CPU、8GB內(nèi)存的PC機上運行。
圖4 齒輪模型切片輪廓
原始齒輪切片輪廓每層數(shù)據(jù)點共有3163個點,在相同角度閾值Δα和弦高閾值Δh的參數(shù)條件下,本文方法和文獻[10]法的精簡效果如圖5所示。從圖5結(jié)果可以看出,這兩種方法都能夠在齒根的高曲率輪廓處保留較多的特征點,但是文獻[10]法在低曲率的齒輪漸開線輪廓處保留的數(shù)據(jù)點較少,尤其是靠近齒頂處的曲線輪廓與原始漸開線形狀誤差較大。本文方法不僅能夠在高曲率變化處保留較多的數(shù)據(jù)點,而且在低曲率片段中也能保留較多細(xì)節(jié)的特征點。可見本文方法能夠利用較少的離散點較好地表示復(fù)雜原有輪廓信息,總體結(jié)果疏密有秩,精簡效果較好。
圖5 不同方法數(shù)據(jù)精簡效果對比
將本文方法與文獻[10]法的精簡結(jié)果從精簡率、精簡誤差、耗時三個方面的指標(biāo)進行評價,其結(jié)果如表1所示。表1的技術(shù)指標(biāo)表明了文獻[10]法由于精簡率較高為93.5%,從而導(dǎo)致精簡誤差較大,其精簡平均誤差達(dá)到了0.0378mm,而本文方法雖然精簡率有所下降為90.7%,但精簡誤差降低為0.0237mm。另外,本文方法在算法耗時方面比文獻[10]法具有更大的優(yōu)勢,算法執(zhí)行時間提高超過了一個數(shù)量級,這是由于文獻[10]法的基線要參考后面的待測點,因此需要反復(fù)計算待測點和冗余點到基線的弦高與角度,從而導(dǎo)致每個待測點的偏角和弦高需要多次計算,而本文算法是以前面已走過的路徑點作為參照,因此沒有累計誤差,每個待測點的偏角和弦高只需計算一次,所用時間較少。
表1 數(shù)據(jù)精簡指標(biāo)對比
本文采用偏角弦高的數(shù)據(jù)精簡方法,有效地實現(xiàn)了3D打印切片輪廓的數(shù)據(jù)精簡。該方法以偏角與弦高為依據(jù),防止單靠某一參數(shù)導(dǎo)致重要特征信息的丟失,并以粗篩選和精篩選作為測量點是否需要精簡的判斷流程,避免了不必要的計算。實例測試結(jié)果表明,該方法不僅能夠在高曲率變化處保留較多的數(shù)據(jù)點,而且在低曲率片段中也能篩選出較高特征的數(shù)據(jù)點,實現(xiàn)輪廓數(shù)據(jù)按曲率合理分布,算法執(zhí)行效率高,精簡效果較好。