本發(fā)明涉及利用細分曲面技術(shù)進行圖像矢量化的領(lǐng)域,尤其是指一種誤差可控的細分曲面圖像矢量化方法,目的是將光柵圖像轉(zhuǎn)換為滿足誤差要求的矢量表示。
背景技術(shù):
在計算機中,圖像有兩種典型的表示方式,一種是光柵圖像,也稱為位圖、點陣圖像,一種是矢量圖像,也稱矢量圖形、矢量表示。與光柵圖像相比,矢量圖形具有很多優(yōu)點,如存儲量小,易編輯,分辨率無關(guān)等。隨著顯示設(shè)備多樣化的發(fā)展和分辨率的提高,矢量圖像的優(yōu)勢日益凸顯。圖像矢量化的目的就是將點陣圖像轉(zhuǎn)換為矢量圖像。
近年來,學者們提出很多不同的圖像矢量化算法。各種不同的幾何圖元被提出用來表示矢量圖,包括直線、曲線、三角網(wǎng)格、參數(shù)曲面、細分曲面、擴散曲線等。然而,由于圖像具有復雜的特征曲線和豐富的顏色變化,現(xiàn)有的這些矢量表示方式都存在共同的難點,一個是如何用較少的圖元很好地表示出原圖像,一個是該矢量表示的可編輯性。細分曲面具有良好的光順性、適合表示任意復雜拓撲的物體、可編輯性強等諸多優(yōu)點。文獻[liaoz,hoppeh,forsythd,etal.asubdivision-basedrepresentationforvectorimageediting[j].ieeetransactionsonvisualizationandcomputergraphics,2012,18(11):1858-1867.]中,liao等人提出基于分段光滑細分曲面表示的矢量圖編輯算法。該矢量圖表示方式具有強大的可編輯能力,而且可以實現(xiàn)多分辨率,一定條件下,當幾何圖元的數(shù)目增加時,分辨率越高,反之越低。但該算法也存在一些問題,首先該方法通過分裂亞像素邊緣來建模圖像邊緣兩側(cè)顏色值的不連續(xù),但是采用的亞像素邊緣提取不夠準確,得到的兩側(cè)的顏色值不準確,而且其矢量化結(jié)果過度依賴于基網(wǎng)格,不能做到誤差可控。因此本發(fā)明對該框架的方法進行研究和改進,做到一定范圍內(nèi)的誤差控制。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服liao等人提出的細分曲面表示的圖像矢量化算法的不足,提出了一種誤差可控的細分曲面圖像矢量化方法,對矢量化結(jié)果做到一定范圍內(nèi)的誤差控制,滿足用戶的誤差要求。
為實現(xiàn)上述目的,本發(fā)明所提供的技術(shù)方案為:一種誤差可控的細分曲面圖像矢量化方法,包括以下步驟:
1)檢測圖像邊緣特征
圖像邊緣是最顯著的圖像特征,為了在構(gòu)造保持圖像特征的基網(wǎng)格,使用圖像邊緣線段檢測方法來提取圖像的一個像素寬的特征線,其步驟為:
①高斯濾波:用高斯核卷積圖像來抑制圖像噪聲和平滑圖像;
②計算梯度幅值和邊緣方向圖:首先使用梯度算子分別計算出像素點的水平和垂直梯度,然后算出圖像梯度幅值圖,與此同時,比較像素水平和垂直梯度的大小,確定該像素點的邊緣方向,如果水平梯度較大,則認為通過該像素是個垂直方向邊緣,反之亦然;
③提取錨點:錨點可以被認為是邊緣結(jié)束的地方,即在水平和垂直方向特征變化劇烈的像素點,這里選擇局部梯度極值作為錨點,通過比較像素點與其相鄰像素點的梯度值來判斷該像素點是否是錨點,對于一個水平方向的像素點,將其與左右相鄰的像素點比較,如果該像素點的梯度值比左右相鄰像素梯度值大指定閾值,則認為該像素點為錨點;
④連接錨點形成線段:根據(jù)梯度幅值和邊緣方向圖來連接相鄰錨點,每次從還未被檢測過的錨點開始,觀察穿過該錨點的邊緣方向,如果是水平邊緣,通過向左和向右行進開始連接過程,如果垂直邊緣通過錨點,通過向上和向下行進進行連接過程,在移動期間,僅考慮三個直接鄰居像素,并且選擇具有最大梯度值的那個鄰居像素,當遇到梯度幅值為0的像素點或遇到之前已經(jīng)檢測過的邊緣像素時,該次處理過程停止;
2)構(gòu)造基于圖像特征的初始網(wǎng)格,并在網(wǎng)格中標記圖像特征
在2d圖像平面上建立像素分辨率的初始三角網(wǎng)格m。首先建立初始網(wǎng)格頂點,圖像中的每個像素點對應(yīng)網(wǎng)格中的一個頂點,并在頂點的屬性中記錄像素點的顏色值;然后以行和列的方式連接網(wǎng)格頂點形成矩形網(wǎng)格,根據(jù)圖像特征線將網(wǎng)格中的每個矩形網(wǎng)格劃分成兩個三角網(wǎng)格。
圖像顏色不連續(xù)性與至少兩個具有非常不同顏色強度的相鄰像素相關(guān)聯(lián),單獨的圖像邊緣線不足以表示圖像顏色的不連續(xù)性。因此本發(fā)明提出使用雙特征線來表示圖像顏色的不連續(xù)。該策略首先使用等值線追蹤算法找出圖像特征兩側(cè)的距離一像素的平行線段,然后通過比較兩側(cè)的圖像梯度選擇平均梯度大的線段作為另一特征線,并對受影響的三角網(wǎng)格進行重新三角化。
接下來,對初始網(wǎng)格的邊和頂點的類型進行標記,從而在后續(xù)的網(wǎng)格簡化、細分等操作中對不同的類型進行不同的處理以保持重要的圖像特征。本發(fā)明將網(wǎng)格的邊分為三種類型:邊界邊、平滑邊、折痕邊,將網(wǎng)格的頂點分為四種類型:邊界點、平滑點、折痕點、角點。將圖像的雙特征線標記為折痕邊,將圖像矩陣邊界的邊標記為邊界邊,其他邊為平滑邊。對于網(wǎng)格頂點,如果頂點只與平滑邊緣連接,則該頂點標記為平滑點;折痕頂點與兩條鄰接的折痕邊連接;邊界點與兩條鄰接的邊界邊連接;圖像特征線端點、特征線交叉點標記為角點。為了固定矩形圖像邊界,四個角被標記為角點。
3)簡化初始網(wǎng)格,構(gòu)造保持圖像特征的基網(wǎng)格
采用qem簡化算法來簡化圖像初始網(wǎng)格,得到基網(wǎng)格mb,將網(wǎng)格的顏色屬性看成高度場來計算二次誤差代價,并且在簡化過程中使用細分曲線來擬合圖像特征線段來保持圖像特征;
在上一步驟中,根據(jù)圖像特征對網(wǎng)格的頂點和邊做了分類。為了保持圖像的形狀和特征,對于不同的特征采取不同的處理方式:①角點不允許被折疊;②邊界點只能與其鄰接的同邊界的兩個邊界點折疊;③折痕點只能與其鄰接的同折痕邊的兩個折痕點折疊;④滑點可以折疊到特征點。
此外,為了得到一個高質(zhì)量的保持圖像特征的基網(wǎng)格,改進qem算法的邊折疊代價,在邊折疊代價中加入特征邊形變代價qfeature、三角形正則性代價qre、面積代價qarea,并賦予它們相應(yīng)的權(quán)重,用qqem表示qem代價,則能夠把邊折疊
cost(v1,v2)=αqqem(v1,v2)+βqfeature(v1,v2)+γqre(v1,v2)+δqarea(v1,v2)(1)
式中,權(quán)重α,β,γ,δ由用戶指定,邊折疊順序按照cost(v1,v2)從小到大進行。需要特別說明的是,為了保證簡化后二維網(wǎng)格的質(zhì)量,除了在計算qem代價時,將網(wǎng)格m的顏色屬性看成高度場,在計算其他代價時,考慮的都只是二維圖像網(wǎng)格,不考慮顏色屬性。其中qem代價qqem、特征邊形變代價qfeature、三角形正則性代價qre、面積代價qarea的定義如下:
qem代價qqem:用二次誤差代價來計算邊的二次誤差代價,其衡量的是三維空間點到平面的距離,而網(wǎng)格m是個二維網(wǎng)格,所以將網(wǎng)格m的顏色屬性看成高度場,分別用rgb的值作為高度,則每條邊可計算出三個代價,將其和作為該邊的二次誤差代價qqem;
特征邊形變代價qfeature:qem代價沒有考慮到模型的尖銳特征,不能反映圖像的特征,定義qfeature為折疊前的特征點到其鄰接的兩個特征點連線的距離,用來衡量特征邊折疊結(jié)果與折疊點的偏離程度,qfeature值越小,表明偏離越小,如果折疊的邊是非特征邊,則qfeature值為0;
三角形正則性代價qre:在邊折疊代價中加入三角形正則性代價是為了減少狹長的三角面片的出現(xiàn),三角形的正則性被用來表示其接近正三角形的程度,能夠用r(t)=cos(∠a)+cos(∠b)+cos(∠c)來度量三角形t=δabc的正則性,令re(t)=3-2r(t),則0≤re(t)≤1,re(t)的值越小,表明該三角形的正則性越高,則定義三角面片集合t的正則性為:
re(t)=maxre(t)(2)
把qre定義為邊折疊前后,相關(guān)三角面片的正則性增量,則邊折疊
其中,
面積代價qarea:三角形正則性代價qre反映了三角面片的形狀,沒有反映面片大小,因此,在總代價中加入面積代價來約束面片的面積,把面積代價qarea定義為邊折疊后新頂點所有鄰接面的面積總和,則邊折疊
其中,area(t)表示三角形t的面積。
其中,網(wǎng)格簡化算法的主要步驟如下:
①設(shè)置邊折疊代價公式(1)中的各項權(quán)值;
②將網(wǎng)格m的顏色屬性看成高度場,計算網(wǎng)格所有邊的qem代價qqem;
③計算所有可折疊邊的折疊代價,根據(jù)折疊代價將其放入最小堆中,根據(jù)公式(1)計算出每條邊對應(yīng)的兩條半邊的折疊代價,則邊的折疊代價取兩個半邊代價的小值,并記錄折疊方向;
④從堆中取出最小折疊代價的邊,判斷其折疊后相關(guān)面是否會反生翻轉(zhuǎn),若會,則給該邊的代價加一個懲罰值,更新其在堆中的位置;若不會反生翻轉(zhuǎn),則判斷該邊是否是特征邊,若是特征邊,擬合調(diào)整特征點的位置并判斷其折疊后擬合誤差是否符合要求,若不符合,則不折疊該邊,將其從堆中刪除;否則就完成該邊的折疊操作,重新計算相關(guān)邊的折疊代價并更新它們在堆中的位置;
⑤若達到簡化的要求或最小堆為空,則轉(zhuǎn)到⑥,否則轉(zhuǎn)到④;
⑥刪除網(wǎng)格中的獨立頂點,更新網(wǎng)格,輸出基網(wǎng)格。
雖然在網(wǎng)格簡化過程中考慮了面片正則性、面積等因素,但是仍不能保證能得到一個高質(zhì)量基網(wǎng)格,因此使用最簡單的laplacian算子對網(wǎng)格進行幾何優(yōu)化:
其中n(v)和|n(v)|分別表示頂點v的1鄰域的所有頂點集合和個數(shù)。網(wǎng)格中頂點的新位置由vnew=v+λδv迭代式給出,其中λ取值為0.3。
為了保持圖像的特征,對網(wǎng)格特征頂點進行特殊處理:首先,角點不進行移動,對于邊界頂點和特征點v,設(shè)(va,v)和(v,vb)為v所在的兩條特征邊,則v只根據(jù)va和vb的位置進行調(diào)整,即laplacian算子定義為:
需要說明的是,網(wǎng)格優(yōu)化能夠在網(wǎng)格簡化的過程中進行,也能夠在網(wǎng)格簡化結(jié)束后進行,如果網(wǎng)格優(yōu)化會造成面片翻轉(zhuǎn),則暫時不進行優(yōu)化。
4)誤差可控的loop細分曲面擬合求得控制網(wǎng)格
經(jīng)過網(wǎng)格的簡化和優(yōu)化得到反映圖像特征的基網(wǎng)格后,提出帶誤差控制的loop細分曲面擬合來對圖像顏色進行擬合,在計算控制網(wǎng)格的過程中進行誤差控制,用戶可以通過指定重構(gòu)圖像的誤差來獲得滿足需求的矢量圖像。該過程主要包括三個部分:控制網(wǎng)格的計算、誤差控制以及自適應(yīng)細分,具體如下:
4.1)控制網(wǎng)格的計算。
為了增加擬合目標的數(shù)據(jù)量,我們首先對基網(wǎng)格mb進行一次1-4細分得到網(wǎng)格
在網(wǎng)格簡化過程中已經(jīng)擬合了網(wǎng)格的特征頂點位置,為了計算方便,這里只擬合網(wǎng)格頂點的顏色。因此所要計算的控制網(wǎng)格mc和基網(wǎng)格mb具有相同的拓撲結(jié)構(gòu)。因此,對控制網(wǎng)格mc進行一次loop細分后獲得的網(wǎng)格
mr=ms(7)
設(shè)基網(wǎng)格mb和目標網(wǎng)格mc的頂點數(shù)分別為n和m,分別用mc、mr、
lm×msm×nmc=mr(8)
令zm×n=lm×msm×n,方程組(8)可以變換為:
zm×ntzm×nmc=zm×ntmr(9)
通過求解線性方程組(9)就可以得到控制網(wǎng)格mc。因為這里擬合的是網(wǎng)格頂點的顏色,所以mc和mr的大小分別為n×3和m×3,rgb三種顏色可以分開求解。
4.2)誤差控制。
將每個像素點的重構(gòu)誤差定義為重構(gòu)圖像與原圖像對應(yīng)像素點顏色值的歐式距離,而將整個圖像的重構(gòu)誤差e定義為所有像素點重構(gòu)誤差的均值,每個基網(wǎng)格面片的重構(gòu)誤差ef定義為該面片光柵化后所對應(yīng)的所有像素點重構(gòu)誤差的均值。
在上一步驟中,通過loop細分曲面擬合求得控制網(wǎng)格,使其對應(yīng)的細分曲面盡可能接近原圖像。但是控制網(wǎng)格的頂點數(shù)目依賴于網(wǎng)格簡化,如果簡化過度,使得控制網(wǎng)格頂點數(shù)目過少,自由度過大,就可能導致重構(gòu)圖像與原圖像在某些區(qū)域存在較大的重構(gòu)誤差,因此本發(fā)明通過對誤差較大的區(qū)域進行自適應(yīng)細分來控制圖像的重構(gòu)誤差,使得用戶可以得到指定誤差的重構(gòu)圖像。
對于重構(gòu)誤差的計算,首先根據(jù)帶尖銳特征的loop細分規(guī)則和極限規(guī)則估計控制網(wǎng)格的極限曲面,計算出極限曲面上每個像素點的顏色值,即光柵化矢量表示。然后根據(jù)每個像素點所在的基網(wǎng)格面片,計算基網(wǎng)格每個面片的重構(gòu)誤差ef。最后計算整個重構(gòu)圖像的誤差e。通過以上分析,本發(fā)明的誤差可控的控制網(wǎng)格的求取的主要流程如下:
①備份基網(wǎng)格mb,使用loop曲面擬合方法計算控制網(wǎng)格mc;
②根據(jù)細loop分規(guī)則和極限規(guī)則估計控制網(wǎng)格mc的極限曲面ms;
③對于原光柵圖像每個像素點的顏色值i(i),根據(jù)重心坐標計算出極限曲面ms上對應(yīng)像素點的顏色值i′(i),計算像素點誤差ei,并找到該像素點對應(yīng)的基網(wǎng)格面片。然后計算基網(wǎng)格mb每個面片內(nèi)所有像素點的平均誤差ef,最后計算整個圖像的平均重構(gòu)誤差e;
④如果平均重構(gòu)誤差e小于用戶指定的平均誤差閾值ε,則終止算法,輸出控制網(wǎng)格mc;否則找出基網(wǎng)格中mb前k個最大平均誤差的面片集合,并標記這些面片為需要進行自適應(yīng)細分;其中k≥1由用戶指定,一般來說,k越大,平均誤差下降越快。
⑤對被標記的基網(wǎng)格面片進行自適應(yīng)細化求得新的基網(wǎng)格mb,然后再轉(zhuǎn)到步驟①,繼續(xù)整個過程,直到得到指定誤差的重構(gòu)圖像。
4.3)自適應(yīng)細分
自適應(yīng)細分允許只對感興趣的區(qū)域進行細分。在誤差控制中,我們需要對被標記為不滿足誤差要求的面片進行自適應(yīng)細分來局部增加控制頂點的數(shù)目,從而減少誤差。為了避免新網(wǎng)格產(chǎn)生裂縫,我們必須對被標記的面片和其鄰面都進行細分。對于被標記的網(wǎng)格面片,我們對其進行1-4細分,對于沒被標記的面片,我們根據(jù)其鄰面被標記的情況來進行細分:①如果該面片具有0個被標記的鄰面,則不對其進行細分;②如果該面片具有1個被標記的鄰面,則對其進行1-2細分;③如果該面片具有2個被標記的鄰面,則對其進行1-3細分;④如果該面片具有3個被標記的鄰面,則對其進行1-4細分。我們對基網(wǎng)格的所有面片用上述細分模式進行細分后,就完成一次自適應(yīng)細分,形成新的基網(wǎng)格。
5)光柵化矢量表示
由于目前的顯示設(shè)備大多數(shù)只支持光柵圖像的顯示,為了在這些顯示設(shè)備中顯示前面步驟得到的矢量表示mc,我們需要渲染控制網(wǎng)格mc面片和它們相關(guān)的顏色信息到一個離散的光柵圖像,也將該過程稱為矢量表示光柵化。
矢量表示是基于細分曲面,所以要先求得對應(yīng)的細分曲面,再將其離散化成光柵圖像。本發(fā)明的光柵化流程為:
①根據(jù)帶尖銳特征的loop細分規(guī)則對控制網(wǎng)格mc做r次細分得一個細化的網(wǎng)格mr,r=2,3…;
②根據(jù)帶尖銳特征的loop極限規(guī)則將mr的頂點都移到對應(yīng)的極限位置,從而得到逼近的分段細分曲面ms;
③由于ms是個分段線性曲面,曲面上的任一點顏色值都可以用該點所在三角面片的三個頂點顏色值進行線性表示。本發(fā)明使用重心坐標來計算三個頂點的權(quán)重。對于整個極限曲面網(wǎng)格ms,渲染流程:循環(huán)遍歷ms的每個面片;對于每個三角面片,找出這個面片的包圍盒;對于包圍盒里面的每個整數(shù)像素點,判斷該點是否屬于該三角面片,如果是,求出它的重心坐標;最后根據(jù)重心坐標算該像素點的顏色值。在遍歷網(wǎng)格全部三角面之后,即可以將對應(yīng)的光柵圖像素點的顏色全部填滿,從而實現(xiàn)光柵圖像的生成。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點與有益效果:
1.本發(fā)明提出采用等值線追蹤算法得到初始特征線段其中一側(cè)的線段,然后和初始特征線形成雙特征線,進而使用雙特征線來建模圖像特征兩側(cè)顏色的不連續(xù),可以較好地捕捉到兩側(cè)的顏色值。
2.針對圖像網(wǎng)格的特點,本發(fā)明改進了qem簡化算法的代價的計算方法,對簡化后的網(wǎng)格進行拓撲和幾何上的優(yōu)化,得到更能反映圖像特征的基網(wǎng)格,且網(wǎng)格質(zhì)量比較好。
3.對于矢量表示的初始重構(gòu)結(jié)果的誤差不能滿足用戶需求,本發(fā)明可以衡量出矢量化的重構(gòu)圖像與原圖像誤差,通過對基網(wǎng)格進行自適應(yīng)細分以達到一定范圍內(nèi)的指定誤差,做到誤差可控,具有實際應(yīng)用價值。
附圖說明
圖1為本發(fā)明的整個方法流程圖。
圖2為本發(fā)明的初始網(wǎng)格構(gòu)造示意圖。
圖3為本發(fā)明的等值線追蹤示意圖。
圖4為本發(fā)明的網(wǎng)格簡化流程圖。
圖5為本發(fā)明的誤差可控的loop細分曲面擬合流程圖。
圖6為本發(fā)明的自適應(yīng)細分模式示意圖。
圖7為本發(fā)明的一個實例lena的矢量化過程及結(jié)果:(a)原始圖像;(b)圖像特征;(c)雙特征線;(d)-(f)分別表示1%、2%、3%頂點數(shù)的控制網(wǎng)格;(g)-(i)分別表示(d)-(f)的重構(gòu)結(jié)果。
圖8為本發(fā)明的更多的實例的矢量化結(jié)果展示圖,從左到右分別表示原始圖像、2%頂點數(shù)的控制網(wǎng)格、重構(gòu)圖像。
圖9為本發(fā)明的兩個實例在不同的重構(gòu)誤差下的重構(gòu)結(jié)果:第一行分別為原圖像和2%頂點比例的基網(wǎng)格,第二、三、四行分別為不同的重構(gòu)誤差下得到重構(gòu)圖像和重構(gòu)誤差。
圖10為本發(fā)明的圖9(a)例子的誤差控制過程平均誤差變化趨勢圖。
圖11為本發(fā)明的圖9(b)例子的誤差控制過程平均誤差變化趨勢圖。
具體實施方式
下面結(jié)合具體實施例對本發(fā)明作進一步說明。
如圖1所示,對于一張給定的要進行矢量化的光柵圖像i,本實施例所述的細分曲面的圖像矢量化方法的步驟如下:
1)檢測圖像邊緣特征,得到一個像素寬的特征線段
1)檢測圖像邊緣特征
圖像邊緣是最顯著的圖像特征,為了在構(gòu)造保持圖像特征的基網(wǎng)格,使用圖像邊緣線段檢測方法來提取圖像的一個像素寬的特征線,其步驟為:
①高斯濾波:用高斯核卷積圖像來抑制圖像噪聲和平滑圖像;
②計算梯度幅值和邊緣方向圖:首先使用梯度算子分別計算出像素點的水平和垂直梯度,然后算出圖像梯度幅值圖,與此同時,比較像素水平和垂直梯度的大小,確定該像素點的邊緣方向,如果水平梯度較大,則認為通過該像素是個垂直方向邊緣,反之亦然;
③提取錨點:錨點可以被認為是邊緣結(jié)束的地方,即在水平和垂直方向特征變化劇烈的像素點,這里選擇局部梯度極值作為錨點,通過比較像素點與其相鄰像素點的梯度值來判斷該像素點是否是錨點,對于一個水平方向的像素點,將其與左右相鄰的像素點比較,如果該像素點的梯度值比左右相鄰像素梯度值大指定閾值,則認為該像素點為錨點;
④連接錨點形成線段:根據(jù)梯度幅值和邊緣方向圖來連接相鄰錨點,每次從還未被檢測過的錨點開始,觀察穿過該錨點的邊緣方向,如果是水平邊緣,通過向左和向右行進開始連接過程,如果垂直邊緣通過錨點,通過向上和向下行進進行連接過程,在移動期間,僅考慮三個直接鄰居像素,并且選擇具有最大梯度值的那個鄰居像素,當遇到梯度幅值為0的像素點或遇到之前已經(jīng)檢測過的邊緣像素時,該次處理過程停止。
2)構(gòu)造基于圖像特征的初始網(wǎng)格,并在網(wǎng)格中標記圖像特征
在2d圖像平面上建立像素分辨率的初始三角網(wǎng)格m。首先建立初始網(wǎng)格頂點,圖像中的每個像素點對應(yīng)網(wǎng)格中的一個頂點,并在頂點的屬性中記錄像素點的顏色值;然后以行和列的方式連接網(wǎng)格頂點形成矩形網(wǎng)格,根據(jù)圖像特征線將網(wǎng)格中的每個矩形網(wǎng)格劃分成兩個三角網(wǎng)格,如圖2的(a)所示。
圖像顏色不連續(xù)性與至少兩個具有非常不同顏色強度的相鄰像素相關(guān)聯(lián),單獨的圖像邊緣線不足以表示圖像顏色的不連續(xù)性。因此本發(fā)明提出使用雙特征線來表示圖像顏色的不連續(xù)。該策略首先使用等值線追蹤算法找出圖像特征兩側(cè)的距離一像素的平行線段,如圖2的(b)所示。然后通過比較兩側(cè)的圖像梯度選擇平均梯度大的線段作為另一特征線,并對受影響的三角網(wǎng)格進行重新三角化,如圖2的(c)所示。
尋找圖像特征線的等值線,首先在網(wǎng)格上對圖像的特征邊和特征頂點進行標記。對于每條特征線,將特征線上的頂點標為+,非特征線上的頂點標為-。如果一條邊的兩個頂點標號相異,則等值線會穿過這條邊。我們使用半邊結(jié)構(gòu)來進行三角網(wǎng)格的等值線追蹤,該過程與二維的行進三角形算法類似,如圖3所示,對于每條特征線一側(cè)的一像素等值線追蹤的過程描述如下:
①首先根據(jù)特征線的前兩個頂點找到其中一側(cè)的第一個等值點,將其添加進等值線段中,如圖3的v1頂點,進而找到對應(yīng)的第一條半邊he1,然后判斷當前的半邊是否屬于第一個面,根據(jù)第二條半邊與特征線第一個點和第二個點連線的夾角判斷當前半邊的方向是否是正確的,進而確定第一個搜索三角形f1;
②在三角形的相關(guān)邊上尋找第二條存在等值點的半邊,即邊的兩個頂點標號相異。如圖3的半邊he2,從而找到第二個等值點,如果該等值點和前一個等值點一樣,則不添加進等值線段中,如果不一樣,則添加。
③根據(jù)半邊結(jié)構(gòu)和當前半邊he2找到下一個搜索三角形的第一條存在等值點的半邊he3,進而確定下一個搜索三角形f2;
④遞歸執(zhí)行②和③,直至搜索三角形中不包含等值點。
接下來,對初始網(wǎng)格的邊和頂點的類型進行標記,從而在后續(xù)的網(wǎng)格簡化、細分等操作中對不同的類型進行不同的處理以保持重要的圖像特征。本發(fā)明將網(wǎng)格的邊分為三種類型:邊界邊、平滑邊、折痕邊,將網(wǎng)格的頂點分為四種類型:邊界點、平滑點、折痕點、角點。將圖像的雙特征線標記為折痕邊,將圖像矩陣邊界的邊標記為邊界邊,其他邊為平滑邊。對于網(wǎng)格頂點,如果頂點只與平滑邊緣連接,則該頂點標記為平滑點;折痕頂點與兩條鄰接的折痕邊連接;邊界點與兩條鄰接的邊界邊連接;圖像特征線端點、特征線交叉點標記為角點。為了固定矩形圖像邊界,四個角被標記為角點。
3)簡化初始網(wǎng)格,構(gòu)造保持圖像特征的基網(wǎng)格
主要采用qem簡化算法來簡化圖像初始網(wǎng)格,得到基網(wǎng)格mb。將網(wǎng)格的顏色屬性看成高度場來計算二次誤差代價,并且在簡化過程中使用細分曲線來擬合圖像特征線段來保持圖像特征。
在上一步驟中,我們根據(jù)圖像特征對網(wǎng)格的頂點和邊做了分類。為了保持圖像的形狀和特征,對于不同的特征采取不同的處理方式:①角點不允許被折疊;②邊界點只能與其鄰接的同邊界的兩個邊界點折疊;③折痕點只能與其鄰接的同折痕邊的兩個折痕點折疊;④滑點可以折疊到特征點。
此外,為了得到一個高質(zhì)量的保持圖像特征的基網(wǎng)格,改進了qem算法的邊折疊代價。在邊折疊代價中加入了特征邊形變代價qfeature、三角形正則性代價qre、面積代價qarea,并賦予它們相應(yīng)的權(quán)重。用qqem表示qem代價,則可以把邊折疊
cost(v1,v2)=αqqem(v1,v2)+βqfeature(v1,v2)+γqre(v1,v2)+δqarea(v1,v2)(1)
其中,權(quán)重α,β,γ,δ由用戶指定,邊折疊順序按照cost(v1,v2)從小到大進行。
需要說明的是,為了保證簡化后二維網(wǎng)格的質(zhì)量,除了在計算qem代價時,將網(wǎng)格m的顏色屬性看成高度場,在計算其他代價時,考慮的都只是二維圖像網(wǎng)格,不考慮顏色屬性。在實驗中權(quán)重α,β,γ,δ分別取1、10、3、10。計算出各項的代價:
qem代價qqem:將網(wǎng)格m的顏色屬性看成高度場,分別用rgb的值作為高度,則每條邊可計算出三個代價,將其和作為該邊的二次誤差代價qqem。
特征邊形變代價qfeature:定義qfeature為折疊前的特征點到其鄰接的兩個特征點連線的距離,用來衡量特征邊折疊結(jié)果與折疊點的偏離程度,qfeature值越小,表明偏離越小。如果折疊的邊是非特征邊,則qfeature值為0。
三角形正則性代價qre:在邊折疊代價中加入三角形正則性代價是為了減少狹長的三角面片的出現(xiàn)。三角形的正則性被用來表示其接近正三角形的程度,可以用r(t)=cos(∠a)+cos(∠b)+cos(∠c)來度量三角形t=δabc的正則性。令re(t)=3-2r(t),則0≤re(t)≤1,re(t)的值越小,表明該三角形的正則性越高。則可以定義三角面片集合t的正則性為:
re(t)=maxre(t)(2)
把qre定義為邊折疊前后,相關(guān)三角面片的正則性增量。則邊折疊
其中,
面積代價qarea:三角形正則性代價qre反映了三角面片的形狀,沒有反映面片大小。如果qre的權(quán)重γ比較大時,可能導致網(wǎng)格面片的大小相差很大。因此,在總代價中加入面積代價來約束面片的面積。把面積代價qarea定義為邊折疊后新頂點所有鄰接面的面積總和。則邊折疊
其中,area(t)表示三角形t的面積;
根據(jù)以上分析,如圖4所示,網(wǎng)格簡化算法的主要步驟為:
①設(shè)置邊折疊代價公式(1)中的各項權(quán)值;
②將網(wǎng)格m的顏色屬性看成高度場,計算網(wǎng)格所有邊的qem代價qqem;
③計算所有可折疊邊的折疊代價,根據(jù)折疊代價將其放入最小堆中。根據(jù)公式(1)計算出每條邊對應(yīng)的兩條半邊的折疊代價,則邊的折疊代價取兩個半邊代價的小值,并記錄折疊方向;
④從堆中取出最小折疊代價的邊,首先判斷其折疊后相關(guān)面是否會反生翻轉(zhuǎn),若會,則給該邊的代價加一個懲罰值,更新其在堆中的位置;若不會反生翻轉(zhuǎn),則判斷該邊是否是特征邊,若是特征邊,擬合調(diào)整特征點的位置并判斷其折疊后擬合誤差是否符合要求,若不符合,則不折疊該邊,將其從堆中刪除;否則就完成該邊的折疊操作,重新計算相關(guān)邊的折疊代價并更新它們在堆中的位置。
⑤若達到簡化的要求或最小堆為空,則轉(zhuǎn)到⑥,否則轉(zhuǎn)到④。
⑥刪除網(wǎng)格中的獨立頂點,更新網(wǎng)格,輸出基網(wǎng)格。
雖然在網(wǎng)格簡化過程中考慮了面片正則性、面積等因素,但是仍不能保證能得到一個高質(zhì)量基網(wǎng)格。因此本發(fā)明使用最簡單的laplacian算子對網(wǎng)格進行幾何優(yōu)化:
網(wǎng)格中頂點的新位置由vnew=v+λδv迭代式給出,其中λ取值為0.3。
為了保持圖像的特征,對網(wǎng)格特征頂點進行特殊處理。首先,角點不進行移動;對于邊界頂點和特征點v,設(shè)(va,v)和(v,vb)為v所在的兩條特征邊,則v只根據(jù)va和vb的位置進行調(diào)整,即laplacian算子定義為:
需要說明的是,網(wǎng)格優(yōu)化可以在網(wǎng)格簡化的過程中進行,也可以在網(wǎng)格簡化結(jié)束后進行。如果網(wǎng)格優(yōu)化會造成面片翻轉(zhuǎn),則暫時不進行優(yōu)化。
4)誤差可控的loop細分曲面擬合求得控制網(wǎng)格
經(jīng)過網(wǎng)格的簡化和優(yōu)化得到反映圖像特征的基網(wǎng)格后,本發(fā)明提出帶誤差控制的loop細分曲面擬合來對圖像顏色進行擬合,在計算控制網(wǎng)格的過程中進行誤差控制,用戶可以通過指定重構(gòu)圖像的誤差來獲得滿足需求的矢量圖像。該過程主要包括三個部分:控制網(wǎng)格的計算、誤差控制以及自適應(yīng)細分。
4.1)控制網(wǎng)格的計算
為了增加擬合目標的數(shù)據(jù)量,我們首先對基網(wǎng)格mb進行一次1-4細分得到網(wǎng)格
在網(wǎng)格簡化過程中已經(jīng)擬合了網(wǎng)格的特征頂點位置,為了計算方便,這里只擬合網(wǎng)格頂點的顏色。因此所要計算的控制網(wǎng)格mc和基網(wǎng)格mb具有相同的拓撲結(jié)構(gòu)。因此,對控制網(wǎng)格mc進行一次loop細分后獲得的網(wǎng)格
mr=ms(7)
設(shè)基網(wǎng)格mb和目標網(wǎng)格mc的頂點數(shù)分別為n和m,分別用mc、mr、
lm×msm×nmc=mr(8)
令zm×n=lm×msm×n,方程組(8)可以變換為:
zm×ntzm×nmc=zm×ntmr(9)
通過求解線性方程組(6)就可以得到控制網(wǎng)格mc。因為這里擬合的是網(wǎng)格頂點的顏色,所以mc和mr的大小分別為n×3和m×3,rgb三種顏色可以分開求解。
4.2)誤差控制
將每個像素點的重構(gòu)誤差定義為重構(gòu)圖像與原圖像對應(yīng)像素點顏色值的歐式距離,而將整個圖像的重構(gòu)誤差e定義為所有像素點重構(gòu)誤差的均值,每個基網(wǎng)格面片的重構(gòu)誤差ef定義為該面片光柵化后所對應(yīng)的所有像素點重構(gòu)誤差的均值。
在上一步驟中,通過loop細分曲面擬合求得控制網(wǎng)格,使其對應(yīng)的細分曲面盡可能接近原圖像。但是控制網(wǎng)格的頂點數(shù)目依賴于網(wǎng)格簡化,如果簡化過度,使得控制網(wǎng)格頂點數(shù)目過少,自由度過大,就可能導致重構(gòu)圖像與原圖像在某些區(qū)域存在較大的重構(gòu)誤差,因此本發(fā)明通過對誤差較大的區(qū)域進行自適應(yīng)細分來控制圖像的重構(gòu)誤差,使得用戶可以得到指定誤差的重構(gòu)圖像。
對于重構(gòu)誤差的計算,首先根據(jù)帶尖銳特征的loop細分規(guī)則和極限規(guī)則估計控制網(wǎng)格的極限曲面,計算出極限曲面上每個像素點的顏色值,即光柵化矢量表示。然后根據(jù)每個像素點所在的基網(wǎng)格面片,計算基網(wǎng)格每個面片的重構(gòu)誤差ef。最后計算整個重構(gòu)圖像的誤差e。通過以上分析,如圖5所示,本發(fā)明的誤差可控的控制網(wǎng)格的求取的主要流程如下:
①備份基網(wǎng)格mb,使用loop曲面擬合方法計算控制網(wǎng)格mc;
②根據(jù)細loop分規(guī)則和極限規(guī)則估計控制網(wǎng)格mc的極限曲面ms;
③對于原光柵圖像每個像素點的顏色值i(i),根據(jù)重心坐標計算出極限曲面ms上對應(yīng)像素點的顏色值i′(i),計算像素點誤差ei,并找到該像素點對應(yīng)的基網(wǎng)格面片。然后計算基網(wǎng)格mb每個面片內(nèi)所有像素點的平均誤差ef,最后計算整個圖像的平均重構(gòu)誤差e;
④如果平均重構(gòu)誤差e小于用戶指定的平均誤差閾值ε,則終止算法,輸出控制網(wǎng)格mc;否則找出基網(wǎng)格中mb前k個最大平均誤差的面片集合,并標記這些面片為需要進行自適應(yīng)細分;其中k≥1由用戶指定,一般來說,k越大,平均誤差下降越快。
⑤對被標記的基網(wǎng)格面片進行自適應(yīng)細化求得新的基網(wǎng)格mb,然后再轉(zhuǎn)到步驟①,繼續(xù)整個過程,直到得到指定誤差的重構(gòu)圖像。
4.3)自適應(yīng)細分
自適應(yīng)細分允許只對感興趣的區(qū)域進行細分。在誤差控制中,我們需要對被標記為不滿足誤差要求的面片進行自適應(yīng)細分來局部增加控制頂點的數(shù)目,從而減少誤差。為了避免新網(wǎng)格產(chǎn)生裂縫,我們必須對被標記的面片和其鄰面都進行細分。對于被標記的網(wǎng)格面片,我們對其進行1-4細分,如圖6中標記為1的面片所示。對于沒被標記的面片,我們根據(jù)其鄰面被標記的情況來進行細分:①如果該面片具有0個被標記的鄰面,如圖6中標記為5的面片所示,則不對其進行細分;②如果該面片具有1個被標記的鄰面,如圖6中標記為4的面片所示,則對其進行1-2細分;③如果該面片具有2個被標記的鄰面,如圖6中標記為3的面片所示,則對其進行1-3細分;④如果該面片具有3個被標記的鄰面,如圖6中標記為2的面片所示,則對其進行1-4細分。我們對基網(wǎng)格的所有面片用上述細分模式進行細分后,就完成一次自適應(yīng)細分,形成新的基網(wǎng)格。
5)光柵化矢量表示
由于目前的顯示設(shè)備大多數(shù)只支持光柵圖像的顯示,為了在這些顯示設(shè)備中顯示前面步驟得到的矢量表示mc,我們需要渲染控制網(wǎng)格mc面片和它們相關(guān)的顏色信息到一個離散的光柵圖像,也將該過程稱為矢量表示光柵化。
我們先求得對應(yīng)的細分曲面,再將其離散化成光柵圖像。光柵化流程為:
①根據(jù)帶尖銳特征的loop細分規(guī)則對控制網(wǎng)格mc做r次細分得一個細化的網(wǎng)格mr,r=2,3…;
②根據(jù)帶尖銳特征的loop極限規(guī)則將mr的頂點都移到對應(yīng)的極限位置,從而得到逼近的分段細分曲面ms。
③由于ms是個分段線性曲面,曲面上的任一點顏色值都可以用該點所在三角面片的三個頂點顏色值進行線性表示。本發(fā)明使用重心坐標來計算三個頂點的權(quán)重。對于整個極限曲面網(wǎng)格ms,渲染流程:循環(huán)遍歷ms的每個面片;對于每個三角面片,找出這個面片的包圍盒;對于包圍盒里面的每個整數(shù)像素點,判斷該點是否屬于該三角面片,如果是,求出它的重心坐標;最后根據(jù)重心坐標算該像素點的顏色值。在遍歷網(wǎng)格全部三角面之后,即可以將對應(yīng)的光柵圖像素點的顏色全部填滿,從而實現(xiàn)光柵圖像的生成。
綜上所述,本發(fā)明方法對于給定的要進行矢量化的光柵圖像,可以得到質(zhì)量良好且保持原圖像特征的矢量表示。圖7為本發(fā)明的一個實例lena的矢量化過程及結(jié)果:(a)為原始圖像;(b)為檢測出的圖像特征;(c)為使用等值線追蹤算法得到的雙特征線;(d)-(f)分別表示1%、2%、3%頂點數(shù)的控制網(wǎng)格;(g)-(i)分別表示(d)-(f)的重構(gòu)結(jié)果。圖8為本發(fā)明的更多的實例的矢量化結(jié)果展示圖,從左到右分別表示原始圖像、2%頂點數(shù)的控制網(wǎng)格、重構(gòu)圖像。從圖中可以本發(fā)明方法可以得到質(zhì)量良好的矢量表示,且網(wǎng)格的頂點數(shù)目越多,得到的矢量表示越接近原圖像。
本發(fā)明方法對于矢量表示的初始重構(gòu)結(jié)果誤差不能滿足用戶需求的情況,可以衡量出矢量化的重構(gòu)圖像與原圖像誤差,通過對基網(wǎng)格進行自適應(yīng)細分以達到一定范圍內(nèi)的指定誤差,做到誤差可控,具有實際應(yīng)用價值。圖9為本發(fā)明的兩個實例在不同的重構(gòu)誤差下的重構(gòu)結(jié)果:第一行分別為原圖像和2%頂點比例的基網(wǎng)格,第二、三、四行分別為不同的重構(gòu)誤差下得到重構(gòu)圖像和重構(gòu)誤差。從圖中可以看出,第二行的重構(gòu)圖像在圖像的邊緣存在較大的誤差,通過本發(fā)明方法的迭代地自適應(yīng)細分誤差控制后,圖像較大誤差的區(qū)域得到了改善,從而得到滿足平均誤差需求的重構(gòu)結(jié)果,能夠很好地表示原圖像。說明了對于同一簡化比例的基網(wǎng)格,本發(fā)明方法能矢量化出滿足一定范圍內(nèi)不同誤差需求的結(jié)果。
本發(fā)明的誤差控制算法具有收斂性。如果重構(gòu)圖像不滿足誤差需求,本發(fā)明方法每次迭代選擇前k個平均誤差最大的基網(wǎng)格面片進行自適應(yīng)細分,從而增加最終控制網(wǎng)格上的頂點數(shù)目。理論上,隨著控制網(wǎng)格上頂點數(shù)目的增加,重構(gòu)誤差會越來越小,最終收斂于某個小值。圖10、圖11分別為本發(fā)明的圖9(a)例子和圖9(b)例子的誤差控制過程平均誤差變化趨勢圖。從圖中可以看出:①隨著迭代次數(shù)的增加,重構(gòu)圖像的誤差整體上逐漸減少,說明了本發(fā)明的誤差控制算法具有收斂性;②隨著每次迭代細分的面片數(shù)量k的增加,平均誤差減少的速度也隨之增加,可以在越少的迭代次數(shù)中達到指定誤差閾值。但是如果k過大,一些誤差小的基網(wǎng)格面片也會被細化,使得面片、頂點數(shù)量增加迅速,造成冗余。因此,用戶可以根據(jù)能接受的誤差指定相應(yīng)的每次迭代細分的面片數(shù)量k,減少迭代次數(shù)。
以上所述之實施例子只為本發(fā)明之較佳實施例,并非以此限制本發(fā)明的實施范圍,故凡依本發(fā)明之形狀、原理所作的變化,均應(yīng)涵蓋在本發(fā)明的保護范圍內(nèi)。