欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于像素精度的代數(shù)曲線光柵化方法

文檔序號:6367537閱讀:452來源:國知局
專利名稱:一種基于像素精度的代數(shù)曲線光柵化方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機代數(shù)曲線曲面造型技術(shù),特別涉及一種基于像素精度的代數(shù)曲線光柵化方法。
背景技術(shù)
代數(shù)曲線曲面在幾何造型中的表示能力很強,比參數(shù)曲線曲面更能表示具有任意拓?fù)涞膹?fù)雜曲線曲面。但是由于它在直觀控制方面遠不如參數(shù)曲線,并且控制系數(shù)數(shù)目較多,所以對代數(shù)曲線曲面的研究并不多。代數(shù)B-樣條曲線在幾何直觀性上彌補了冪基代數(shù)曲線的編輯不直觀的缺點,具有分段光滑、可局部編輯、幾何編輯直觀、可表示復(fù)雜拓?fù)湫螒B(tài)等優(yōu)點。在平面代數(shù)曲線的繪制研究方面,主要面臨困難是求解曲線的拓?fù)湫畔⒌膯栴}。對于二次的平面代數(shù)曲線就有拋物線、橢圓、雙曲線、交叉直線四種拓?fù)浣Y(jié)構(gòu),隨著曲線次數(shù)的增加,曲線的拓?fù)湫螒B(tài)會迅速增多,這給求解曲線的拓?fù)浣Y(jié)構(gòu)帶來極大的挑戰(zhàn)。在求解曲線拓?fù)涞倪^程中,還必要面臨精確求解曲線的奇異點(尖點、自相交點、孤立點)。對于曲線的奇異點,求解奇異點的拓?fù)湫畔⒁彩窃跀?shù)值計算中的難題,其最終歸結(jié)為求解帶有重根的線性方程求解。對于帶有重根的線性方程求解,現(xiàn)在還沒有能夠在計算時間和精度上取得很好的平衡。對于已經(jīng)給出的拓?fù)浣Y(jié)構(gòu),并不等于能夠完整的刻畫代數(shù)曲線。在代數(shù)曲線的光柵化過程中,即使得到了代數(shù)曲線的分段線性拓?fù)渫瑯?gòu)體,由于代數(shù)曲線光柵化算法一般采用像素采樣點跟蹤算法,對于相互靠近的曲線有可能出現(xiàn)跟蹤錯誤的結(jié)果。這樣導(dǎo)致從一個種子點出發(fā),不能準(zhǔn)確地到達分段曲線的終點。改進的算法是在需要的像素位置做子像素跟蹤,但是這個過程需要更多的計算。在代數(shù)曲線可視化過程中,如何實現(xiàn)代數(shù)曲線快速光柵化是代數(shù)曲線曲面造型技術(shù)發(fā)展的重要研究課題。現(xiàn)有技術(shù)中,代數(shù)曲線的繪制方法可以分為兩類物體空間算法和圖像空間算法。在物體空間算法中,采用大量的直線段逼近代數(shù)曲線,然后利用已有的圖形繪制方法顯示這些逼近的直線段集合。在逼近過程中,核心是計算曲線上特征點,使得逼近直線段集合和原始曲線的拓?fù)湟恢隆T谟嬎愦鷶?shù)曲線上的特征點時,最常用的方法是柱形代數(shù)分解。該方法的主要瓶頸在于柱形代數(shù)分解過程中需要消耗比較大的時間,不能達到實時繪制的要求。在圖像空間算法中,算法確定曲線通過的像素或者子像素,然后對該像素進行著色。兩類算法各有優(yōu)缺點。對于給定的圖像空間區(qū)域,檢測曲線是否通過該區(qū)域。排除曲線沒有通過的區(qū)域,對于有曲線通過的區(qū)域,運用細分或者跟蹤的方式,直到每個區(qū)域只有像素或子像素大小。該方法缺乏對曲線的精確計算,不能準(zhǔn)確計算曲線上的采樣點
發(fā)明內(nèi)容
本發(fā)明提供了一種基于像素精度的代數(shù)曲線光柵化方法,克服了現(xiàn)有技術(shù)的代數(shù)曲線繪制方法繪制效率較低以及繪制曲線精度不高的問題。一種基于像素精度的代數(shù)曲線光柵化方法,包括以下步驟(I)輸入待繪制的代數(shù)曲線及其相關(guān)信息;
(2)將該曲線的特征點限制在一個像素范圍內(nèi),得到若干包含曲線特征點的特征區(qū)域;如沒有特殊說明,本文中的曲線即指待繪制的代數(shù)曲線。(3)求得曲線與所述特征區(qū)域邊界的交點,通過所述的交點構(gòu)建曲線在特征區(qū)域的拓?fù)溥B接信息;(4)根據(jù)特征區(qū)域邊界的交點確定曲線的走向,利用直線段連接相鄰的特征區(qū)域,得到直線段擬合曲線;所述的直線段通過特征區(qū)域邊界的交點;(5)對所述的直線段擬合曲線進行優(yōu)化,繪制并顯示曲線。在本發(fā)明中,所述的特征區(qū)域定義為描述在像素精度內(nèi)的刻畫曲線特征點的區(qū)域,特征區(qū)域通常包含特征點,但在具體實施過程中也有可能是包含曲線上非常靠近的分支曲線段。所述的特征點為曲線上的奇異點和曲線上切向垂直或者水平的點。下面結(jié)合附圖詳細介紹本發(fā)明的具體實施方式
。優(yōu)選地,步驟⑵中,所述的將該曲線的特征點限制在一個像素范圍內(nèi),得到若干包含曲線特征點的特征區(qū)域,包括步驟(2. I)均勻細分該曲線的區(qū)域,得到細分后的子區(qū)域;(2. 2)利用區(qū)間分析的方法確定每個子區(qū)域的值域范圍;判斷每個子區(qū)域內(nèi)是否存在該曲線的特征點,若存在則繼續(xù)細分該子區(qū)域;(2. 3)重復(fù)步驟(2. 2),直到包含特征點的子區(qū)域的區(qū)域面積小于一個像素;將該子區(qū)域作為所述的特征區(qū)域。優(yōu)選地,步驟(3)中,所述的求得曲線與所述特征區(qū)域邊界的交點,包括步驟(3. I)以所述的特征區(qū)域為中心,用若干像素面積已知的包圍盒包圍每個特征區(qū)域;(3. 2)通過單變量方程計算出曲線和包圍盒的交點作為曲線與所述特征區(qū)域邊界的交點。上述的包圍盒實質(zhì)上即包括特征區(qū)域所占像素面積以及特征區(qū)域附近的像素面積。由于本發(fā)明所實現(xiàn)的曲線繪制方法的精確度高,特征區(qū)域在本發(fā)明中的區(qū)域面積小于一個像素,因此難以獲取原曲線與特征區(qū)域邊界的交點。獲取上述交點能夠求出從該特征區(qū)域弓I出的曲線弧線個數(shù),從而判斷曲線在其區(qū)域的拓?fù)溥B接關(guān)系。采用所述包圍盒的方式,即以特征區(qū)域為中心,用包圍盒將特征區(qū)域包圍,能夠在不對繪制精度產(chǎn)生影響的前提下,等效地得到原曲線與特征區(qū)域邊界的交點特點。一般地,包圍盒所占像素面積可為3*3像素。優(yōu)選地,步驟(4)中,所述的利用直線段連接相鄰的特征區(qū)域后,包括步驟(4. I)檢測所有直線段所占像素是否超過某一預(yù)設(shè)的像素值;若否,則直接得到所述的直線段擬合曲線,若是,則執(zhí)行以下步驟;(4. 2)對超過該像素值的直線段所在的區(qū)間進行掃描,求得掃描線與該區(qū)間內(nèi)曲線的交點;(4. 3)將上述直線段拆分為通過區(qū)間內(nèi)交點的若干直線段;所述的區(qū)間內(nèi)交點包括所述特征區(qū)域邊界的交點以及掃描線與該區(qū)間內(nèi)曲線的交點;重復(fù)步驟(4. I) (4. 3)。優(yōu)選地,步驟(5)中,所述的對所述的直線段擬合曲線進行優(yōu)化,包括步驟(5. I)獲取擬合曲線直線段的斜率;(5. 2)根據(jù)直線段的斜率,選用垂直掃描線或/和水平掃描線對直線段所在區(qū)間的曲線進行掃描,掃描線與該曲線的交點作為采樣點的初始值;
(5. 3)基于采樣點的初始值,通過牛頓迭代算法求出掃描方向上最鄰近的根,牛頓迭代算法的終止條件為求根精度滿足預(yù)設(shè)的像素精度繪制要求。用分段線性直線逼近曲線的繪制效果只能粗略地表示曲線在該區(qū)域內(nèi)的情況;掃描直線段,以該分段直線段上的采樣點(與掃描線的交點)作為初始值,通過牛頓迭代求出在掃描方向上最鄰近的根,可以精確的計算出曲線上的采樣點,從而提高曲線繪制的精度。具體地,步驟(5.2)中,所述根據(jù)直線段的斜率,選用垂直掃描線或/和水平掃描線對直線段所在區(qū)間的曲線進行掃描,包括以下情況在處理斜率絕對值小于1/K的直線段時,通過垂直掃描線對曲線進行掃描;對于斜率絕對值大于K的直線段,通過水平掃描線對曲線進行掃描;對于斜率絕對值屬于[1/K,K]的直線段,應(yīng)同時在水平和垂直兩個方向?qū)η€進行掃描。K值可根據(jù)須實現(xiàn)的繪制精度作預(yù)先選取,一般可選取為K = 2。進一步地,步驟(5)中,所述的繪制并顯示曲線,包括步驟結(jié)合反走樣技術(shù)繪制并顯示曲線。更進一步地,步驟(5)中,所述的繪制并顯示曲線,也可以包括步驟對所得到曲線的采樣點做反走樣處理,根據(jù)處理得到的像素灰度值顯示曲線。具體地,所述的對所得到曲線的采樣點做反走樣處理,包括步驟以預(yù)先設(shè)定像素半徑的圓表示所述的采樣點,計算該圓覆蓋像素面積的百分比,得到像素的灰度值。本發(fā)明的技術(shù)方案能夠處理不高于四次的冪基形式代數(shù)曲線,并且能夠保證曲線在像素精度條件下繪制的正確性,曲線處理效率較高。本發(fā)明技術(shù)方案的技術(shù)原理如下一、關(guān)于特征區(qū)域。所述的特征區(qū)域?qū)嵸|(zhì)上是把所述的特征點限制在一定的像素范圍內(nèi),用以實現(xiàn)特征點在像素精度內(nèi)的可視化;為了避免求解高次方程時的數(shù)值計算,采用細分區(qū)間的方法求解特征區(qū)域,即通過確定屏幕空間,讓特征區(qū)域小于一個像素大小。給輸入的代數(shù)曲線,為一種平面隱式代數(shù)曲線,其表達式如下f (x, y) =E BijXiYj = 0其中i、j分別為x、y的次數(shù),Bij為對應(yīng)的控制系數(shù)。對于區(qū)域[a,b]*[c,d],利用區(qū)間分析的方法確定f(x,y)和fY(x,y)的范圍分別是和[gp];如果
且,說明該區(qū)域內(nèi)可能有X-特征點,需要繼續(xù)細分直到最后得到的區(qū)間小于一個像素,否則說明該 區(qū)域內(nèi)沒有X-特征點。利用這個樣的方法,可以快速的得到包含特征點的區(qū)間,且這些區(qū)間都小于一個像素。二、關(guān)于曲線與所述特征區(qū)域邊界的交點。用包圍盒包圍所述的特征區(qū)域,通過單變量方程計算出曲線和包圍盒的交點基于如下原理其中由于不同的特征區(qū)域為已知,用一個小的包圍盒包圍特征區(qū)域不會同時包含兩個特征區(qū)域;通過單變量方程計算出曲線和包圍盒的交點用到四次及以下方程求根,由于目前已有的算法能夠利用解析的方法求解五次及以下的方程,整個方法能準(zhǔn)確的求出曲線和特征區(qū)域邊界的交點,從而得到出從特征區(qū)域引出的弧線的個數(shù)。三、關(guān)于用直線段擬合曲線。為了讓所得到的直線段擬合曲線接近于的曲線,對相隔較遠的兩個特征區(qū)域進行加密采樣,即通過拆分超過一定像素值的直線段,以保證下一步中擬合曲線優(yōu)化并繪制的正確性。四、關(guān)于分段曲線的優(yōu)化。對直線段擬合曲線進行優(yōu)化是為了對曲線進行進一步逼近,以完成曲線的繪制。在本發(fā)明中,以直接段上的點作為初始值,通過牛頓迭代求出該方向上最鄰近的根,最后使用反走樣的效果繪制曲線。以水平方向(即X方向)上的迭代過程為例,具體迭代過程基于以下公式x +1 =x + f^y\
f 0 ,少)其中,Xn為迭代前的計算結(jié)果,xn+1表示下一個點的結(jié)果。優(yōu)化過程是用牛頓迭代的方法求解的,并根據(jù)屏幕像素的精度控制所要求根的精度;可以根據(jù)所需的繪制精度設(shè)定直線段斜率的判斷依據(jù),即上述的K值。五、關(guān)于繪制曲線。曲線在理論上是沒有寬度的,在繪制過程中,曲線本身不會覆蓋像素的任何面積,只會經(jīng)過像素。為了增強繪制曲線的效果,一般都把曲線理解為帶有一定寬度。在曲線繪制過程,為了減少鋸齒狀現(xiàn)象,需要對帶有線寬的曲線做反走樣。通過計算帶有線寬的曲線對像素區(qū)域的影響,有區(qū)別的顯示不同像素的顏色值,從視覺上消除鋸齒的效果。最簡單的處理方法是計算出曲線覆蓋像素面積的百分比,從而決定像素的灰度值。本發(fā)明提供了基于特征區(qū)域的一般隱式代數(shù)曲線的繪制方法,能夠處理不高于四次冪基形式代數(shù)曲線;采用了區(qū)間檢測算法,對屏幕區(qū)域進行細分,把特征點限定在一定的區(qū)域內(nèi),使得最后特征區(qū)域小于一個像素;通過計算特征區(qū)域邊界和曲線的交點連接特征區(qū)域,得到分段曲線逼近;最后用牛頓迭代計算對曲線進行優(yōu)化,得到帶有線寬反走樣效果的曲線繪制。本發(fā)明能夠在繪制效果和繪制效率上取得平衡,滿足實時繪制的要求;同時在像素精度內(nèi)將帶有奇異點的代數(shù)曲線進行可視化處理。本發(fā)明的具體技術(shù)效果如下一、本發(fā)明不僅能夠快速的繪制隱式代數(shù)曲線,而且能夠通過牛頓迭代得到高質(zhì)量的曲線,保證曲線的光順性;二、本發(fā)明避免了直接計算曲線的拓?fù)湫畔?,無需準(zhǔn)確求解奇異點的拓?fù)浣Y(jié)構(gòu),也不涉及對復(fù)雜的子結(jié)式和高次方程的求根問題,在對曲線光柵化的過程中把奇異點投影于某個像素,從而實現(xiàn)曲線的實時光柵化,并且保證在非奇異點的區(qū)域結(jié)果的正確性;三、本發(fā)明在計算的過程中給出了特征區(qū)域的連接關(guān)系,得到曲線的分段直線逼近,能夠保證曲線在像素精度下的正確性。


