本發(fā)明涉及增材制造領(lǐng)域,具體是一種基于小波變換的STL網(wǎng)格模型切片數(shù)據(jù)自適應(yīng)壓縮方法。
背景技術(shù):
隨著增材制造技術(shù)的不斷發(fā)展,3D打印技術(shù)成為了前沿性、先導(dǎo)性的新興技術(shù),并且對(duì)產(chǎn)品設(shè)計(jì)開發(fā)、小批量個(gè)性化定制、模型復(fù)雜的產(chǎn)品更為適用。在所有的增材制造工藝中,無論是通過CAD造型軟件正常造型還是通過逆向工程技術(shù)生成零件的網(wǎng)格模型,都必須經(jīng)過分層切片處理才能將文件數(shù)據(jù)輸入到成型設(shè)備中。所以,分層切片數(shù)據(jù)的精度對(duì)3D打印產(chǎn)品的影響較大。
立體光刻(Stereo Lithographic,STL)數(shù)據(jù)格式由3 Dsystems公司發(fā)明,在逆向工程中得到了普遍的應(yīng)用。因?yàn)槠涓袷胶唵巍?shù)據(jù)處理方便,所以很快被廣泛應(yīng)用,目前大多數(shù)計(jì)算機(jī)輔助設(shè)計(jì)系統(tǒng)都STL文件的接口。STL文件是在計(jì)算機(jī)圖形應(yīng)用系統(tǒng)中,勇于表示三角網(wǎng)格的一種文件格式。STL文件是基于有限元網(wǎng)格劃分的原理,采用三角網(wǎng)格來擬合三維模型的外表面,其可以描述所有型體復(fù)雜的三維模型,模型的精度取決于三角面片的數(shù)量,并且通過STL文件可以實(shí)現(xiàn)CAD系統(tǒng)與快速成型系統(tǒng)的數(shù)據(jù)交換。STL文件中記錄了模型中所有三角形面片的信息,即三角面片的法向量和三個(gè)頂點(diǎn)坐標(biāo),在該文件中,面片的信息是無序存儲(chǔ)的。STL文件有兩種格式:一種是ASCII明碼格式,另一種是二進(jìn)制格式。ASCII格式的STL文件逐行給出模型的三角化數(shù)據(jù),每一行的數(shù)據(jù)都由關(guān)鍵字標(biāo)明;二進(jìn)制格式則用固定的字節(jié)數(shù)來描述三角形面片的幾何信息。雖然二進(jìn)制格式的文件較小(通常是ASCII格式的1/5),但是ASCII格式的文件信息表達(dá)直觀,便于讀寫和修改,所以在工程應(yīng)用中,多采用ASCII明碼格式來讀取數(shù)據(jù)。
雖然很多學(xué)者對(duì)切片的方法做了很多的研究,但沒有有從STL網(wǎng)格模型切片后二維平面數(shù)據(jù)壓縮精簡入手進(jìn)行研究,也很少考慮冗余數(shù)據(jù)對(duì)切片的精度和效率的影響。文章針對(duì)STL文件固有的一些缺陷,提出了一種基于小波變換的切片數(shù)據(jù)自適應(yīng)壓縮方法。該方法通過設(shè)定切片的厚度和方向,對(duì)STL模型進(jìn)行等厚分層,求取切平面與同一平面內(nèi)一系列邊的交點(diǎn),通過小波變換對(duì)交點(diǎn)進(jìn)行優(yōu)化壓縮,最大限度的保留特征信息,并刪除冗余點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
:
為了解決由于STL格式原因使得切片精度降低及切片數(shù)據(jù)繁瑣的問題,本發(fā)明提供了一種基于小波變換的STL網(wǎng)格模型切片數(shù)據(jù)自適應(yīng)壓縮方法,通過切片平面對(duì)三角形網(wǎng)格進(jìn)行切片,求得該層的切片交點(diǎn)數(shù)據(jù),利用小波變換可以剔除由于數(shù)據(jù)格式原因帶來的錯(cuò)誤數(shù)據(jù)并使切片后的模型更加的光滑。
為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種基于小波變換的STL網(wǎng)格模型切片數(shù)據(jù)自適應(yīng)壓縮方法,包括以下步驟:
步驟1、讀取ASCII格式的STL網(wǎng)格模型,提取出STL網(wǎng)格模型中三角形的點(diǎn)、邊和面信息,并建立拓?fù)潢P(guān)系;
步驟2、根據(jù)讀取的STL網(wǎng)格模型大小及所需要的切片的位置,確定STL網(wǎng)格模型中每一層的切片厚度;
步驟3、求取切片與STL網(wǎng)格模型的一層交點(diǎn)坐標(biāo),并利用小波變換對(duì)切片后的數(shù)據(jù)進(jìn)行自適應(yīng)性壓縮和優(yōu)化;
步驟4、切完一層后進(jìn)入下一層進(jìn)行切片,直至遍歷所有的切片片段,切完后生成輪廓環(huán)。
作為本發(fā)明進(jìn)一步的方案:步驟1中,拓?fù)潢P(guān)系的點(diǎn)、邊和面的數(shù)據(jù)結(jié)構(gòu)組成分別為:點(diǎn)數(shù)據(jù)結(jié)構(gòu)包括點(diǎn)坐標(biāo)和所述點(diǎn)鄰接的面的索引值,面數(shù)據(jù)結(jié)構(gòu)包括鄰接點(diǎn)的索引值和鄰接面的索引值,邊數(shù)據(jù)結(jié)構(gòu)包括邊的索引值、邊的鄰接面索引值和兩個(gè)鄰接點(diǎn)的索引值。
作為本發(fā)明進(jìn)一步的方案:步驟2中,所述確定STL網(wǎng)格模型大小及所需要的切片的位置的確定步驟為:
①根據(jù)所需要的模型精度得到切片總數(shù)n、切片厚度t和所有的切平面;
②讀取STL網(wǎng)格模型的一個(gè)三角形面片,根據(jù)三角形各點(diǎn)z坐標(biāo)的最大值、最小值及切片精度反求與三角形相交的K個(gè)切平面,1≤j≤n。
作為本發(fā)明進(jìn)一步的方案:步驟3中,求取切片與STL網(wǎng)格模型的一層交點(diǎn)坐標(biāo),并利用小波變換對(duì)切片后的數(shù)據(jù)進(jìn)行自適應(yīng)性壓縮和優(yōu)化的具體步驟為:
獲取切片平面與三角形面片相交的切片片段:根據(jù)STL網(wǎng)格模型中三角形的點(diǎn)、邊和面信息,根據(jù)相應(yīng)的直線方程分別求出相對(duì)應(yīng)的交點(diǎn)的坐標(biāo)值,
將相交求得的交點(diǎn)的數(shù)據(jù)進(jìn)行小波分解,根據(jù)交點(diǎn)數(shù)據(jù)量及要求的精度確定分解的層數(shù),所用連續(xù)小波函數(shù)為:
;a為尺度因子,表示與頻率相關(guān)的伸縮,b為時(shí)間平移因子;為平方可積函數(shù),f(t)為任意函數(shù);
③對(duì)重構(gòu)后的數(shù)據(jù)信號(hào)完成多尺度的分解提取出各層的低頻和高頻系數(shù);所應(yīng)用的多小波函數(shù)為:
,其中
所用的多尺度函數(shù)為:
;
通過以上操作后完成了對(duì)一層切片數(shù)據(jù)的壓縮并剔除了錯(cuò)誤數(shù)據(jù)點(diǎn),并形成二維多變形。
作為本發(fā)明進(jìn)一步的方案:步驟4的具體步驟為:
(a)按層存儲(chǔ)切片平面與三角形面片的所有相交的切片片段;
(b)遍歷所有切片片段的指示信息,獲取二維多變形的初始連接點(diǎn),并使每一層形成一個(gè)二維多邊形。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
1、本發(fā)明利用了小波變換具有自適應(yīng)性的優(yōu)點(diǎn),當(dāng)數(shù)據(jù)變化時(shí),對(duì)應(yīng)的小波峰值系數(shù)也會(huì)發(fā)生變化,所以小波系數(shù)的峰值能夠自適應(yīng)性地探測(cè)數(shù)據(jù)的特征點(diǎn);
2、本發(fā)明能夠克服由于STL格式的網(wǎng)格模型自身格式缺陷的問題,通過對(duì)交點(diǎn)數(shù)據(jù)的小波分解,完成小波重構(gòu)并得到低頻和高頻的系數(shù),通過對(duì)系數(shù)分析輸入信號(hào),并進(jìn)行定量化的分析結(jié)果,完成對(duì)錯(cuò)誤數(shù)據(jù)的剔除和點(diǎn)云稀疏性的調(diào)整。
附圖說明
圖1是基于小波變換的STL網(wǎng)格模型切片數(shù)據(jù)自適應(yīng)壓縮方法的流程示意圖。
圖2為三角面片切片時(shí)交點(diǎn)示意圖。
圖3為采用小波五層分解后的各層信號(hào)圖。
圖4為小波重構(gòu)后信號(hào)圖。
圖5為五種尺度的低頻系數(shù)重構(gòu)圖。
圖6為五種尺度的高頻系數(shù)重構(gòu)圖。
圖7為原始信號(hào)與壓縮信號(hào)對(duì)比圖。
圖8為某一層截面的初始切片數(shù)據(jù)圖。
圖9為剔除錯(cuò)誤數(shù)據(jù)點(diǎn)及優(yōu)化后的截面圖。
圖10為葉片完成切片后的截面圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例1
本發(fā)明實(shí)施例中,如圖1所示,一種基于小波變換的STL網(wǎng)格模型切片數(shù)據(jù)自適應(yīng)壓縮方法,對(duì)某發(fā)動(dòng)機(jī)的葉片進(jìn)行切片,包括以下步驟:
步驟1,輸入葉片的ASCII格式的STL網(wǎng)格模型,提取出三角形網(wǎng)格模型中三角形的點(diǎn)、邊和面信息,并建立拓?fù)潢P(guān)系;
拓?fù)潢P(guān)系的點(diǎn)、邊和面的數(shù)據(jù)結(jié)構(gòu)為
class Point //頂點(diǎn)類
{
publick:
vector<double> vertice ; //頂點(diǎn)坐標(biāo)
std::vector<int> faceIndexList; // 與該頂點(diǎn)鄰接的面的索引值
};
class Face // 三角面類
{
public:
int index[3];//鄰點(diǎn)的索引值
int touching[3];//鄰接面的索引值
};
class Edge //邊類
{
Public:
int Edgeindex; //該邊的索引
int AdjacentFace[2];//該邊的鄰接面索引,若為邊界邊,某個(gè)鄰接面索引為-1
int AdjacentVertice[2];//兩個(gè)鄰接點(diǎn)的索引值
};
步驟2,根據(jù)讀取的網(wǎng)格模型大小及所需要的切片的位置,確定每一層的切片厚度;
①根據(jù)所需要的模型精度得到切片總數(shù)n、切片厚度t和所有的切平面;
②讀取STL模型的一個(gè)三角形面片,根據(jù)三角形各點(diǎn)z坐標(biāo)的最大值、最小值及切片精度反求與三角形相交的K個(gè)切平面,1≤j≤n。
步驟3,求取切片與三角網(wǎng)格的一層交點(diǎn)坐標(biāo),并利用小波變換對(duì)切片后的數(shù)據(jù)進(jìn)行自適應(yīng)性壓縮和優(yōu)化;
獲取切片平面與三角形面片相交的切片片段:
(a)切片片段的方向D由分層方向Z和三角形的法矢積確定,D=Z×N;切片片段頂點(diǎn)依次順序連接形成二維多邊形,即為切片平面與三角網(wǎng)格模型在空間相交后形成的一條多邊形輪廓;
(b)根據(jù)相應(yīng)的直線方程分別求出相對(duì)應(yīng)的交點(diǎn)的坐標(biāo)值,如交點(diǎn)為,設(shè)點(diǎn)的坐標(biāo)為,則相應(yīng)的直線方程為
其中為切片的高度,三角面片求交點(diǎn)的示意圖如圖2所示。
(c)遍歷所有的鄰接面,求出同一切平面上的交點(diǎn)。
將相交求得的交點(diǎn)的數(shù)據(jù)進(jìn)行小波分解,可以根據(jù)交點(diǎn)數(shù)據(jù)量及要求的精度確定分解的層數(shù)為5層;
(a)對(duì)輸入的數(shù)據(jù)點(diǎn)s進(jìn)行前處理,獲得矢量輸入信號(hào)sc;
(b)對(duì)矢量輸入信號(hào)sc進(jìn)行m層分解,獲得低頻信號(hào)和m個(gè)小波高頻信號(hào),所用連續(xù)小波函數(shù)為:
5層分解后各層的信號(hào)如圖3所示;
③對(duì)重構(gòu)后的數(shù)據(jù)信號(hào)完成多尺度的分解提取出各層的低頻和高頻系數(shù);
采用標(biāo)準(zhǔn)基函數(shù)對(duì)待輸入的交點(diǎn)數(shù)據(jù)s進(jìn)行m層小波分解,獲得個(gè)標(biāo)準(zhǔn)基信號(hào),所述的標(biāo)準(zhǔn)基函數(shù)采用與小波基函數(shù)相同階次消失矩的dbn小波基函數(shù),所應(yīng)用的多小波函數(shù)為:
,其中
所用的多尺度函數(shù)為:
小波重構(gòu)后的輸入信號(hào)如圖4所示,五種尺度下低頻和高頻的小波系數(shù)如圖5、圖6所示;
通過以上操作后完成了對(duì)一層切片數(shù)據(jù)的壓縮并剔除了錯(cuò)誤數(shù)據(jù)點(diǎn),并形成二維多變形;
(a)為了保證多小波分解過程的能量守恒,采用標(biāo)準(zhǔn)基小波包變換能量對(duì)多小波變換能量進(jìn)行類比與標(biāo)定,計(jì)算個(gè)分解信號(hào)的標(biāo)準(zhǔn)化系數(shù);
(b)根據(jù)標(biāo)準(zhǔn)化系數(shù)對(duì)個(gè)分解信號(hào)進(jìn)行標(biāo)準(zhǔn)化處理,得到標(biāo)準(zhǔn)化小波變換的定量分析結(jié)果,根據(jù)分析結(jié)果剔除錯(cuò)誤的數(shù)據(jù),并使得幾何特性更加優(yōu)化。原始信號(hào)及壓縮后的對(duì)比圖如圖7所示,某一層截面的初始切片數(shù)據(jù)圖如圖8所示,通過剔除錯(cuò)誤數(shù)據(jù)點(diǎn)及優(yōu)化后的截面圖如圖9所示。
步驟4、切完一層后進(jìn)入下一層進(jìn)行切片,直至遍歷所有的切片片段,切完后生成輪廓環(huán);
(a)按層存儲(chǔ)切片平面與三角形面片的所有相交的切片片段;
(b)遍歷所有切片片段的指示信息,獲取二維多變形的初始連接點(diǎn),并使每一層形成一個(gè)二維多邊形,最后葉片完成切片后的截面圖如圖10所示。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本發(fā)明。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。
此外,應(yīng)當(dāng)理解,雖然本說明書按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個(gè)整體,各實(shí)施例中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。