基于多分辨分析的小波光順方法
【專利摘要】本發(fā)明公開了一種基于多分辨分析的小波光順方法,主要包括“數(shù)據(jù)點的讀入與處理”、“二進小波光順”、“任意分辨率小波光順”三個步驟,實現(xiàn)了對具有任意控制頂點曲線的小波光順,并可根據(jù)曲線控制頂點數(shù)自動判斷其小波尺度,以選擇最適合的計算步驟。本發(fā)明在曲線光順的效率和適應性方面達到了較好的平衡。本發(fā)明的推導與計算遵循多分辨分析理論,不存在插值與擬合等近似操作,能夠實現(xiàn)光順曲線的精確重構,符合小波分析的精髓。
【專利說明】基于多分辨分析的小波光順方法
【技術領域】
[0001]本發(fā)明涉及一種基于多分辨分析的小波光順方法,屬于逆向工程領域。
【背景技術】
[0002]受到制造精度和測量精度的限制,零件的數(shù)字化過程會產生一定數(shù)量的噪聲和誤差,這對曲線曲面的逆向精度及其光順性會產生一定的不良影響。作為逆向工程中必不可少的關鍵一環(huán),曲線曲面光順技術可以盡可能地消除這些影響,從而提高逆向工程的質量。傳統(tǒng)光順算法雖然思路簡單清楚,但是對于測量數(shù)據(jù)較大的情況,計算效率極低。逆向工程領域期待一種能夠盡可能提取曲線曲面本質特性的光順算法。多分辨分析技術的出現(xiàn),將這種期待變?yōu)榱丝赡堋?br>
[0003]多分辨分析作為一種能刻畫數(shù)據(jù)內部相關性的新時頻分析數(shù)學工具,同時具有良好的時域局部性和頻域局部性。隨著該技術的日漸成熟,多分辨分析開始被應用于計算機圖形學。1994年,Quak等應用多分辨分析工具,針對由(j為二進尺度)個控制頂點確定的曲線,首次提出了基于閉區(qū)間B樣條小波的曲線分解重構算法。針對多分辨光順這一新領域,國內外許多學者對此展開了研究。Ceruti等基于二進小波光順算法,構造了快速的多細節(jié)層次(Levels ofDetail, L0D)濾波器組,實現(xiàn)了 A級曲線的小波光順。潘洋宇基于經典多分辨分析理論,結合第二代提升格小波,通過分割、預測、更新等步驟所組成的提升步,推導了準均勻三次B樣條曲線的提升格小波表示方法,實現(xiàn)了準均勻三次B樣條曲線的光順。Hussein等基于提升小波框架,將其推廣到自由曲面的表示,并實現(xiàn)了不規(guī)則復雜自由曲面的過濾與光順。
[0004]上述研究雖然實現(xiàn)了曲線曲面的小波光順,但為了降低小波構造的難度,在二進尺度的要求下,只能對控制頂點數(shù)滿足一定要求(24(r-l) Ir為階數(shù))的曲線曲面進行光順,事實上,在逆向工程中,實際測量的點的數(shù)量是任意的,對應的控制頂點數(shù)也是任意的,此時上述算法將不再適用。通常把上述算法稱為二進小波光順。
[0005]對于曲線曲面控制頂點數(shù)任意的情況,潘洋宇等通過節(jié)點矢量的改變來解決該問題,其主要思路為增加控制頂點的數(shù)量以滿足二進小波光順要求。Wang等根據(jù)給定的權重公式,通過對節(jié)點矢量的去除,重構了正交非均勻樣條小波,從而實現(xiàn)了 NURBS曲線曲面的小波光順與精簡。ParuSadeghi等兩位學者針對給定的節(jié)點矢量,結合離散范數(shù)概念,采用最小二乘擬合算法,構造了一種雙正交非均勻B樣條小波,實現(xiàn)了任意自由曲線的多分辨光順,該算法由于避免了內積運算,計算效率得到了很大的提高。但是上述算法都存在近似計算,無法對曲線曲面進行精確重構。通常把上述對控制頂點數(shù)量沒有具體要求的算法稱為任意分辨率小波光順。
【發(fā)明內容】
[0006]針對上述問題, 申請人:在二進小波光順算法研究的基礎上,提出一種基于多分辨分析的小波光順方法,實現(xiàn)對具有任意控制頂點曲線曲面的小波光順;同時利用C++語言和C++數(shù)值分析類庫,提出小波光順的軟件實現(xiàn)方法,根據(jù)曲線控制頂點數(shù)自動判斷其小波尺度,以選擇最適合的計算模塊,在曲線光順的效率和適應性方面達到較好的平衡。
[0007]本發(fā)明的技術方案如下:
[0008]一種基于多分辨分析的小波光順方法,包括以下步驟:
[0009](一 )數(shù)據(jù)點的讀入與處理:
[0010]讀入原始數(shù)據(jù)點,并定義為矩陣變量;數(shù)據(jù)格式為每行三個數(shù)據(jù),分別表示一個點的x、y、z坐標;讀入原始數(shù)據(jù)點后,將型值點反算成控制頂點,并計算控制頂點的數(shù)量s ;由于本發(fā)明研究的是三次B樣條小波,對應的階數(shù)r = 4,則根據(jù)m = s_3計算對應的有理尺度m ;按式⑴計算對應的二進尺度j:
[0011]j = lg(m)/lg2 (I)
[0012]如果j為整數(shù),則符合二進小波光順的要求,執(zhí)行步驟(二);如果j不為整數(shù),則不符合二進小波光順要求,執(zhí)行步驟(三);
[0013](二)二進小波光順:
[0014]根據(jù)式(I)確定的二進尺度j,通過重構矩陣初始化公式(2)、(3)計算光順過程中用到的重構矩陣P」和Qj ;
[0015]
【權利要求】
1.一種基于多分辨分析的小波光順方法,其特征在于包括以下步驟: (一)數(shù)據(jù)點的讀入與處理: 讀入原始數(shù)據(jù)點,并定義為矩陣變量;數(shù)據(jù)格式為每行三個數(shù)據(jù),分別表示一個點的x、y、z坐標;讀入原始數(shù)據(jù)點后,將型值點反算成控制頂點,并計算控制頂點的數(shù)量s ;由于本發(fā)明研究的是三次B樣條小波,對應的階數(shù)r = 4,則根據(jù)m = s_3計算對應的有理尺度m ;按式⑴計算對應的二進尺度j:j = lg(m)/lg2 (I) 如果j為整數(shù),則符合二進小波光順的要求,執(zhí)行步驟(二);如果j不為整數(shù),則不符合二進小波光順要求,執(zhí)行步驟(三); (二)二進小波光順: 根據(jù)式(I)確定的二進尺度j,通過重構矩陣初始化公式(2)、(3)計算光順過程中用
2.根據(jù)權利要求1所述基于多分辨分析的小波光順方法,其特征在于:所述步驟(二)的軟件實現(xiàn)方法為,通過編制如下二進小波光順函數(shù)實現(xiàn):
(1)doubleCubicBSpline(double t,int m, int k); 該函數(shù)定義一條準均勻三次B樣條基函數(shù)鐘(mt-k) 11 e [0,I],其中m為伸縮尺度,對于二進小波光順而言,m = 2J ;k為平移尺度,其含義為B樣條空間里的第k個樣條,k E [I, 2J+3];
(2)voidInitPj(matrix&Pj, int j); 該函數(shù)針對二進尺度j,計算相應的重構矩陣Pp并將結果保存于矩陣變量Pj中;
(3)voidInitQj(matrix&Qj, int j); 該函數(shù)針對二進尺度j,計算相應的重構矩陣%,并將結果保存于矩陣變量Qj中;
(4)doubleDyadicffavelet(double t,int m, int k); 該函數(shù)為準均勻三次B樣條函數(shù)f (mt-k)對應的二進小波基函數(shù)Ψ (t, m, k) |te [0,I],其中m為伸縮尺度,對于二進小波光順而言,m = 2J,k為平移尺度,其含義為小波樣條空間里的第k個樣條小波,k e [I, 2jM];
(5)void DffFairing(matrix&Cj, int j, matrix&Cjj, matrix&Djj); 該函數(shù)為二進小波光順函數(shù),可以根據(jù)原始曲線的控制頂點Cj及對應的尺度j,計算光順后曲線的控制頂點CV1以及對應的細節(jié)部分控制頂點Dy,并將結果保存到對應的矩陣變量 Cj j、Djj 中;
(6)voidDffRecon(matrix&Cj, int j, matrix&Cjj, matrix&Djj); 該函數(shù)為二進小波重構函數(shù),可以根據(jù)待重構曲線的控制頂點CV1以及相應的細節(jié)部分控制頂點Dy,重構原始曲線的控制頂點(V需要強調的是,此函數(shù)中的尺度j為待重構曲線的尺度。
3.根據(jù)權利要求1所述基于多分辨分析的小波光順方法,其特征在于:所述步驟(三)的軟件實現(xiàn)方法為,通過編制如下任意分辨率小波光順函數(shù)實現(xiàn):
(I)double CubicBSpline (double t,int m, int k); 該函數(shù)定義一條準均勻三次B樣條基函數(shù)# (mt-k) 11 e [0,I],其中m為伸縮尺度,k為平移尺度,其含義為B樣條空間里的第k個樣條,k e [I, m+3];
(2)doubleMultiBSplineBSpline (double t, vector&p); 該函數(shù)計算兩個樣條函數(shù)之間的乘積CubicBSpline (t, m, k) XCubicBSpline (t, η, I),向量變量 P 中,P [I] = m, P [2] = k, P [3] = η, p[4] = I。
(3)voidInnerProductBB (matrix&BnBm, int m, int η); 該函數(shù)計算內積矩陣BnBm= [<Φη|Φπ>],并將結果保存到矩陣變量BnBm中。積分區(qū)間為[O, I];
(4)voidInitQmn(matrix&Qmn, matrix&BnBm, int m, int η); 該函數(shù)根據(jù)給定的光順尺度m、η計算重構矩陣Qmn,并將結果保存于變量Qmn中;
(5)doubleBSplineffavelet(double t,int m, int k, matrix&Qmn); 該函數(shù)根據(jù)公式(8)計算B樣條小波基函數(shù),返回從尺度m向尺度η光順過程中,第k條小波對應t的函數(shù)值;
(6)double Multiffaveletffavelet(double t, vector&p, matrix&Qmn); 該函數(shù)計算兩個小波基函數(shù)之間的乘積,BSplineffavelet (t, m, k, Qmn) XBSplineffavelet (t, m, I, Qmn),向量變量 p 中,P [I] = P [3] = m, p[2] = k, p[4] = I ;
(7)double MultiffaveletBSpline(double t, vector&p, matrix&Qmn); 該函數(shù)計算小波基函數(shù)與B樣條基函數(shù)之間的乘積,BSplineffavelet (t, m, I, Qmn) XCubicBSpline (t, m, k),向量變量 p 中,P [I] = P [3] = m, p[2] = k, p[4] = I ;
(8)voidInnerProductffff(matrix&ffnffn, int m, int η); 該函數(shù)用來計算小波基函數(shù)的內積矩陣WnWn= [<ψη| ψη>],并將結果保存到矩陣變量Wnffn中。積分區(qū)間為[0,I];
(9)voidInnerProductffB(matrix&ffnBm, int m, int η); 該函數(shù)用來計算小波基函數(shù)與B樣條基函數(shù)之間的內積矩陣WnBm = [<Ψη| Φω>],并將結果保存到矩陣變量fcBm中。積分區(qū)間為[0,1];
(10)voidARffFairing(matrix&Cm, matrix&Cn, matrix&Dn, int m, int η); 該函數(shù)根據(jù)給定的尺度m和n,將原始曲線的控制頂點Cm分解成光順曲線的控制頂點Cn和細節(jié)部分的控制頂點Dn,并將結果保存到對應的矩陣變量Cn和Dn中;
(11)voidARffRecon(matrix&Cm, matrix&Cn, matrix&Dn int m, int n); 該函數(shù)根據(jù)給定的尺度m和n,將光順曲線的控制頂點Cn和細節(jié)部分的控制頂ADn,精確重構成原始曲線的控制頂點Cm,并將結果保存到矩陣變量Cm中。
【文檔編號】G06F17/50GK103984810SQ201410193964
【公開日】2014年8月13日 申請日期:2014年5月8日 優(yōu)先權日:2014年5月8日
【發(fā)明者】紀小剛, 薛杰, 楊艷, 李楠 申請人:江南大學