圖I為本發(fā)明的技術(shù)方案的流程示意;圖2為本發(fā)明應(yīng)用于具 體曲線的繪制過程示意圖;圖3為本發(fā)明特征區(qū)域和曲線邊界有四個交點的情況下區(qū)域內(nèi)的曲線拓?fù)溥B接關(guān)系圖;圖4為本發(fā)明拆分直線段并重新判斷曲線通過交點方向后的連接情況示意圖;圖5為本發(fā)明利用牛頓迭代得到曲線采樣點的部分過程示意圖;圖6為本發(fā)明垂直掃描線的反走樣效果示意圖;圖7為本發(fā)明方法應(yīng)用于部分平面隱式代數(shù)曲線的光柵化結(jié)果示意圖。
具體實施例方式下面結(jié)合附圖詳細介紹本發(fā)明的具體實施方式
。如圖I所述的一種基于像素精度的代數(shù)曲線光柵化方法,包括以下步驟(I)輸入待繪制的代數(shù)曲線及其相關(guān)信息。輸入的代數(shù)曲線為一種平面隱式代數(shù)曲線,其表達式如下f (x, y) =E SLiiK1J3 = 0其中i、j分別為X、y的次數(shù),X、y的次數(shù)不高于四次;代數(shù)曲線的相關(guān)信息即包括表達式中的au,Bij為代數(shù)曲線對應(yīng)的控制系數(shù)。(2)將該曲線的特征點限制在一個像素范圍內(nèi),得到若干包含曲線特征點的特征區(qū)域。特征點為曲線上的奇異點和曲線上切向垂直或者水平的點。特征區(qū)域定義為描述在像素精度內(nèi)的刻畫曲線特征點的區(qū)域,特征區(qū)域通常包含特征點,但在具體實施過程中也有可能是包含曲線上非??拷姆种€段。本步驟進一步包括步驟(2. I)均勻細分該曲線的區(qū)域,得到細分后的子區(qū)域;(2. 2)利用區(qū)間分析的方法確定每個子區(qū)域的范圍;判斷每個子區(qū)域內(nèi)是否存在該曲線的特征點,若存在則繼續(xù)細分該子區(qū)域;(2. 2)重復(fù)步驟(2. 2),直到包含特征點的子區(qū)域的區(qū)域面積小于一個像素;將該子區(qū)域作為所述的特征區(qū)域。(3)求得曲線與所述特征區(qū)域邊界的交點,通過所述的交點構(gòu)建曲線在特征區(qū)域的拓?fù)溥B接信息。本步驟進一步包括步驟(3. I)以所述的特征區(qū)域為中心,用若干像素面積已知的包圍盒包圍每個特征區(qū)域;
(3.2)通過單變量方程計算出曲線和包圍盒的交點,通過曲線和包圍盒的交點重構(gòu)曲線在特征區(qū)域的拓?fù)溥B接信息。包圍盒實質(zhì)上即包括特征區(qū)域所占像素面積以及特征區(qū)域附近的像素面積。由于本發(fā)明所實現(xiàn)的曲線繪制方法的精確度高,特征區(qū)域在本發(fā)明中的區(qū)域面積小于一個像素,因此難以獲取原曲線與特征區(qū)域邊界的交點。獲取上述交點能夠求出從該特征區(qū)域引出的曲線弧線個數(shù),從而判斷曲線在其區(qū)域的拓?fù)溥B接關(guān)系。采用所述包圍盒的方式,即以特征區(qū)域為中心,用包圍盒將特征區(qū)域包圍,能夠在不對繪制精度產(chǎn)生影響的前提下,等效地得到原曲線與特征區(qū)域邊界的交點特點。在本實施例中,包圍盒所占像素面積可為3*3像素。 (4)根據(jù)特征區(qū)域邊界的交點確定曲線的走向,利用直線段連接相鄰的特征區(qū)域,得到直線段擬合曲線;所述的直線段通過特征區(qū)域邊界的交點。本步驟進一步包括對相隔較遠的相鄰的特征區(qū)域之間的直線段進行拆分的過程,即對其進行加密采樣,在根據(jù)特征區(qū)域邊界的交點確定曲線的走向并利用直線段連接相鄰的特征區(qū)域之后,具體包括步驟(4. I)檢測所有直線段所占像素是否超過某一預(yù)設(shè)的像素值;若否,則直接得到所述的直線段擬合曲線,若是,則執(zhí)行以下步驟;(4. 2)對超過該像素值的直線段所在的區(qū)間進行掃描,求得掃描線與該區(qū)間內(nèi)曲線的交點;(4. 3)將上述直線段拆分為通過區(qū)間內(nèi)交點的若干直線段;所述的區(qū)間內(nèi)交點包括所述特征區(qū)域邊界的交點以及掃描線與該區(qū)間內(nèi)曲線的交點;重復(fù)步驟(4. I) (4. 3)。(5)對所述的直線段擬合曲線進行優(yōu)化,繪制并顯示曲線。由于用分段線性直線逼近曲線的繪制效果(即上一步驟中產(chǎn)生的直線段擬合曲線)只能粗略地表示曲線在該區(qū)域內(nèi)的情況;為了提高曲線繪制的精度,需對直線段擬合曲線進行優(yōu)化,具體包括如下步驟(5. I)獲取擬合曲線直線段的斜率;(5. 2)根據(jù)直線段的斜率,選擇掃描方式對于斜率絕對值小于1/K的直線段時,通過垂直掃描線對曲線進行掃描;對于斜率絕對值大于K的直線段,通過水平掃描線對曲線進行掃描;對于斜率絕對值屬于[1/K,K]的直線段,應(yīng)同時在水平和垂直兩個方向?qū)η€進行掃描;其中,上述的K值可根據(jù)須實現(xiàn)的繪制精度作預(yù)先選取,在本實施例中選取為K =2。將上述的掃描線與該曲線的交點作為采樣點的初始值;(5.3)基于采樣點的初始值,通過牛頓迭代算法求出掃描方向上最鄰近的根,牛頓迭代算法的終止條件為求根精度滿足預(yù)設(shè)的像素精度繪制要求。對上述步驟基于牛頓迭代算法所得到曲線的采樣點做反走樣處理,即以預(yù)先設(shè)定像素半徑的圓表示所述的采樣點,計算該圓覆蓋像素面積的百分比,得到像素的灰度值;最后,根據(jù)反走樣處理得到的像素灰度值顯示曲線。為了進一步論述本實施例方法的實施過程,下面結(jié)合圖2,對本實施例代數(shù)曲線光柵化的實現(xiàn)過程以及效果作闡述。如圖2a所示是步驟(2)中求得曲線的特征區(qū)域200的示意圖,特征區(qū)域200實質(zhì)上是把特征點限制在一定的像素范圍內(nèi),用以實現(xiàn)特征點在像素精度內(nèi)的可視化;為了避免求解高次方程時的數(shù)值計算,本實施例采用細分區(qū)間的方法求解特征區(qū)域,即通過確定屏幕空間,讓特征區(qū)域小于一個像素大小。對于區(qū)域[a, b]*[c, d],利用區(qū)間分析的方法確定f (X, y)和fy(x,y)的范圍分別
是和[gT];如果且,說明該區(qū)域內(nèi)可能有X-特征點,需要繼 續(xù)細分直到最后得到的區(qū)間小于一個像素,否則說明該區(qū)域內(nèi)沒有X-特征點。整個過程在GPU上實現(xiàn),在實際的應(yīng)用中,每次把區(qū)間剖分為8*8的子區(qū)域,最后得到的區(qū)域可能包含特征點。由于區(qū)間分析方法會帶來過高估計的問題,導(dǎo)致在某些區(qū)域需要更多的剖分,但不影響最后的結(jié)果正確性。最后得到的區(qū)域也有可能不包含X-特征點,但是這個區(qū)域仍然會細分到很小的范圍,細分結(jié)果主要和分辨率相關(guān),在可視化范圍內(nèi),這個區(qū)域并不影響最后的結(jié)果。在實施過程中還需要求解曲線與所述特征區(qū)域邊界的交點,由于不同的特征區(qū)域為已知,用一個小的包圍盒包圍特征區(qū)域不會同時包含兩個特征區(qū)域;結(jié)合圖2b,用3*3像素面積的包圍盒201包圍特征區(qū)域200,并通過單變量方程計算出曲線和包圍盒201的交點202。通過單變量方程計算出曲線和包圍盒的交點,其中用到四次及以下方程求根。目前已有的算法能夠利用解析的方法求解五次及以下的方程,整個方法能準(zhǔn)確的求出曲線和特征區(qū)域邊界的交點,從而得到出從特征區(qū)域引出的弧線的個數(shù)。對于每個的特征區(qū)域200,雖然無法確定在該區(qū)域內(nèi)的曲線的形狀,但已經(jīng)能夠滿足曲線可視化的應(yīng)用。在實現(xiàn)過程中更多的是關(guān)心這個區(qū)域?qū)ν庋由斐龆嗌贄l曲線,并由此確定這個區(qū)域和周邊的連接關(guān)系。對于特征區(qū)域內(nèi)部的曲線走向是否自相交,由于特征區(qū)域均小于一個像素,在一個像素內(nèi)部曲線走向時候自相交已經(jīng)沒有必要深究。例如對于特征區(qū)域和曲線邊界有四個交點的情況,如圖3所示,由于特征區(qū)域200的像素面積在一個像素內(nèi),通常認(rèn)為曲線通過區(qū)域的中心自相交,最后自相交的交點通過計算交點的重心得到。結(jié)合圖2c,直線段擬合曲線中往往包括相鄰特征區(qū)域較遠這一種情況,實例中往往會通過檢測直線段203是否大于一定像素值來判斷是否屬于上述情況。在出現(xiàn)上述情況中,為了讓所得到的分段直線和最后想要的曲線相當(dāng)接近,對相隔較遠的兩個特征區(qū)域要加密采樣,以保證直線段優(yōu)化結(jié)果的正確性。具體將直線段203作如下處理利用已有的特征區(qū)間的X坐標(biāo)剖分區(qū)域,對于較大的區(qū)域用垂直掃描線和曲線求交(兩個掃描線距離超過100個像素,在中間插入另一個掃描線),得到垂直掃描線與曲線的交點;將該直線段拆分為通過該交點的若干直線段。由于圖2所示的原始曲線較為簡單,當(dāng)在上述情況下,若該直線段所在區(qū)域的掃描結(jié)果包含若干交點,此時,拆分過程需要重新判斷曲線通過交點的方向,結(jié)合圖4 :如果該直線段所在區(qū)域左右兩個的掃描線上沒有特征區(qū)域,通過計算區(qū)域周邊和曲線的交點得到區(qū)域內(nèi)的曲線逼近。如圖4a,計算得到該區(qū)域左邊掃描線有兩個交點LI、L2,右邊有兩個交點R1、R2,曲線和區(qū)域在上邊界有一個交點Tl,該點斜率大于O,曲線和區(qū)域在下邊界有一個交點BI,該點斜率大于O。利用已知交點的斜率得到曲線通過該點的方向,可以確定曲線L1-T1、L2-R1、B1-R2。如果該直線段所在區(qū)域左右兩個的掃描線其中一個上有特征區(qū)域,并且該區(qū)域內(nèi)邊界上只有一個特征區(qū)域,那么可以通過周邊信息確定曲線的逼近。如下圖4b,計算得到該區(qū)域左邊掃描線有一個交點SI,右邊有兩個交點Rl、R2,曲線和區(qū)域在下邊界有一個交點BI,該點斜率小于O??梢源_定曲線Sl-Rl、S1-R2、Sl-Bl。完成上述全部過程后,得到最終的直線段擬合曲線;對其進行優(yōu)化并結(jié)合反走樣技術(shù)繪制顯示如圖2d所示的曲線204。在具體操作過程中,首先把獲取的直線段數(shù)據(jù)傳到GPU內(nèi),然后利用CUDA計算,以直線段與掃描線的交 點作為采樣值的初始值,通過牛頓迭代求出該方向上最鄰近的根,最后結(jié)合反走樣的效果繪制曲線。下面來具體說明在已經(jīng)得到的直線段擬合曲線基礎(chǔ)上準(zhǔn)確的計算曲線上的采樣點的優(yōu)化過程優(yōu)化過程是用牛頓迭代的方法求解的,根據(jù)屏幕像素的精度控制所要求根的精度。在處理斜率絕對值小于1/K的直線段時,通過垂直掃描線對曲線進行優(yōu)化;對于斜率絕對值大于K的直線段,通過水平掃描線對曲線進行優(yōu)化;對于斜率絕對值屬于[1/K,K]的線段,同時在水平和垂直兩個方向優(yōu)化曲線。實現(xiàn)優(yōu)化過程中選取K = 2。如圖5所示,曲線上的點S的坐標(biāo)為(xs,ys),通過牛頓迭代可以得到最后的坐標(biāo)結(jié)果T(xt,yt) ;5a圖采用垂直掃描線迭代計算曲線上的點,5b圖采用水平方向,5c圖在水平和垂直兩個方向迭代計算曲線上的采樣點。在迭代過程中會出現(xiàn)導(dǎo)數(shù)為0的情況,例如對于水平方向上的迭代過程x +1 =x + f^y\
f 0 ,少)如果在迭代計算過程中沒有遇到f1 (xn, y)為0的情況,求根收斂的過程會非常的快,一般至多三次迭代就可以得到最后的結(jié)果??紤]到浮點數(shù)的精度問題,如果出現(xiàn)PUn,y)為0的情況,該點相當(dāng)接近奇異點,可以通過f(xn,y)確定最后的取舍情況。當(dāng)兩個像素之間的距離為d的時候,牛頓迭代求根的精度只要在d/100即可滿足繪制的要求。在反走樣過程中,對之前所得到的曲線上的采樣點直接做反走樣,根據(jù)之前掃描線的方向來減少采樣點之間相互覆蓋的重復(fù)計算。對于在垂直方向上的采樣點,如果線寬為d個像素。對于每個采樣點計算上方
到p」范圍內(nèi),左右各取個像素。結(jié)合圖6,圖6a所示的a區(qū)域。計算像
素到采樣點的距離,確定像素的灰度值。采樣點下方b區(qū)域的像素也同樣的計算得到。中間灰色區(qū)域認(rèn)為被完全覆蓋,直接填充。對于其他的區(qū)域,由于相鄰的采樣點(深灰色點)也會有同樣的計算,所以不用完全計算整個圓形區(qū)域。本質(zhì)上,只需要對每個垂直采樣點計算如圖6b所示的扇形區(qū)域,就可以得到完整的反走樣效果。對于水平掃描線,需要計算的區(qū)域變成圓形區(qū)域的左右兩個區(qū)域。這個方法雖然仍然有重復(fù)計算的問題,但是能夠有效避免在拐角位置的缺口問題。
將本實施例的方法應(yīng)用 于部分平面隱式代數(shù)曲線的光柵化效果可參見圖7。圖7顯示了六類平面隱式代數(shù)曲線的光柵化結(jié)果。其中各個部分代數(shù)曲線的表達式如下7a y4-x3 = 0 ;7b y4-x2y2+xy2~x3 = 0 ;7c x3+3x2y2_x2+y2 = 0 ;7d 4x4-4x2+y2 = 0 ;7e 3y4-5y3+x2 = 0 ;7f jA-x2 = O0本發(fā)明的方法不僅能夠快速的繪制隱式代數(shù)曲線,而且能夠通過牛頓迭代得到高質(zhì)量的曲線,保證曲線的光順性;避免了復(fù)雜的子結(jié)式和高次方程求根問題的數(shù)值計算過程,便于實時繪制曲線;在計算的過程中給出特征區(qū)域的連接關(guān)系,得到曲線的分段直線逼近,能夠保證曲線在像素精度下的正確性。
權(quán)利要求
1.一種基于像素精度的代數(shù)曲線光柵化方法,其特征在于,包括以下步驟 (1)輸入待繪制的代數(shù)曲線及其相關(guān)信息; (2)將該曲線的特征點限制在ー個像素范圍內(nèi),得到若干包含曲線特征點的特征區(qū)域; (3)求得曲線與所述特征區(qū)域邊界的交點,通過所述的交點構(gòu)建曲線在特征區(qū)域的拓?fù)溥B接信息; (4)根據(jù)特征區(qū)域邊界的交點確定曲線的走向,利用直線段連接相鄰的特征區(qū)域,得到直線段擬合曲線;所述的直線段通過特征區(qū)域邊界的交點; (5)對所述的直線段擬合曲線進行優(yōu)化,繪制并顯示曲線。
2.如權(quán)利要求I所述的代數(shù)曲線光柵化方法,其特征在于,步驟(2)中,所述的將該曲線的特征點限制在一個像素范圍內(nèi),得到若干包含曲線特征點的特征區(qū)域,包括步驟 (2. I)均勻細分該曲線的區(qū)域,得到細分后的子區(qū)域; (2. 2)利用區(qū)間分析的方法確定每個子區(qū)域的值域范圍;判斷每個子區(qū)域內(nèi)是否存在該曲線的特征點,若存在則繼續(xù)細分該子區(qū)域; (2. 3)重復(fù)步驟(2. 2),直到包含特征點的子區(qū)域的區(qū)域面積小于ー個像素;將該子區(qū)域作為所述的特征區(qū)域。
3.如權(quán)利要求I所述的代數(shù)曲線光柵化方法,其特征在于,步驟(3)中,所述的求得曲線與所述特征區(qū)域邊界的交點,包括步驟 (3. I)以所述的特征區(qū)域為中心,用若干像素面積已知的包圍盒包圍每個特征區(qū)域; (3. 2)通過單變量方程計算出曲線和包圍盒的交點作為曲線與所述特征區(qū)域邊界的交點。
4.如權(quán)利要求I所述的代數(shù)曲線光柵化方法,其特征在于,步驟(4)中,所述的利用直線段連接相鄰的特征區(qū)域后,包括步驟 (4. I)檢測所有直線段所占像素是否超過某ー預(yù)設(shè)的像素值;若否,則直接得到所述的直線段擬合曲線,若是,則執(zhí)行以下步驟; (4. 2)對超過該像素值的直線段所在的區(qū)間進行掃描,求得掃描線與該區(qū)間內(nèi)曲線的交點; (4. 3)將上述直線段拆分為通過區(qū)間內(nèi)交點的若干直線段;所述的區(qū)間內(nèi)交點包括所述特征區(qū)域邊界的交點以及掃描線與該區(qū)間內(nèi)曲線的交點;重復(fù)步驟(4. I) (4. 3)。
5.如權(quán)利要求I或4所述的代數(shù)曲線光柵化方法,其特征在于,步驟(5)中,所述的對所述的直線段擬合曲線進行優(yōu)化,包括步驟 (5. I)獲取擬合曲線直線段的斜率; (5. 2)根據(jù)直線段的斜率,選用垂直掃描線或/和水平掃描線對直線段所在區(qū)間的曲線進行掃描,掃描線與該曲線的交點作為采樣點的初始值; (5. 3)基于采樣點的初始值,通過牛頓迭代算法求出掃描方向上最鄰近的根,牛頓迭代算法的終止條件為求根精度滿足預(yù)設(shè)的像素精度繪制要求。
6.如權(quán)利要求I 4任一項所述的代數(shù)曲線光柵化方法,其特征在于,步驟(5)中,所述的繪制并顯示曲線,包括步驟 結(jié)合反走樣技術(shù)繪制并顯示曲線。
7.如權(quán)利要求5所述的代數(shù)曲線光柵化方法,其特征在于,步驟(5)中,所述的繪制并顯示曲線,包括步驟 對所得到曲線的采樣點做反走樣處理,根據(jù)處理得到的像素灰度值顯示曲線。
8.如權(quán)利要求7所述的代數(shù)曲線光柵化方法,其特征在于,所述的對所得到曲線的采樣點做反走樣處理,包括步驟 以預(yù)先設(shè)定像素半徑的圓表示所述的采樣點,計算該圓覆蓋像素面積的百分比,得到像素的灰度值。
全文摘要
本發(fā)明公開了一種基于像素精度的代數(shù)曲線光柵化方法,包括步驟輸入待繪制的代數(shù)曲線及其相關(guān)信息;將該曲線的特征點限制在一個像素范圍內(nèi),得到若干包含曲線特征點的特征區(qū)域;求得曲線與所述特征區(qū)域邊界的交點,通過所述的交點構(gòu)建曲線在特征區(qū)域的拓?fù)溥B接信息;根據(jù)特征區(qū)域邊界的交點確定曲線的走向,利用直線段連接相鄰的特征區(qū)域,得到直線段擬合曲線;所述的直線段通過特征區(qū)域邊界的交點;以及,對所述的直線段擬合曲線進行優(yōu)化,繪制并顯示曲線。本發(fā)明能夠通過牛頓迭代得到高質(zhì)量的曲線,保證曲線的光順性;避免了復(fù)雜的子結(jié)式和高次方程求根問題的數(shù)值計算過程,便于實時繪制曲線。
文檔編號G06T11/00GK102651137SQ20121009445
公開日2012年8月29日 申請日期2012年4月1日 優(yōu)先權(quán)日2012年4月1日
發(fā)明者馮結(jié)青, 黃錦基 申請人:浙江大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
武威市| 高邮市| 甘孜县| 红桥区| 茶陵县| 西乌珠穆沁旗| 通辽市| 衡南县| 清镇市| 阿城市| 门源| 镇安县| 轮台县| 宣恩县| 阿拉善左旗| 宁蒗| 霍山县| 垣曲县| 建水县| 乌拉特后旗| 商水县| 崇左市| 虹口区| 浏阳市| 高要市| 冀州市| 阿荣旗| 陕西省| 金乡县| 广州市| 平乐县| 龙游县| 文水县| 象州县| 城市| 明溪县| 呼玛县| 手游| 孝昌县| 汉沽区| 武陟县|