專利名稱:對(duì)表示一個(gè)對(duì)象的二維距離場(chǎng)的一個(gè)區(qū)域進(jìn)行反鋸齒的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及計(jì)算機(jī)圖形學(xué)領(lǐng)域,并且尤其涉及由距離場(chǎng)表示的二維對(duì)象的渲染。
背景技術(shù):
在計(jì)算機(jī)圖形學(xué)領(lǐng)域,二維對(duì)象的渲染(rendering)是十分重要的。二維對(duì)象,如字符形狀、企業(yè)標(biāo)志以及包含在文檔中的圖例元素,都是作為靜態(tài)圖像或是作為組成一個(gè)動(dòng)畫的一系列幀進(jìn)行渲染的。二維對(duì)象有多種表示方法,并且常常會(huì)出現(xiàn)這樣一種情況,即對(duì)于特定的操作如渲染與編輯,一種表示方法要優(yōu)于其他的表示方法。在這種情況下,就要進(jìn)行從一種形式到另一種形式的轉(zhuǎn)換。
盡管此處我們關(guān)注數(shù)字的字型(type),這可能是最常見最重要的二維對(duì)象了,但是下列說明適用于所有類型的二維對(duì)象。
我們從數(shù)字字型的一些基礎(chǔ)背景開始。一種典型的拉丁字體族,如Times New Roman或Arial,包括一組字體(font),比如常規(guī)、斜體、粗體或粗斜體。每種字體包括一組單獨(dú)的字符形狀,稱為字形(glyphs)。每種字形由它不同的設(shè)計(jì)特征來區(qū)分,比如基本的幾何形狀、筆畫濃度、襯線、連筆形式、布局以及輪廓、薄-厚筆畫的比例,以及尺寸。
有多種方法可用來表示字體,包括位圖、輪廓線,比如Type1[Adobe Systems,Inc.1990]和Truetype[Apple Computer,Inc.1990],以及過程字體,比如Knuth的Metafont,其中輪廓線起主導(dǎo)作用?;谳喞€的表示方法被Mass.Cambridge的Bitstream Inc.、Calif.Mountain View的Adobe System,Inc.、Calif.Cupertino的AppleComputer,Inc.、Wash.Bellevue的Microsoft Corporation、德國(guó)Hamburg的URW以及Mass Wilmington的Agfa Compugraphic采用并推廣。
由Hersch所著并發(fā)表于Cambridge University Press,1993的“Visual and Technical Aspects of Type(字體的視覺與技術(shù)觀點(diǎn))”以及由Knuth所著并發(fā)表于Digital Press,Bedford,MA 1979的“TEXand METAFONTNew Directions in Typesetting(TEX與元字形排版的新方向)”中,包含了大量關(guān)于字體的歷史與科學(xué)的評(píng)論。
具有特殊重要性的是兩類字型尺寸正文字型尺寸和顯示字型尺寸。正文字型的字體以相對(duì)較小的磅值渲染,如14磅或更小,并且被使用在一個(gè)文檔的主體(正文)部分中,就像在本段落中一樣。正文字型要求高質(zhì)量的渲染,以獲得清晰度和閱讀舒適度。正文字型的尺寸、字樣以及基線方向在單篇文檔中很少改變。
顯示字型的字體以相對(duì)較大的磅值渲染,如36磅或更高,并且被用于標(biāo)題、頭條、以及為表達(dá)情緒或引起注意的設(shè)計(jì)及廣告中。與正文字型不同,顯示字型注重美觀,缺少空域及時(shí)域上的鋸齒(aliasing)是重要的,而非清晰度,其中對(duì)比度比反鋸齒(antialising)更重要。用來表示及渲染字型的框架應(yīng)該能夠處理好這兩種具有相互沖突的需求的類型,這一點(diǎn)是至關(guān)重要的。
字型可以以二值、灰度或彩色的形式被提供給一個(gè)輸出裝置,比如打印機(jī)或顯示器。某些渲染引擎為非常小的字型尺寸使用二值渲染,以達(dá)到較好的對(duì)比度。然而,具有良好提示的灰度字體是同樣清楚可辨別的。
“提示”是與每種字形存儲(chǔ)在一起的一組規(guī)則或過程,用以規(guī)定在渲染過程中如何修改字形的輪廓線,以保持對(duì)稱性、筆畫濃度之類的特性,以及一種字體中所有字形的統(tǒng)一外觀。
盡管人們已經(jīng)嘗試設(shè)計(jì)自動(dòng)和半自動(dòng)的提示系統(tǒng),但是提示過程仍然是新字體設(shè)計(jì)以及轉(zhuǎn)換現(xiàn)有字體以供低分辨率顯示設(shè)備使用中的主要瓶頸。另外,解釋提示規(guī)則的復(fù)雜性導(dǎo)致不能運(yùn)用硬件進(jìn)行字體渲染。缺少硬件支持,就不得不在軟件光柵化的過程中作出折衷,比如每個(gè)象素使用更少的樣值,特別是在實(shí)時(shí)地生成動(dòng)態(tài)字型時(shí)。
灰度字體渲染通常包含某些形式的反鋸齒。反鋸齒(Antialising)是一種處理過程,它能消除二值字體中出現(xiàn)的鋸齒邊緣或階梯效應(yīng)。盡管有多種字體渲染引擎都適合使用,但是大部分都會(huì)在網(wǎng)格裝配及提示之后以每象素4或16個(gè)采樣值進(jìn)行過采樣,隨后分別以2×2或4×4的箱式濾波器進(jìn)行下采樣。
基本的濾波,如箱式濾波(box filtering),出于渲染速度的需要而是必要的。但是,即使是那種方法,對(duì)于實(shí)時(shí)渲染(如動(dòng)態(tài)字型所需的那樣)而言常常也是太慢的,從而經(jīng)過渲染的字形會(huì)帶有空域或時(shí)域上的鋸齒。
印刷術(shù)的兩個(gè)重要發(fā)展趨勢(shì)揭示了現(xiàn)有技術(shù)的字體表示方法的某些固有局限性,由此提出了變革的需求。
第一種趨勢(shì)是越來越多地強(qiáng)調(diào)在屏幕上閱讀文本,這種趨勢(shì)是由計(jì)算機(jī)在辦公室中的主角地位、家庭互聯(lián)網(wǎng)瀏覽普及程度的提高以及PDA與其他手持電子設(shè)備的廣泛使用共同引起的。這些顯示設(shè)備通常具有每英寸72-100點(diǎn)的分辨率,這種分辨率顯著低于印刷設(shè)備的分辨率。
在對(duì)字型進(jìn)行光柵化時(shí),這種低分辨率需要特殊對(duì)待以保證閱讀舒適度和清晰度,比如Microsoft與Bitstream公司在他們各自的ClearType與FontFusion技術(shù)中投入使用的資源就證明了這一點(diǎn)。
第二種趨勢(shì)是動(dòng)態(tài)字型(animated type)或動(dòng)態(tài)印刷術(shù)的使用。動(dòng)態(tài)字型被用來表達(dá)情感、增添趣味性以及在視覺上吸引讀者的注意。動(dòng)態(tài)字型的重要性由它在電視及互聯(lián)網(wǎng)廣告中的廣泛使用即可見一斑。
不幸的是,傳統(tǒng)的基于輪廓線的字體在這兩個(gè)領(lǐng)域內(nèi)都有局限性。在低分辨率顯示器上渲染字體需要仔細(xì)對(duì)待,以便平衡對(duì)良好對(duì)比度的要求以及降低空域和/或時(shí)域鋸齒的要求,前者是清晰度所需,后者則是閱讀舒適度所需。
如上所述,基于輪廓線的字體通常會(huì)被提示,以向渲染引擎提供指示,從而獲得最佳外觀。字體提示是煞費(fèi)勞力且成本高昂的。例如,為日文或中文字體開發(fā)一套具有完善提示的字體圖案可能要耗費(fèi)數(shù)年時(shí)間,這兩種字體中可能包含了超過一萬種的字形。由于提示的焦點(diǎn)在于改善正文字型的渲染質(zhì)量,因此這種提示對(duì)于放置在任意路徑上的字型以及對(duì)于動(dòng)態(tài)字型來說將會(huì)是效果不佳的。
盡管高質(zhì)量的濾波可以被用來反鋸齒化靜態(tài)文檔中的灰度字型,其中這種文檔中只含有有限數(shù)量的字體尺寸和字體圖案,但是在動(dòng)態(tài)字型中進(jìn)行濾波往往會(huì)受到實(shí)時(shí)渲染要求的限制。
發(fā)明內(nèi)容
本發(fā)明提供了對(duì)表示一個(gè)對(duì)象的一個(gè)二維距離場(chǎng)的一個(gè)區(qū)域進(jìn)行反鋸齒的方法及裝置。所述二維距離場(chǎng)被劃分成多個(gè)單元,其中每個(gè)單元包括一種在該單元內(nèi)重建所述二維距離場(chǎng)的方法。識(shí)別與所述區(qū)域相關(guān)聯(lián)的所述二維距離場(chǎng)的一個(gè)單元集合,并且定位與所述區(qū)域相關(guān)聯(lián)的一個(gè)象素集合。對(duì)于每個(gè)象素,指定一個(gè)成分集合。對(duì)于每個(gè)成分,根據(jù)所述單元集合確定一個(gè)距離,然后將該距離映射成所述象素成分的反鋸齒強(qiáng)度。
在本發(fā)明的一方面內(nèi)容中,所述的二維距離場(chǎng)是一種自適應(yīng)采樣的距離場(chǎng)。
在本發(fā)明的另一方面內(nèi)容中,所述距離是根據(jù)所述單元集合的單個(gè)采樣確定的,以提供所述對(duì)象的高效、高質(zhì)量的反鋸齒。
在本發(fā)明的另一方面內(nèi)容中,基于距離的自適應(yīng)過采樣提供了所述對(duì)象的最優(yōu)、高效、高質(zhì)量反鋸齒。
在本發(fā)明的另一方面內(nèi)容中,基于距離的自動(dòng)提示提供了所述對(duì)象的高質(zhì)量反鋸齒。
在本發(fā)明的另一方面內(nèi)容中,基于距離的網(wǎng)格裝配提供了所述對(duì)象的高質(zhì)量反鋸齒。
在本發(fā)明的另一方面內(nèi)容中,所述象素成分的獨(dú)立可尋址性被充分利用,以提供所述對(duì)象反鋸齒的有效分辨率的改進(jìn)。
圖1A與1B示出了現(xiàn)有技術(shù)下字形的距離場(chǎng)表示的框圖;圖2A與2B根據(jù)本發(fā)明的優(yōu)選實(shí)施例示出了距離場(chǎng)表示的框圖;圖3根據(jù)本發(fā)明的優(yōu)選實(shí)施例示出了距離場(chǎng)的一個(gè)雙二次單元的框圖;圖4根據(jù)本發(fā)明示出了一種用來按圖像順序反鋸齒一個(gè)對(duì)象的方法的流程圖;圖5示出了本發(fā)明所使用的一種線性濾波器的圖;圖6A、6B及6C示出了一個(gè)象素成分附近的采樣的示意圖;圖7根據(jù)本發(fā)明示出了一種用來按對(duì)象順序反鋸齒一個(gè)對(duì)象的方法的流程圖;圖8根據(jù)本發(fā)明示出了一種用于基于距離的自動(dòng)提示的方法的流程圖;圖9根據(jù)本發(fā)明示出了一種用來將一個(gè)筆畫轉(zhuǎn)換成一個(gè)距離場(chǎng)的方法的流程圖;圖10根據(jù)本發(fā)明示出了用來將一個(gè)二維對(duì)象轉(zhuǎn)換成一個(gè)距離場(chǎng)的方法的流程圖;圖11根據(jù)本發(fā)明示出了用來將一個(gè)距離場(chǎng)轉(zhuǎn)換成邊界描述符的方法的流程圖;圖12根據(jù)本發(fā)明示出了用來動(dòng)態(tài)化一個(gè)對(duì)象的方法的流程圖;以及圖13根據(jù)本發(fā)明示出了用來生成一個(gè)包含有一個(gè)二維對(duì)象的一角的單元中的二維距離場(chǎng)的方法的流程圖。
具體實(shí)施例方式
字形的距離場(chǎng)表示我們的發(fā)明將一個(gè)閉合的二維形狀S——如字形、企業(yè)標(biāo)志或一個(gè)對(duì)象的任何數(shù)字化表示形式——表示為一個(gè)二維的有符號(hào)距離場(chǎng)D。為了我們的說明目的,我們借助于字形。
通俗地說,一種字形的距離場(chǎng)度量了從場(chǎng)中任意一點(diǎn)到字形邊緣的最短距離,其中如果所述點(diǎn)位于所述字形之外,那么所述距離的符號(hào)就是負(fù)的,而如果所述點(diǎn)位于字形之內(nèi),則所述距離的符號(hào)就是正的。邊緣上的點(diǎn)距離為零。
正式地說,距離場(chǎng)是作用于所有p∈R2的一種映射DR2→R,從而使得D(p)=sign(p)·min{‖p-q‖對(duì)于所有位于零等值面上的點(diǎn)q,即S的邊緣},sign(p)={-1,如果p在S之外;+1,如果p在S之內(nèi)},并且‖·‖為歐幾里得范數(shù)。
現(xiàn)有技術(shù)基于覆蓋的渲染方法使用單個(gè)離散的樣點(diǎn)來表示每個(gè)象素,即使在所述的樣點(diǎn)充分靠近輪廓線時(shí),這種方法也可能完全弄錯(cuò)字形。被渲染的字形有鋸齒狀邊緣以及漏失的部分,這兩者都是空域鋸齒的表現(xiàn)形式。如果所述的字形被動(dòng)態(tài)化,那么時(shí)域鋸齒就會(huì)導(dǎo)致閃爍的輪廓和鋸齒狀的邊緣,它們?cè)谶\(yùn)動(dòng)期間就像“蠕動(dòng)”一樣。對(duì)每個(gè)象素采用額外的樣點(diǎn)以形成一種反鋸齒的渲染,這樣做可以消除這些鋸齒效應(yīng),但是要達(dá)到可接受的結(jié)果需要許多樣點(diǎn)。
相反,即使當(dāng)樣點(diǎn)位于形狀之外時(shí),根據(jù)我們的發(fā)明的連續(xù)采樣距離值也能表示出字形的近似。實(shí)際上,單個(gè)樣點(diǎn)值可以被用來估算有多少字形位于以各個(gè)象素為中心的濾波器覆蓋范圍之內(nèi)。
另外,由于距離場(chǎng)平緩地變化,即它是C0連續(xù)的,因此采樣值會(huì)隨字形運(yùn)動(dòng)而緩慢變化,從而減少了時(shí)域鋸齒成分。
距離場(chǎng)還擁有其他優(yōu)點(diǎn)。由于它們是一種隱式的表示方法,因此它們享有隱函數(shù)的好處。具體地說,距離場(chǎng)提供了一種用于設(shè)計(jì)字體的直觀界面。例如,字形的個(gè)別部分,如直筆、橫筆、弧形筆畫或襯線可以分別獨(dú)立設(shè)計(jì)。在設(shè)計(jì)之后,所述的部分就可以利用隱式組合方法組合在一起,以構(gòu)成相同字體圖案的不同字形。
距離場(chǎng)在動(dòng)態(tài)排版術(shù)或動(dòng)態(tài)字型領(lǐng)域還能提供許多好處,因?yàn)榫嚯x場(chǎng)所提供的信息對(duì)于模擬對(duì)象間的互動(dòng)是非常重要的。
在一種優(yōu)選實(shí)施例中,我們采用自適應(yīng)采樣的距離場(chǎng),即ADF,參見美國(guó)專利6396492號(hào),F(xiàn)risken、Perry及Jones的“Detail-directedhierarchical distance fields(面向細(xì)節(jié)的分級(jí)距離場(chǎng))”,此處通過引用包含進(jìn)來。
ADF是距離場(chǎng)的有效數(shù)字表示法。ADF運(yùn)用面向細(xì)節(jié)的采樣以減少表示距離場(chǎng)所需的樣點(diǎn)數(shù)。所述的樣點(diǎn)被存儲(chǔ)在單元的空域分級(jí)結(jié)構(gòu)中,如四叉樹中,以便進(jìn)行高效的處理。另外,ADF還提供了用來根據(jù)采樣值重建距離場(chǎng)的方法。
面向細(xì)節(jié)的或自適應(yīng)的采樣根據(jù)場(chǎng)內(nèi)的局部變化對(duì)距離場(chǎng)采樣當(dāng)局部變動(dòng)大時(shí)使用更多的樣點(diǎn),而在局部變動(dòng)小時(shí)使用較少的樣點(diǎn)。與常規(guī)采樣的距離場(chǎng)以及三色四叉樹相比,自適應(yīng)采樣顯著降低了對(duì)存儲(chǔ)器的需求,常規(guī)采樣以均勻的速率采樣整個(gè)距離場(chǎng),而三色四叉樹則總是在邊緣附近以最高速率采樣。
圖1A-1B對(duì)用三色四叉樹表示Times Roman的‘a(chǎn)’和‘D’所需的單元數(shù)量與用圖2A-2B中的雙二次ADF表示相同精度所需的單元數(shù)量進(jìn)行了比較。單元數(shù)量與存儲(chǔ)需求直接相關(guān)。兩種四叉樹都具有相當(dāng)于512×512的距離值圖像的分辨率。用于表示‘a(chǎn)’和‘D’的三色四叉樹分別具有17393和20813個(gè)單元,而相應(yīng)的雙二次ADF只有457和399個(gè)單元。雙二次ADF通常所需的單元數(shù)比Frisken等人提出的現(xiàn)有技術(shù)的雙線性表示方法少5-20倍,這一點(diǎn)在“Adaptively SampledDistance Fieldsa General Representation of Shape for ComputerGraphics(自適應(yīng)采樣的距離場(chǎng)用于計(jì)算機(jī)圖形學(xué)的通用圖形表示法)”中有所說明,該文發(fā)表于Proceedings ACM SIGGRAPH 2000,pp.249-254,2000。
雙二次重建方法Frisken等人利用四叉樹作為ADF空域分級(jí)結(jié)構(gòu),并根據(jù)在每個(gè)單元的四個(gè)角上采樣的距離、通過雙線性內(nèi)插在每個(gè)單元內(nèi)重建距離及梯度。他們提出“更高階的重建方法可以被用來進(jìn)一步提高壓縮率,但是所述數(shù)字已經(jīng)表明額外努力所換得的回報(bào)開始減小”。
然而,雙線性ADF對(duì)于本發(fā)明所述的表現(xiàn)、渲染、編輯以及動(dòng)態(tài)化字符字形而言還是不夠用的。具體地說,它們需要過多的存儲(chǔ)器,處理效率太低,并且在非邊緣單元中的重建場(chǎng)的質(zhì)量對(duì)動(dòng)態(tài)模擬之類的操作來說是不夠的。
一種“有界表面”方法可以強(qiáng)制在非邊緣單元中進(jìn)行細(xì)分,它要求處在距離所述表面(即邊緣)一個(gè)有界距離內(nèi)的非邊緣單元通過一項(xiàng)誤差判定測(cè)試,參見Perry等人所著的“KizamuA System forSculpting Digital Characters(Kizamu一種用于塑造數(shù)字字符的系統(tǒng))”,該文發(fā)表于Proceedings ACM SIGGRAPH 2001,pp.47-56,2001。盡管上述方法減少了該有界區(qū)域內(nèi)距離場(chǎng)的誤差,但我們發(fā)現(xiàn)對(duì)于雙線性ADF來說,那種方法會(huì)導(dǎo)致無法容忍的單元數(shù)量增加。
為了應(yīng)對(duì)那些局限性,我們用雙二次重建方法替代了雙線性重建方法。典型字形的雙二次ADF所需要的單元比雙線性ADF少5-20倍。當(dāng)我們要求在非邊緣單元中得到精確的距離場(chǎng)以便進(jìn)行動(dòng)態(tài)模擬和動(dòng)態(tài)化字型這樣的操作時(shí),所需單元數(shù)就出現(xiàn)了更高的減少量。
這種顯著的存儲(chǔ)量減少使得一個(gè)典型動(dòng)畫所需的字形能夠被存入現(xiàn)代CPU的片上高速緩存中。這對(duì)處理時(shí)間有著驚人的影響,因?yàn)閷?duì)系統(tǒng)存儲(chǔ)器的訪問基本上被排除了,這樣就輕易地補(bǔ)償了高階重建方法所需的額外計(jì)算。
圖3根據(jù)我們的優(yōu)選實(shí)施例示出了一個(gè)雙二次ADF單元300。雙二次ADF中的每個(gè)單元包含9個(gè)距離值301。點(diǎn)(x,y)302處的距離與梯度都可以根據(jù)下列方程1-3由這9個(gè)距離值重建出來。
有多種雙二次重建方法可供使用。我們采用二變量?jī)?nèi)插多項(xiàng)式,它能保證沿同樣大小的相鄰單元的公共邊緣的C0連續(xù)性。與使用雙線性方法一樣,不同大小的相鄰單元之間距離場(chǎng)的連續(xù)性是利用誤差判定來維持在一個(gè)規(guī)定容限內(nèi)的。所述的誤差判定在ADF生成期間控制單元的細(xì)分,參見上述Perry等人的著作。
點(diǎn)(x,y)302處的距離與梯度如下確定,其中x和y都是用單元坐標(biāo)表示的,即(x,y)∈
×令xv1=x-0.5且xv2=x-1
令yv1=y(tǒng)-0.5且yv2=y(tǒng)-1令bx1=2xv1·xv2、bx2=-4x·xv2且bx3=2x·xv1令by1=2yv1·yv2、by2=-4y·yv2且by3=2y·yv1dist=by1·(bx1·d1+bx2·d2+bx3·d3)+by2·(bx1·d4+bx2·d5+bx3·d6)+ (1)by3·(bx1·d7+bx2·d8+bx3·d9)gradx=-[by1·(4x·(d1-2d2+d3)-3d1-d3+4d2)+by2·(4x·(d4-2d5+d6)-3d4-d6+4d5)+ (2)by3·(4x·(d7-2d8+d9)-3d7-d9+4d8)]grady=-[(4y-3)·(bx1·d1+bx2·d2+bx3·d3)-(8y-4)·(bx1·d4+bx2·d5+bx3·d6)+ (3)(4y-1)·(bx1·d7+bx2·d8+bx3·d9)]利用浮點(diǎn)運(yùn)算重建一個(gè)距離可能需要約35次浮點(diǎn)操作(flops),而利用浮點(diǎn)運(yùn)算重建一個(gè)梯度則需要約70flops。由于我們的重建方法不包含分支,并且字形可以完全存放在一個(gè)片上高速緩存中,因此我們就可以通過利用特殊的CPU指令以及現(xiàn)代CPU的深指令流水線來進(jìn)一步優(yōu)化這些重建方法。另外,我們還可以利用定點(diǎn)運(yùn)算來重建距離與梯度。
用于傳輸及存儲(chǔ)的壓縮線性四叉樹ADF四叉樹的空域分級(jí)結(jié)構(gòu)是某些處理過程(如沖突檢測(cè))所需要的,但是對(duì)于其他處理,比如下文中將要說明的基于單元的渲染來說卻不是必要的。
要為ADF字形的傳輸及存儲(chǔ)提供壓縮,我們采用一種線性四叉樹結(jié)構(gòu),該結(jié)構(gòu)將我們的雙二次ADF存儲(chǔ)為一個(gè)葉單元列表。該樹狀結(jié)構(gòu)可以根據(jù)需要由所述的葉單元恢復(fù)出來。
線性ADF四叉樹中的每個(gè)葉單元中包括該單元的x和y位置,每個(gè)位置用2個(gè)字節(jié)表示,該單元的級(jí)別用1個(gè)字節(jié)表示,單元中心處的距離值用2個(gè)字節(jié)表示,以及8個(gè)距離中心的距離偏移量各用1個(gè)字節(jié)表示,每個(gè)單元總共15個(gè)字節(jié)。
各個(gè)距離偏移量是通過從中心距離值中減去其對(duì)應(yīng)的樣點(diǎn)的距離值、用單元大小進(jìn)行比例縮放以減小量化誤差、再截取成8個(gè)比特,從而得到的。表示每個(gè)單元位置的兩個(gè)字節(jié)以及表示單元級(jí)別的一個(gè)字節(jié)可以以高達(dá)216×216的分辨率表示ADF。這對(duì)于表示在顯示屏分辨率下渲染的字形來說是足夠了。
字形能夠用16比特的距離值精確表示。將8個(gè)距離值編碼成8比特的距離偏移量比各用兩個(gè)字節(jié)存儲(chǔ)每個(gè)值要節(jié)省的多。盡管在理論上,這樣做可能會(huì)導(dǎo)致大單元的距離場(chǎng)中出現(xiàn)一些誤差,但我們還未發(fā)現(xiàn)任何視覺效果上的退化。
一個(gè)高分辨率的字形通常需要500-1000個(gè)葉單元。無損熵編碼可以額外得到35-50%的壓縮。因此,高分辨率ADF的整個(gè)字體圖案可以用300-500Kbytes表示出來。如果只需要正文字型或者目標(biāo)分辨率比較粗糙,就像用于移動(dòng)電話的情況,那么就可以使用僅需1/4至1/2單元數(shù)的低分辨率ADF。
這些存儲(chǔ)量顯著小于灰度位圖字體,并且與帶有良好提示的基于輪廓線的字體的存儲(chǔ)量相當(dāng),所述灰度位圖字體的每種字體圖案的每個(gè)點(diǎn)尺寸需要約0.5Mbytes。TrueType字體的大小從數(shù)十Kbytes到數(shù)十Mbytes不等,取決于字形數(shù)量以及提示方法的數(shù)量。Arial和Times New Roman是Monotype Corporation的兩種具有良好提示的字體,它們分別需要266Kbytes和316Kbytes。
從輪廓線實(shí)時(shí)生成根據(jù)我們的發(fā)明,ADF可以根據(jù)已有的輪廓線或邊界描述符(比如Bezier曲線)利用Perry等人所述的平鋪生成器快速地生成,下文中將對(duì)此進(jìn)行詳細(xì)的說明。到字形輪廓線或邊界的最小距離可以利用Bezier裁剪高效地計(jì)算出來,參見Sederberg等人所著的“GeometricHermite Approximation of Surface Patch Intersection Curves(曲面交線的幾何赫爾米特近似)”,該文發(fā)表于CAGD,8(2),pp.97-114,1991。
在2GHz Pentium IV處理器上生成每個(gè)字形需要0.04-0.08秒。整套字體圖案可以在大約4秒內(nèi)生成。由于不需要傳統(tǒng)的提示,生成ADF所需的邊界描述符遠(yuǎn)遠(yuǎn)小于它們相應(yīng)的有提示的對(duì)應(yīng)物。
因此,我們可以存儲(chǔ)這些最小輪廓線,并根據(jù)需要由這些輪廓線動(dòng)態(tài)地生成ADF字形,而不是存儲(chǔ)ADF。這些最小輪廓線的小尺寸對(duì)于存儲(chǔ)空間有限的設(shè)備以及在有限帶寬的網(wǎng)絡(luò)上傳輸字形的應(yīng)用來說是很重要的。
圖10示出了用于將二維對(duì)象(比如字形)轉(zhuǎn)換成二維距離場(chǎng)的方法1000。對(duì)象1001被表示成一組邊界描述符(比如曲線spline)和一個(gè)填充規(guī)則(比如一種奇偶規(guī)則或非零環(huán)繞規(guī)則)。
所述的一組邊界描述符首先經(jīng)過預(yù)處理1010。該預(yù)處理過程對(duì)邊界描述符進(jìn)行細(xì)分以減小它們的空間跨度。所述的邊界描述符還可以被接合起來以減小邊界描述符組的基數(shù)。該預(yù)處理過程使得我們可以在確定無符號(hào)距離時(shí)減少為每個(gè)位置查詢所需的邊界描述符數(shù)量,這將在下文中說明。
根據(jù)經(jīng)過預(yù)處理的邊界描述符組1011構(gòu)建1020一個(gè)空域分級(jí)結(jié)構(gòu)1021,比如一棵四叉樹。交點(diǎn)(intersections)的高速緩存1031被初始化1030。交點(diǎn)的高速緩存1031中儲(chǔ)存邊界描述符與一組直線(比如距離場(chǎng)的水平線、垂直線、對(duì)角線等等)相交的位置,以及相交的方向。這樣做能夠去除決定無符號(hào)距離的符號(hào)時(shí)的冗余計(jì)算。可以根據(jù)間隔對(duì)這些交點(diǎn)排序。
然后在一組位置上查詢1040所述的空域分級(jí)結(jié)構(gòu)1021,以確定那些位置上的一組距離。該組距離被用來構(gòu)建一個(gè)二維距離場(chǎng)1041。所述的查詢?cè)诿總€(gè)位置上調(diào)用一個(gè)距離函數(shù),比如Bezier裁剪,以測(cè)定一個(gè)無符號(hào)的距離。交點(diǎn)的高速緩存、所述的位置以及所述填充規(guī)則都被用來為該距離決定一個(gè)符號(hào)。
通過基于組件的字體的壓縮適用于中文、日文以及韓文字體的有效壓縮可以通過使用FontFusion中所用的基于組件的表示法來實(shí)現(xiàn),所述的這些字體中可能包含10000或更多的字形。所述的表示法將字形分解成通用的筆畫和部首,即多種字形共用的復(fù)雜形狀,將這些筆畫和部首存儲(chǔ)到一個(gè)字體庫中,然后在字體渲染引擎中重新組合它們。
由于距離場(chǎng)是隱式表示法,因此可以利用混合或CSG操作輕易地組合ADF,由此也可見ADF是非常適合通過基于組件的方法進(jìn)行壓縮的。
在二維距離場(chǎng)中表示拐角雙線性或雙二次重建方法所用的面向細(xì)節(jié)的采樣允許ADF用較少數(shù)量的距離值來表示一個(gè)二維對(duì)象的邊界的相對(duì)平滑的部分。然而,在拐角附近,距離場(chǎng)有較大的變化,這些重建方法就不能很好地近似了。為了精確地表示拐角附近的距離場(chǎng),這些ADF要求包含拐角的單元被高度細(xì)分,從而顯著提高了存儲(chǔ)器需求。另外,ADF的最大細(xì)分層次限制了用雙線性及雙二次ADF單元表示拐角所能達(dá)到的精度,其中如Perry等人所述最大細(xì)分層次是在ADF生成期間施加的。
為了應(yīng)對(duì)這個(gè)問題,我們的發(fā)明提供了一種方法1300,該方法可以在含有二維對(duì)象(如字形)的拐角的單元內(nèi)生成一個(gè)二維距離場(chǎng)。
方法1300根據(jù)二維對(duì)象確定1310一個(gè)邊界描述符的有序集合1311,并根據(jù)邊界描述符1311的有序集合識(shí)別出1320一個(gè)單元內(nèi)的拐角點(diǎn)1321。然后該單元被劃分1330成兩個(gè)區(qū)域,最接近拐角的第一區(qū)域和最接近對(duì)象邊界的第二區(qū)域。方法1300還規(guī)定了1340一種重建方法以及一組采樣距離值1371,用于重建所述單元內(nèi)的距離場(chǎng),并且該方法將拐角點(diǎn)1321、界定區(qū)域的線條、重建方法以及采樣距離值集合1371儲(chǔ)存1380在一個(gè)存儲(chǔ)器中。
所述的重建方法根據(jù)某一點(diǎn)所在的區(qū)域來決定單元內(nèi)該點(diǎn)處的距離。第一區(qū)域內(nèi)一個(gè)查詢點(diǎn)的距離被定為從該查詢點(diǎn)到拐角點(diǎn)的距離。
為了確定第二區(qū)域內(nèi)的距離,我們將邊界描述符的有序集合1311劃分1350成兩個(gè)子集,一個(gè)子集中包含拐角點(diǎn)1321之前的邊界描述符,一個(gè)子集中包含拐角點(diǎn)1321之后的邊界描述符。然后,邊界描述符的每個(gè)子集被擴(kuò)充1360以形成一條將所述單元?jiǎng)澐殖蓛?nèi)部與外部?jī)蓚€(gè)部分的延長(zhǎng)曲線。對(duì)于每個(gè)部分來說,所述單元內(nèi)的距離場(chǎng)可以根據(jù)一組采樣距離值1371重建,所述一組采樣距離值1371是根據(jù)相應(yīng)的延長(zhǎng)曲線確定的1370。雙二次重建方法可能需要為所述的兩個(gè)部分各存儲(chǔ)9個(gè)距離值。
注意,所述的兩個(gè)內(nèi)部部分的相交形成了所述對(duì)象的拐角。因此,可以通過重建到第一內(nèi)部部分的距離以及到第二內(nèi)部部分的距離,然后再選取兩個(gè)確定距離中的較小者,來重建第二區(qū)域內(nèi)的距離。
所述的兩個(gè)區(qū)域可以根據(jù)通過拐角點(diǎn)的兩條有向直線來確定,所述的兩條直線各垂直于邊界描述符的兩個(gè)子集之一。每條直線都可以由拐角點(diǎn)以及在該拐角點(diǎn)處對(duì)應(yīng)的邊界描述符子集的外向法線決定。當(dāng)一條直線被如此確定后,我們就可以通過求出從查詢點(diǎn)到拐角點(diǎn)的向量與外向法線兩者的向量積來確定該查詢點(diǎn)位于該直線的哪一側(cè)。位于兩條線外側(cè)的點(diǎn)處在第一區(qū)域內(nèi),而位于任何一條線內(nèi)側(cè)的點(diǎn)則處在第二區(qū)域內(nèi)。
字體渲染在當(dāng)今的字體渲染引擎中,字體主要被表示為輪廓線,這些輪廓線可按需要被縮放以匹配所需的輸出尺寸。盡管大多數(shù)高分辨率打印機(jī)使用兩級(jí)渲染,但是現(xiàn)代顯示設(shè)備更多地在小點(diǎn)陣尺寸上使用灰度渲染或是灰度與兩級(jí)渲染的組合形式。
用于光柵化灰度字形的常見方法涉及縮放及提示它們的輪廓線。經(jīng)過縮放及提示的輪廓線被掃描轉(zhuǎn)換為高分辨率的圖像,通常比所需的分辨率高4或16倍。然后,通過施用一種濾波方法(比如箱式濾波器)來對(duì)該高分辨率圖像進(jìn)行下采樣,以產(chǎn)生最終的灰度圖像。
對(duì)于正文字型來說,單獨(dú)的字形可以被光柵化一次并作為一幅灰度位圖存儲(chǔ)在高速緩存中,以便在預(yù)處理步驟中再使用。對(duì)字形的子象素布局需要可能要求將被光柵化的每個(gè)字形的幾個(gè)版本。為正文字型使用高速緩存就可以在某些任務(wù)期間進(jìn)行短延時(shí)(如1/2秒)的更高質(zhì)量渲染,所述的任務(wù)可以是例如翻閱一份Adobe Acrobat PDF文檔。
然而,在任意路徑上渲染的字型以及動(dòng)態(tài)化的字形不允許使用高速緩存,因此必須根據(jù)需要來產(chǎn)生。實(shí)時(shí)渲染的需要要求必須使用分辨率較低的濾波,通常為每象素四個(gè)采樣點(diǎn)以及箱式濾波。這可能引起空域及時(shí)域的鋸齒。這種鋸齒可以利用系統(tǒng)存儲(chǔ)器中具有提示的設(shè)備字體來消除。然而,維持實(shí)時(shí)幀率對(duì)于如何使用具有提示的設(shè)備字體提出了嚴(yán)格的限制,比如說,具有提示的設(shè)備字體不能被動(dòng)態(tài)縮放或旋轉(zhuǎn)。
Microsoft最近在ClearType上的工作帶來了用于LCD彩色顯示器的特殊處理方法,在這種顯示器中含有可尋址彩色子象素的重復(fù)圖案,即成分(component)。Platt在“Optimal Filtering for PatternedDisplays(用于圖案化顯示器的最優(yōu)濾波)”一文中描述了一組用于各個(gè)顏色成分的感觀最優(yōu)濾波器,該文發(fā)表于IEEE Signal ProcessingLetters,7(7),pp.179-180,2000。在實(shí)際應(yīng)用中,所述的最優(yōu)濾波器被實(shí)現(xiàn)為一組三個(gè)移位箱式濾波器,每個(gè)濾波器用于一種顏色。
ClearType使用現(xiàn)有技術(shù)的基于覆蓋的反鋸齒方法,來決定每個(gè)象素的各個(gè)成分的強(qiáng)度。與此相對(duì),我們的基于距離場(chǎng)的方法使用距離場(chǎng)來決定每個(gè)象素的各個(gè)成分的強(qiáng)度,并且使用了較少的樣點(diǎn)。下文中所述的ADF反鋸齒方法可以取代箱式濾波器,來提供每象素更少樣點(diǎn)數(shù)的更好的最優(yōu)濾波器的模擬。
反鋸齒(Antialiasing)理解經(jīng)過渲染的字體中的外表成分需要對(duì)鋸齒有所認(rèn)識(shí)。通常,一個(gè)象素由離散的成分組成,比如彩色打印機(jī)或顯示器中的紅色、綠色及藍(lán)色成分。在一個(gè)灰度設(shè)備中,象素是單個(gè)離散成分。由于象素是離散的,因此將其呈現(xiàn)給輸出設(shè)備本質(zhì)上就是一個(gè)采樣過程。采樣率取決于設(shè)備的分辨率。采樣率至少是源信號(hào)中最高(奈奎斯特)頻率的兩倍,否則采樣信號(hào)就會(huì)出現(xiàn)鋸齒。
邊緣(比如字形輪廓線)具有無限的頻率分量。因此,邊緣不能由采樣數(shù)據(jù)準(zhǔn)確地表示出來。邊緣的采樣不足會(huì)導(dǎo)致鋸齒狀圖形,這種鋸齒狀會(huì)在運(yùn)動(dòng)圖像的采樣邊緣上蔓延。如果源信號(hào)也含有一種空域圖案,比如‘m’的重復(fù)垂直線或是‘i’的單根垂直線,其頻率成分對(duì)于采樣率來說太高了,那么采樣數(shù)據(jù)就會(huì)出現(xiàn)信號(hào)丟失、波紋圖案以及時(shí)域閃爍。
為了避免鋸齒,輸入信號(hào)必須經(jīng)過預(yù)濾波以去除超過采樣率所允許范圍的頻率成分。通常,有兩種方法進(jìn)行預(yù)濾波。
第一種稱為解析濾波。它在采樣前對(duì)源信號(hào)的連續(xù)表示形式進(jìn)行某種形式的空域平均。不幸的是,解析濾波常常是不可行的,或是因?yàn)樵磾?shù)據(jù)不是以連續(xù)信號(hào)的形式提供,在圖像處理中這是很正常的情況,或是因?yàn)榇_定信號(hào)在濾波器作用范圍內(nèi)的解析表示太復(fù)雜了。對(duì)于計(jì)算機(jī)圖形學(xué)中所有除了簡(jiǎn)單幾何圖形外的幾何形狀都會(huì)出現(xiàn)這種情況,當(dāng)然對(duì)基于樣條線的輪廓線來說也會(huì)同樣出現(xiàn)這種情況。
第二種方法稱為離散濾波。在那種方法中,通常以高于目標(biāo)速率的速率采樣源信號(hào),以獲得一幅過采樣圖像。然后,在將圖像下采樣到目標(biāo)速率之前,使用一個(gè)離散濾波器來減少過采樣圖像中的高頻成分。該離散方法在計(jì)算機(jī)圖形學(xué)中被稱為常規(guī)過采樣。
根據(jù)處理預(yù)算、硬件考慮以及個(gè)人對(duì)輸出圖像中對(duì)比度與反鋸齒度的偏好,可以使用各種不同的離散濾波器。通常被用來渲染字型的箱式濾波器用一個(gè)過采樣值方陣的算術(shù)平均來替代這個(gè)過采樣值方陣,這種方法在信號(hào)處理界通常被認(rèn)為是比較低級(jí)的。
在另一種方法中,自適應(yīng)過采樣將可用于采樣及濾波的資源集中用于具有較高的局部頻率分量的圖像區(qū)域。最優(yōu)自適應(yīng)采樣可以根據(jù)圖像中的局部變化性來確定。然而,這種技術(shù)的實(shí)用性會(huì)受到估算圖像局部變化的需要的限制,這種估算過程可能是計(jì)算代價(jià)高昂的。
由于對(duì)高頻圖案的常規(guī)采樣不足而引起的波紋圖案,是人類視覺系統(tǒng)尤其反感的。在一般的圖像處理中,隨機(jī)或跳動(dòng)采樣被用來解決這一問題。對(duì)于隨機(jī)采樣,采樣點(diǎn)會(huì)隨機(jī)地略微偏離它們的指定位置。隨機(jī)采樣會(huì)用高頻噪聲替代波紋鋸齒,并且已經(jīng)被證實(shí)在減少時(shí)域鋸齒中特別有效。
使用基于距離的反鋸齒的渲染在現(xiàn)有技術(shù)的字體渲染中,由字形邊緣引入的無限頻率分量是鋸齒的主要成分。與之相對(duì),通過利用2D距離場(chǎng)來表示2D對(duì)象,并根據(jù)本發(fā)明采樣2D距離場(chǎng),我們就能避開這些邊緣,因?yàn)樗龅谋硎痉椒ㄊ荂0連續(xù)的。最高頻率取決于字形本身的空域圖案,比如‘m’的重復(fù)垂直線或是‘i’的單根垂直線。
通過用字形的2D距離場(chǎng)表示字形,我們就能有效地對(duì)該字形使用解析預(yù)濾波器。下文中所述的我們用于渲染距離場(chǎng)的反鋸齒方法所產(chǎn)生的輸出與傳統(tǒng)解析預(yù)濾波器的輸出不同。
利用距離場(chǎng)進(jìn)行反鋸齒圖4示出了用來按圖像順序反鋸齒一個(gè)對(duì)象401(如一種字形)的方法400,所述的對(duì)象被表示410成一個(gè)二維距離場(chǎng)411。每個(gè)象素402中可以包括一個(gè)或多個(gè)成分404,通常是用于‘RGB’類型輸出設(shè)備的紅、藍(lán)或綠色成分。該方法可以為每個(gè)象素402的各個(gè)成分404使用一個(gè)或多個(gè)采樣點(diǎn)。方法400提供自適應(yīng)的基于距離的過采樣、基于距離的自動(dòng)提示以及基于距離的柵格裝配。結(jié)果得到的反鋸齒象素強(qiáng)度可以被作為一幅圖像的一部分呈現(xiàn)在CRT以及類似LCD的顯示器上。該方法對(duì)于渲染運(yùn)動(dòng)模糊特別有用。
表示對(duì)象401的二維距離場(chǎng)411的采樣點(diǎn)407的一個(gè)集合403與每個(gè)象素402的各個(gè)成分404相關(guān)聯(lián)420。根據(jù)二維距離場(chǎng)411以及采樣點(diǎn)403的集合來確定403一個(gè)距離(D)405。然后,距離405被映射440為象素402的成分404的反鋸齒強(qiáng)度(I)406。
在優(yōu)選實(shí)施例中,字形401由雙二次ADF 411表示,如上文所述。這樣就使得在字體渲染過程中使用基于距離的反鋸齒方法效率很高。其他的表示方法,比如二維距離圖、二維距離殼以及程序性距離場(chǎng),也都可以被采用。
對(duì)于一幅圖像中每個(gè)象素402的各個(gè)成分404,都要利用四叉樹遍歷方法來定位一個(gè)含有成分404的單元,比如葉單元,所述的遍歷方法在美國(guó)專利申請(qǐng)10/209302中有所說明,該專利于2002年7月31日提交,題為“Method for Traversing Quatrees,Octrees,andN-Dimensional Bitrees(用于遍歷四叉樹、八叉樹以及N維二叉樹的方法)”,本文通過引用將該專利申請(qǐng)完全包含進(jìn)來。盡管本技術(shù)領(lǐng)域內(nèi)其他已知的方法也可以被用于我們的發(fā)明,但是上述方法是無需進(jìn)行比較的,因此執(zhí)行效率更高。成分404處的距離根據(jù)單元的距離值重建出來,并被映射440為反鋸齒強(qiáng)度(I)406。
可以使用不同的映射,包括線性、高斯以及S形函數(shù)。最佳映射函數(shù)的選擇是主觀的。在一個(gè)實(shí)施例中,我們的映射是兩個(gè)函數(shù)的組合。第一個(gè)函數(shù)如上所述,第二個(gè)函數(shù)是對(duì)比度增強(qiáng)函數(shù)。這兩個(gè)函數(shù)被組合起來以便將距離場(chǎng)(D)405映射440為成分404的反鋸齒強(qiáng)度(I)406。
圖5示出了作為距離502的函數(shù)的強(qiáng)度501的線性映射500,比如
。該映射為象素的各個(gè)成分把距離轉(zhuǎn)換成反鋸齒圖像強(qiáng)度。距離在對(duì)象內(nèi)部是正的,在對(duì)象外部則是負(fù)的。不同的截止值503和504會(huì)影響邊緣對(duì)比度以及筆畫濃度。我們?yōu)轱@示字型采用(-0.75,0.75)象素的外部503及內(nèi)部504濾波器截止值,為正文字型采用(-0.5,0.625)象素的濾波器截止值,達(dá)到了良好的效果。
基于距離的最優(yōu)自適應(yīng)過采樣上述基于距離的反鋸齒方法減少了字形邊緣引起的鋸齒。然而,當(dāng)筆畫寬度或是字形各部分之間的距離對(duì)于顯示器采樣率來說太小時(shí),鋸齒成分仍會(huì)出現(xiàn)。在這種情況下,我們就要使用下文中將要說明的基于距離的自適應(yīng)過采樣,以進(jìn)一步減少空域及時(shí)域的鋸齒。
在優(yōu)選實(shí)施例中,我們使用帶有我們獨(dú)創(chuàng)的基于距離的自適應(yīng)過采樣的雙二次ADF,相對(duì)現(xiàn)有技術(shù)的基于輪廓線的表示法以及基于覆蓋的自適應(yīng)過采樣方法而言,該方法具有顯著的優(yōu)勢(shì)。由于ADF采用面向細(xì)節(jié)的采樣,因此局部變化性較強(qiáng)的距離場(chǎng)區(qū)域可由較小的葉細(xì)胞表示。由此,ADF四叉樹的結(jié)構(gòu)提供了實(shí)現(xiàn)基于距離的最優(yōu)自適應(yīng)采樣所需的局部變化的映象,從而克服了上文中所述的現(xiàn)有技術(shù)自適應(yīng)過采樣反鋸齒方法中確定局部變化性的困難。
對(duì)于圖像中每個(gè)象素402的各個(gè)成分404,都要定位含有成分404的單元,并且要將位于該成分的濾波器工作半徑r以內(nèi)的一組403采樣點(diǎn)407與該象素成分404關(guān)聯(lián)起來420。每個(gè)成分中的采樣點(diǎn)407的數(shù)量(spc)取決于單元尺寸(cellSize)對(duì)r的相對(duì)大小。采樣點(diǎn)407處的采樣距離經(jīng)過濾波,以確定430一個(gè)單個(gè)加權(quán)平均距離405,然后該距離被映射440成象素402的成分404的反鋸齒強(qiáng)度406。
有多種不同的濾波器及采樣策略可以使用。在優(yōu)選實(shí)施例中,我們使用一種普通形式的高斯濾波器,用W-12-3(d/r)2對(duì)各個(gè)距離采樣值加權(quán),其中d是該采樣點(diǎn)到象素成分的距離,W則是用于那個(gè)成分的權(quán)重總和。類似的結(jié)果也可以用箱式濾波器、錐形濾波器、負(fù)瓣濾波器以及其他形式的高斯濾波器得到。
圖6A-C示出了我們的采樣策略。采樣點(diǎn)407被定在成分601附近的同心圓610上,以便高效地計(jì)算權(quán)重及權(quán)重總和。我們使用象素間距的1.3倍作為濾波器半徑r 602,并在cellSize>r(圖6A)時(shí)采樣1個(gè)spc,在r/2<cellSize≤r(圖6B)時(shí)采樣5個(gè)spc,在cellSize≤r/2(圖6C)時(shí)采樣13個(gè)spc。
除了同心圓之外,本發(fā)明還可以使用多種其他策略來關(guān)聯(lián)采樣點(diǎn)407與象素成分404。我們的方法對(duì)具體的采樣策略并不特別敏感。
下文中所述的另一種自適應(yīng)采樣策略,將采樣點(diǎn)定在濾波器半徑r以內(nèi)所包含的所有單元的中心。該策略能得到同樣良好的結(jié)果。
基于單元的反鋸齒上述的距離場(chǎng)反鋸齒方法可以利用基于掃描線的光柵化方法在軟件中實(shí)現(xiàn)。替換地,被劃分成單元的距離場(chǎng)也可以一個(gè)單元接一個(gè)單元地反鋸齒化,即按對(duì)象順序反鋸齒。基于單元的渲染消除了為定位含有采樣點(diǎn)的單元而進(jìn)行的樹遍歷,消除了用于計(jì)算單個(gè)單元內(nèi)距離以及梯度的冗余設(shè)置,并且減少了單元數(shù)據(jù)的重復(fù)檢索,即內(nèi)存讀取。
另外,由于渲染所需的單元可以被表示為固定大小的自包含的單元的序列塊,即單元內(nèi)的點(diǎn)的距離及梯度可以根據(jù)單元的距離值確定,因此我們的基于單元的方法容易用硬件實(shí)現(xiàn),從而使得實(shí)時(shí)渲染成為可能。
圖7示出了一種用來按對(duì)象順序渲染對(duì)象701(例如一個(gè)字形)的方法700,所述的對(duì)象被表示710為一個(gè)二維距離場(chǎng)711。方法700提供了基于距離的自適應(yīng)過采樣,基于距離的自動(dòng)提示以及基于距離的網(wǎng)格裝配。最終得到的經(jīng)過反鋸齒化的象素強(qiáng)度可以作為一幅圖像的一部分被呈現(xiàn)在CRT以及LCD類的顯示器上。該方法對(duì)于渲染運(yùn)動(dòng)模糊特別有用。當(dāng)二維距離場(chǎng)711的單元被組織在一個(gè)空域分級(jí)結(jié)構(gòu)中時(shí),我們可以利用MIP映射(mipmapping)來減少所需的距離采樣點(diǎn)數(shù)量。
二維距離場(chǎng)711被劃分成多個(gè)單元712。在一個(gè)優(yōu)選實(shí)施例中我們使用雙二次自適應(yīng)采樣的距離場(chǎng),其中每個(gè)單元的大小取決于二維距離場(chǎng)的局部變化性。每個(gè)單元都包括一種方法(M)713,用于重建該單元內(nèi)的二維距離場(chǎng)。一組含有待渲染的距離場(chǎng)的區(qū)域(虛線)722的單元721被識(shí)別720出來。
區(qū)域722被用來定位730一組與該區(qū)域有關(guān)的象素731。對(duì)應(yīng)于象素731集合中的各個(gè)象素的一組成分741被指定740。然后,根據(jù)單元集合中的距離為每個(gè)象素的各個(gè)成分決定反鋸齒強(qiáng)度751。這里,所述的距離是根據(jù)單元集合重建的。然后所述的距離就被映射為反鋸齒強(qiáng)度,如上所述。
在一個(gè)實(shí)施例中,我們可以通過定位單元集合中靠近象素成分的一個(gè)單個(gè)采樣點(diǎn)、并重建該單個(gè)采樣點(diǎn)到單元集合的距離,來確定距離。在我們的優(yōu)選實(shí)施例中使用了雙二次自適應(yīng)采樣的距離場(chǎng),我們通過對(duì)小于濾波器半徑的單元進(jìn)行特殊處理而增強(qiáng)了該方法,其用于基于距離的自適應(yīng)過采樣。由于小單元出現(xiàn)在距離場(chǎng)中變化性較強(qiáng)的位置,因此可以在將距離映射為強(qiáng)度前,對(duì)靠近這些單元的象素距離進(jìn)行預(yù)濾波。
我們對(duì)元素的合成緩存器進(jìn)行初始化,其中的每個(gè)元素對(duì)應(yīng)于所述象素集合中各個(gè)象素的一個(gè)成分。單元集合中的每個(gè)單元都可以被獨(dú)立地處理。在優(yōu)選實(shí)施例中,每個(gè)單元包括一個(gè)加杈距離以及一個(gè)累計(jì)權(quán)重,兩者都被初始化為零。在一個(gè)單元被處理時(shí),這些加權(quán)距離以及累計(jì)權(quán)重在緩沖器元素中被遞增,其與位于所述單元內(nèi)或是位于所述單元中心的濾波器半徑內(nèi)的象素成分相對(duì)應(yīng)。
在處理了所有的單元之后,用累計(jì)權(quán)重對(duì)每個(gè)象素的各個(gè)成分的加權(quán)距離歸一化,以產(chǎn)生接著將被映射為反鋸齒成分強(qiáng)度的距離。在優(yōu)選實(shí)施例中,我們使用與上文所述相同的高斯加權(quán)和濾波器半徑。
至此所述的基于單元的渲染總是要處理單元集合中的每個(gè)葉單元,而不管每個(gè)單元對(duì)濾波器半徑的相對(duì)大小。理論上,這樣做提供了最優(yōu)的基于距離的自適應(yīng)過采樣。而實(shí)際上,ADF四叉樹可以被用作MIP映射以減少單元數(shù)量。
ADF四叉樹結(jié)構(gòu)使得我們可以用小的葉單元的前輩來替代小的葉單元,從而有效地裁剪了一些預(yù)定單元尺寸的四叉樹。只要該單元尺寸小于或等于象素間間隔的1/4,那么在基于距離的自適應(yīng)過采樣結(jié)果中就不會(huì)存在視覺效果上的退化。這樣做減少了渲染該區(qū)域所需的單元數(shù)。
處理象素成分一個(gè)象素包括一個(gè)或多個(gè)成分。例如,典型的CRT或LCD彩色顯示器上的象素包括紅色、綠色以及藍(lán)色的成分。在我們的發(fā)明中,當(dāng)象素包括多個(gè)成分時(shí),它們就會(huì)被單獨(dú)地處理,如上文中所述,或是被當(dāng)作一個(gè)單個(gè)成分處理。當(dāng)多個(gè)成分被當(dāng)作單個(gè)成分處理時(shí),就可以根據(jù)單個(gè)成分的反鋸齒強(qiáng)度來確定該象素的彩色和阿爾法值。
將多個(gè)成分當(dāng)作一個(gè)單個(gè)成分處理有兩個(gè)原因。首先,它能減少渲染時(shí)間。其次,當(dāng)多個(gè)成分不能被單獨(dú)尋址,或是當(dāng)諸單個(gè)成分的相對(duì)位置未知時(shí),對(duì)每個(gè)成分進(jìn)行個(gè)別處理就是不可能的。
當(dāng)顯示設(shè)備,如LCD,具有可尋址的象素成分時(shí),單獨(dú)地處理多個(gè)成分能夠提高顯示設(shè)備的有效分辨率,這一點(diǎn)在現(xiàn)有技術(shù)中是已知的。我們的發(fā)明可以充分利用這類設(shè)備的這一特性,來提供質(zhì)量?jī)?yōu)于現(xiàn)有技術(shù)的基于距離的反鋸齒。
動(dòng)態(tài)化二維對(duì)象圖12示出了方法1200的流程圖,該方法根據(jù)動(dòng)畫腳本1202將對(duì)象1201動(dòng)態(tài)化成為一系列的幀。動(dòng)畫腳本1202為所述幀序列中的每一幀指示出對(duì)象的條件,例如對(duì)象的位置、大小、方向以及變形。該對(duì)象被表示為一個(gè)二維距離場(chǎng)。根據(jù)動(dòng)畫腳本1202,為幀1221序列中的每一幀更新1210對(duì)象1201的形態(tài)1211。利用經(jīng)過更新的形態(tài)1211以及基于距離的反鋸齒渲染方法1212來渲染對(duì)象1201。
表示對(duì)象1201的二維距離場(chǎng)可以從不同的對(duì)象表示法中得到,例如對(duì)象的輪廓線描述或是對(duì)象的位圖描述。
為特定對(duì)象1201進(jìn)行形態(tài)1211的更新1210,可以通過對(duì)該對(duì)象進(jìn)行各種不同的操作來實(shí)現(xiàn),其中包括剛體變換、自由形態(tài)變形、軟體沖擊變形、水平設(shè)置方法、顆粒模擬以及改變其渲染屬性。
在渲染1220所述的對(duì)象時(shí),我們將表示對(duì)象的二維距離場(chǎng)中的一個(gè)采樣點(diǎn)集合與幀1221序列中的一個(gè)幀內(nèi)的一個(gè)象素成分關(guān)聯(lián)起來。通過由所述的二維距離場(chǎng)以及采樣點(diǎn)集合來確定一個(gè)距離,我們就可以將該距離映射成所述象素成分的反鋸齒強(qiáng)度。
在一個(gè)優(yōu)選實(shí)施例中,我們將表示對(duì)象1201的二維距離場(chǎng)劃分成多個(gè)單元,每個(gè)單元中都包括了用于重建該單元內(nèi)的二維距離場(chǎng)的方法。為了在該例中進(jìn)行渲染1220,我們要在表示對(duì)象1201的二維距離場(chǎng)中識(shí)別出一個(gè)單元集合,其含有待渲染的二維距離場(chǎng)區(qū)域,還要定位與該區(qū)域相關(guān)的一個(gè)象素集合。指定對(duì)應(yīng)于該組象素中各個(gè)象素的一組成分。根據(jù)該組單元為象素的各個(gè)成分確定一個(gè)距離,并將該距離映射為該象素成分的反鋸齒強(qiáng)度,從而為該組象素中每個(gè)象素的各個(gè)成分確定一個(gè)反鋸齒強(qiáng)度。
基于距離的自動(dòng)提示標(biāo)準(zhǔn)字體表示法中的提示是一種耗時(shí)的手工過程,其中字型設(shè)計(jì)人員以及提示專家要生成一組規(guī)則,以便更好地將字形個(gè)體匹配到象素網(wǎng)格中。良好的提示有助于在小字型尺寸下產(chǎn)生間隔合適、具有良好對(duì)比度且外表均勻的字形。
這些規(guī)則提供具有相同對(duì)比度分布的垂線,其左邊與底部邊緣具有可能實(shí)現(xiàn)的最銳利的對(duì)比度;字形的對(duì)角線條以及纖細(xì)圓滑的部分具有足夠的對(duì)比度,以便向眼睛傳遞視覺結(jié)構(gòu);以及襯線,這些襯線結(jié)合在一起并提供足以被人眼捕獲的強(qiáng)化突出,參見Hersch等人所著的“Perceptually Tuned Generation of Grayscale Fonts(灰度字體的感觀調(diào)節(jié)生成)”,該文發(fā)表于IEEE CG&A,Nov,pp.78-89,1995。
注意,現(xiàn)有技術(shù)的濾波方法會(huì)產(chǎn)生模糊的字符,并向不同的字符部分指定不同的對(duì)比度方案,從而違反了字型設(shè)計(jì)的重要原則。為了克服這些局限性,就要為每種字體的每個(gè)字形開發(fā)提示。現(xiàn)有技術(shù)的提示方法存在許多問題它們的開發(fā)耗費(fèi)勞力,而且非常復(fù)雜以至于不能用硬件實(shí)現(xiàn)。
對(duì)基于輪廓線的字體而言,用提示進(jìn)行渲染是一個(gè)三步驟的過程。首先,所述字形的輪廓線被縮放并與象素網(wǎng)格對(duì)齊。其次,輪廓線被修改以控制縱線、橫線以及襯線的對(duì)比度,并提高非常纖細(xì)部分以及弧線的濃度。第三,對(duì)經(jīng)過修改的輪廓線進(jìn)行過采樣,隨后進(jìn)行帶有濾波的下采樣。
盡管上文中所述的我們未經(jīng)提示的基于距離的反鋸齒渲染方法比現(xiàn)有技術(shù)的字體渲染方法更為有利,但是眾所周知,感觀提示可以提高小字型尺寸下的閱讀舒適度。
因此,如圖8中所示,我們充分利用距離場(chǎng)來提供基于距離的自動(dòng)提示,以便進(jìn)行小點(diǎn)尺寸下的字形渲染。提示中的第一步810是縮放距離場(chǎng)并將其與象素網(wǎng)格對(duì)齊。這一步可根據(jù)給定的或推導(dǎo)出的字體規(guī)格自動(dòng)完成,比如蓋帽高度、x高度以及基線的位置。
在應(yīng)用了這種網(wǎng)格裝配的形式之后,我們就可以利用距離場(chǎng)及其梯度場(chǎng)來提供感觀提示。
在一個(gè)實(shí)施例中,距離場(chǎng)梯度的方向被用來檢測(cè)820對(duì)象左邊與底部邊緣上的象素。通過暗化830這些象素并亮化840相對(duì)邊緣上的象素,我們就可以實(shí)現(xiàn)左邊與底部邊緣上較高的對(duì)比度,而無需改變明顯的筆畫濃度。這可以通過降低或提高相應(yīng)的象素強(qiáng)度來完成。
在另一個(gè)實(shí)施例中,梯度場(chǎng)被用來為對(duì)角線條及細(xì)弧線提供更好的對(duì)比度。我們注意到,如果一個(gè)象素位于或靠近字形的狹窄區(qū)域,那么該象素兩側(cè)的相鄰象素就會(huì)具有相反的梯度方向,即,它們的點(diǎn)積為負(fù)數(shù)。通過檢測(cè)梯度方向的突變,我們就可以暗化850這些狹窄區(qū)域上的象素。
這些只是如何利用距離場(chǎng)來自動(dòng)提供感觀提示的兩個(gè)實(shí)例。所述的距離場(chǎng)也可以被用來提供最佳的字符間距以及均勻的筆畫濃度。
生成與編輯字體有兩種設(shè)計(jì)字體的基本方法。第一種是手工。其中,字形靠手繪制、數(shù)字化,然后將輪廓線匹配到數(shù)字化的位圖中。第二種方法則是由計(jì)算機(jī)完成。
在后一種情況下,有三類工具可供使用。直接的視覺工具可被用于曲線處理。程序設(shè)計(jì)工具通過執(zhí)行一個(gè)程序的指令來創(chuàng)建字形的形狀。該程序或是定義一個(gè)形狀的輪廓并填充它,或是定義一條由筆尖繪出的路徑,該路徑有多種屬性,其中包括幾何形狀及方向?;诮M件的設(shè)計(jì)工具允許設(shè)計(jì)者們創(chuàng)建基本的組件,如直線、弧線以及其他重復(fù)出現(xiàn)的形狀,然后組合這些組件以產(chǎn)生字形。
我們使用造型編輯器來提供基于筆畫的設(shè)計(jì)。這是與3D雕刻相對(duì)的一項(xiàng)2D技術(shù),所述3D雕刻在美國(guó)專利申請(qǐng)09/810261中有所說明,該專利申請(qǐng)題為“System and Method for Sculpting Digital Models(用于塑造數(shù)字模型的系統(tǒng)與方法)”,于2001年3月16日提交,此處通過引用包含進(jìn)來。筆畫描繪可以被交互地完成,或者也可以編寫腳本令其模擬可編程的設(shè)計(jì)工具。
也可以采用基于弧線的設(shè)計(jì),使用Bezier曲線處理工具,該工具與Adobe Illustrator中所用的工具相似。基于弧線的設(shè)計(jì)方法可以與用來將輪廓線轉(zhuǎn)換成距離場(chǎng)以及將距離場(chǎng)轉(zhuǎn)換為輪廓線的方法組合起來,以提供設(shè)計(jì)規(guī)范間的無縫接口。
基于組件的設(shè)計(jì)方法在隱式距離場(chǎng)使用CSG以及混合操作。這樣就使得組件可以被單獨(dú)設(shè)計(jì),并在編輯或渲染期間組合起來。
我們還提供了一種由模擬及數(shù)字字體模板自動(dòng)生成ADF的方法。
對(duì)于基于組件的設(shè)計(jì)方法,我們的字體編輯器提供了利用四叉樹操作來有效反射及旋轉(zhuǎn)ADF的能力,用以塑造字形中常見的對(duì)稱性。其他的特性包括ADF縮放、平移以及組合多個(gè)ADF的操作,比如CSG與混合。
對(duì)于基于筆畫的設(shè)計(jì)方法,我們提供了刻圖工具,該工具具有幾何輪廓以模擬筆尖。模擬筆尖的方向及尺寸可以沿筆畫變化,以模仿書法筆跡。
圖9示出了用來由一個(gè)筆畫生成一個(gè)二維距離場(chǎng)931的方法900。我們?cè)诠P繪期間采樣筆的狀態(tài),該筆狀態(tài)包括筆繪期間該筆的位置。該筆狀態(tài)還可以包括方向與幾何形狀。根據(jù)筆狀態(tài)采樣點(diǎn)901,我們可以沿筆畫生成910筆狀態(tài)的有序列表911。然后,由筆狀態(tài)的有序列表生成920一組邊界描述符921。最后,我們由該組邊界描述符921生成930一個(gè)二維距離場(chǎng)931。
在優(yōu)選實(shí)施例中,邊界描述符921是三次Bezier曲線之類的曲線。
在優(yōu)選實(shí)施例中,我們運(yùn)用曲線匹配程序來將G2連續(xù)曲線的一個(gè)最小集合匹配到筆的路徑上,其精度由用戶指定。我們還利用工具尺寸與方向生成離開該條路徑的偏移點(diǎn)的兩個(gè)額外的有序列表,并將曲線匹配到這些偏移點(diǎn)上,以產(chǎn)生筆畫輪廓線。輪廓曲線被放置在一個(gè)空域分級(jí)結(jié)構(gòu)中,以便有效地處理。我們利用平鋪生成器由該分級(jí)結(jié)構(gòu)生成一個(gè)二維ADF,參見美國(guó)專利申請(qǐng)09/810983號(hào),該專利申請(qǐng)于2001年3月16日提交,此處通過引用包括進(jìn)來。
到輪廓線的最小距離可以利用Bezier裁剪來有效地計(jì)算。筆畫被轉(zhuǎn)換成ADF,對(duì)于用戶來說沒有感觀上的延時(shí)。為了進(jìn)行曲線操作,我們提供了Bezier曲線編輯器。
如圖11中所示,我們還提供了將距離場(chǎng)轉(zhuǎn)換為邊界描述符(如Bezier曲線)的能力,以提供三種設(shè)計(jì)規(guī)范間的無縫接口。
在優(yōu)選實(shí)施例中,我們使用雙二次ADF,其中該轉(zhuǎn)換過程利用ADF分級(jí)結(jié)構(gòu)遍歷葉單元,以便進(jìn)行快速的相鄰搜索,生成沿ADF零等值線的點(diǎn)的有序列表,然后如下文中參照?qǐng)D11所述的那樣匹配曲線以生成邊界描述符。
在現(xiàn)有技術(shù)中,邊界描述符誤差是根據(jù)點(diǎn)列表計(jì)算得出,與之相對(duì),我們直接由距離場(chǎng)計(jì)算出邊界描述符誤差。我們特別注意了尖銳的棱角。我們的方法快得足以讓用戶在范例間無縫切換,而不會(huì)引起明顯的延時(shí)。
圖11示出了用來將二維距離場(chǎng)1101轉(zhuǎn)換成一組邊界描述符1131的方法1100。首先,我們選取1110二維距離場(chǎng)1101的等值輪廓線1111,比如距離為零或其他偏移量的。
其次,我們由等值輪廓線1111及二維距離場(chǎng)1101生成1120點(diǎn)的有序列表1121。在我們使用了雙二次自適應(yīng)采樣距離場(chǎng)的優(yōu)選實(shí)施例中,該步驟利用相鄰搜索技術(shù)順序訪問了自適應(yīng)采樣距離場(chǎng)1101的相鄰單元。該搜索技術(shù)充分利用了自適應(yīng)采樣距離場(chǎng)1101的空域分級(jí)結(jié)構(gòu),以便沿著等值輪廓線1111有效地定位下一個(gè)相鄰的單元。
在另一個(gè)實(shí)施例中,我們通過選取ADF 1101中的邊界單元,以各個(gè)邊界單元為種子生成一組有序點(diǎn),并利用ADF 1101的距離場(chǎng)和梯度場(chǎng)將各個(gè)點(diǎn)移動(dòng)到ADF 1101的等值線1111上,以此來生成1120點(diǎn)的有序列表1121。
然后,我們初始化1130一組邊界描述符1131,以匹配點(diǎn)的有序列表1121。邊界描述符1131的初始化1130是通過將點(diǎn)的有序列表1121中的相鄰點(diǎn)結(jié)合來完成的,以此形成一組線段,這些線段構(gòu)成了最初的邊界描述符1131。
在另一個(gè)實(shí)施例中,我們通過定位拐角點(diǎn)、將所述的點(diǎn)的有序列表劃分成由這些拐角點(diǎn)界定的片段、并確定片段邊界描述符以匹配各個(gè)片段,從而初始化1130一組邊界描述符1131。片段邊界描述符的組合形成了最初的邊界描述符1131。
拐角點(diǎn)可以通過測(cè)量由距離場(chǎng)求得的曲率來定位。在優(yōu)選實(shí)施例中,距離場(chǎng)是雙二次ADF,其中高曲率的區(qū)域由ADF中的小單元表示,從而可以利用ADF的單元尺寸來定位拐角點(diǎn)。
一旦邊界描述符1131被初始化1130,邊界描述符1131就會(huì)被更新1140。更新1140通過重建距離場(chǎng)并測(cè)量邊界描述符離開等值輪廓線的平均或最大偏差,來為每個(gè)邊界描述符求出一個(gè)誤差。
邊界描述符1131被更新1140,直到每個(gè)邊界描述符的誤差令人滿意、或是過了預(yù)定時(shí)間、或是邊界描述符1131的集合的基數(shù)最小為止。
為了把以非數(shù)字形式(即模擬模板)或以位圖之類的數(shù)字形式(即數(shù)字模板)儲(chǔ)存的現(xiàn)有傳統(tǒng)字體合并進(jìn)來,我們的編輯系統(tǒng)提供了用來從高分辨率兩級(jí)位圖生成ADF的方法。
模擬模板首先被掃描來產(chǎn)生某個(gè)分辨率下的兩級(jí)數(shù)字模板,該分辨率至少要比目標(biāo)ADF分辨率高4倍,比如說,4096×4096的數(shù)字模板對(duì)與今日的顯示分辨率及顯示尺寸來說就足夠了。然后,對(duì)位圖進(jìn)行準(zhǔn)確的歐幾里德距離變換,以生成表示字形的規(guī)則采樣距離場(chǎng)。
然后,我們利用平鋪生成器從該規(guī)則采樣的距離場(chǎng)生成一個(gè)ADF。在2GHzPentium IV處理器上,每個(gè)字形的位圖到ADF的轉(zhuǎn)換需要約10秒鐘。
為了從現(xiàn)有技術(shù)的字形描述符轉(zhuǎn)換到距離場(chǎng),我們應(yīng)用了參照?qǐng)D10說明的方法,其中在所述的距離場(chǎng)中字形由一組邊界描述符表示。
用于動(dòng)態(tài)版式的計(jì)算底層我們ADF字形框架的距離場(chǎng)以及空域分級(jí)結(jié)構(gòu)屬性也可以被用于2D對(duì)象的計(jì)算機(jī)仿真,比如字形、企業(yè)標(biāo)志或是任何2D形狀。例如,上述的兩種屬性都可以被用在沖突檢測(cè)與避免中,用于計(jì)算互相穿過的實(shí)體間的作用力,以及用于模擬軟體形變。
級(jí)設(shè)置方法利用了有符號(hào)的距離場(chǎng),該方法可被用來模擬許多效應(yīng),比如熔化與流體動(dòng)力學(xué)。ADF是緊湊的隱式表示法,它可被有效地查詢以計(jì)算距離值和梯度,這是上述方法所需的兩種重要計(jì)算。
與此相對(duì),由移動(dòng)或變形的輪廓線來求出距離值和梯度在用于實(shí)時(shí)互動(dòng)的軟件中是不實(shí)用的,參見Hoff等人所著的“Fast and Simple2D Geometric Proximity Queries Using Graphics Hardware(利用圖形硬件進(jìn)行快速簡(jiǎn)單的2D幾何近似查詢)”,該文發(fā)表于Proc.Interactive 3D Graphics’01,2001。Hoff等人利用圖形硬件來為變形曲線實(shí)時(shí)生成規(guī)則采樣的2D距離場(chǎng),其中所述的變形曲線由線段近似。
距離場(chǎng)的隱性本質(zhì)允許復(fù)雜的拓?fù)渥兓?,比如表面偏移,這很難用基于輪廓線的字體來模擬。另外,距離場(chǎng)還可以被用來提供動(dòng)態(tài)化對(duì)象的非光學(xué)現(xiàn)實(shí)主義渲染,以添加藝術(shù)效果。
本發(fā)明的作用本發(fā)明提供了一種新穎的框架,用于表示、渲染、編輯以及動(dòng)態(tài)化字符字形、企業(yè)標(biāo)志或是任意二維對(duì)象。在一種優(yōu)選實(shí)施例中,本發(fā)明利用二維雙二次ADF來表示二維對(duì)象。該雙二次重建方法提供了存儲(chǔ)器使用與計(jì)算負(fù)荷間的最佳平衡。
本發(fā)明包括一種方法,用來在一個(gè)含有二維對(duì)象拐角的單元內(nèi)生成一個(gè)二維距離場(chǎng)。相比現(xiàn)有技術(shù),該方法提供了對(duì)存儲(chǔ)器需求的顯著減少,以及精度的明顯改善。
我們基于距離的反鋸齒渲染方法利用每象素一個(gè)單個(gè)未經(jīng)提示的距離采樣點(diǎn),提供了比現(xiàn)有技術(shù)中所用的過采樣方法更好的反鋸齒。
我們基于距離的方法充分利用了ADF的空域分級(jí)結(jié)構(gòu),來提供高效最優(yōu)的基于距離的自適應(yīng)過采樣,從而實(shí)現(xiàn)了出色的空域與時(shí)域反鋸齒。我們的方法還為基于距離的自動(dòng)提示、為基于距離的網(wǎng)格裝配、為聯(lián)合三種常用的數(shù)字字體設(shè)計(jì)規(guī)范、以及為動(dòng)態(tài)字體圖案產(chǎn)生多種特殊效果,提供了計(jì)算基礎(chǔ)。
盡管本文中已經(jīng)通過優(yōu)選實(shí)施例的方式對(duì)本發(fā)明進(jìn)行了說明,但是應(yīng)該明白,在本發(fā)明的指導(dǎo)思想及范圍內(nèi)還可以作出多種其他的變化與改進(jìn)。因此,附屬權(quán)利要求的目的就是要涵蓋所有這些包含在本發(fā)明的真正指導(dǎo)思想與范圍內(nèi)的變化及改進(jìn)。
權(quán)利要求
1.一種對(duì)表示一個(gè)對(duì)象的一個(gè)二維距離場(chǎng)的一個(gè)區(qū)域進(jìn)行反鋸齒的方法,其中所述二維距離場(chǎng)被劃分成多個(gè)單元,每個(gè)單元包括一種在該單元內(nèi)重建所述二維距離場(chǎng)的方法,所述方法包括識(shí)別表示一個(gè)對(duì)象的一個(gè)二維距離場(chǎng)的一個(gè)單元集合,所述單元集合與要被渲染的所述二維距離場(chǎng)的一個(gè)區(qū)域相關(guān)聯(lián);定位與所述區(qū)域相關(guān)聯(lián)的一個(gè)象素集合;為所述象素集合中的每個(gè)象素指定一個(gè)成分集合;以及為所述象素集合中的每個(gè)象素的每個(gè)成分確定一個(gè)反鋸齒強(qiáng)度,所述確定進(jìn)一步包括根據(jù)所述單元集合確定所述象素的所述成分的一個(gè)距離;以及將所述的距離映射成所述象素的所述成分的反鋸齒強(qiáng)度。
2.根據(jù)權(quán)利要求1所述的方法,其中所述的二維距離場(chǎng)是一個(gè)二維距離圖。
3.根據(jù)權(quán)利要求1所述的方法,其中所述的二維距離場(chǎng)是一個(gè)二維距離殼。
4.根據(jù)權(quán)利要求1所述的方法,其中所述的二維距離場(chǎng)包括儲(chǔ)存在存儲(chǔ)器中的一組距離。
5.根據(jù)權(quán)利要求1所述的方法,其中所述的二維距離場(chǎng)是一個(gè)二維自適應(yīng)采樣的距離場(chǎng)。
6.根據(jù)權(quán)利要求2、3或4所述的方法,其中所述的二維距離場(chǎng)的每個(gè)單元包括一個(gè)空域相關(guān)采樣距離的集合,并且所述的在所述單元內(nèi)重建所述二維距離場(chǎng)的方法根據(jù)所述的采樣距離在所述單元內(nèi)的一個(gè)位置重建所述距離。
7.根據(jù)權(quán)利要求6所述的方法,其中所述的空域相關(guān)采樣距離的集合位于一個(gè)四邊形的頂點(diǎn),并且所述的在所述單元內(nèi)重建所述二維距離場(chǎng)的方法是雙線性內(nèi)插。
8.根據(jù)權(quán)利要求6所述的方法,其中所述的在所述單元內(nèi)重建所述二維距離場(chǎng)的方法是雙二次內(nèi)插。
9.根據(jù)權(quán)利要求2、3或4所述的方法,其中所述的在所述二維距離場(chǎng)的每個(gè)單元內(nèi)重建所述二維距離場(chǎng)的方法是一個(gè)過程。
10.根據(jù)權(quán)利要求1所述的方法,其中所述單元集合的結(jié)合包含所述區(qū)域。
11.根據(jù)權(quán)利要求10所述的方法,其中所述結(jié)合包括中心在距離所述區(qū)域一個(gè)指定距離內(nèi)的其它多個(gè)單元。
12.根據(jù)權(quán)利要求1所述的方法,其中所述單元集合位于所述區(qū)域附近。
13.根據(jù)權(quán)利要求10所述的方法,其中所述二維距離場(chǎng)的所述單元是以一個(gè)空域分級(jí)被組織的。
14.根據(jù)權(quán)利要求13所述的方法,其中所述單元集合中的每個(gè)單元是所述空域分級(jí)中的一個(gè)葉單元。
15.根據(jù)權(quán)利要求13所述的方法,其中所述單元集合中的每個(gè)單元的大小大于根據(jù)所述象素集合中的象素間的距離確定的一個(gè)值。
16.根據(jù)權(quán)利要求1所述的方法,其中所述象素集合是通過將所述區(qū)域變換為一個(gè)圖像空間并且確定變換后的區(qū)域內(nèi)的圖像象素來定位的。
17.根據(jù)權(quán)利要求16所述的方法,其中所述圖像象素是通過光柵化所述的變換后的區(qū)域來確定的。
18.根據(jù)權(quán)利要求1所述的方法,其中所述區(qū)域是根據(jù)所述二維距離場(chǎng)的所述單元的一個(gè)子集確定的一個(gè)區(qū)域。
19.根據(jù)權(quán)利要求1所述的方法,其中所述區(qū)域是由所述二維距離場(chǎng)的所述單元的一個(gè)子集覆蓋的一個(gè)區(qū)域。
20.根據(jù)權(quán)利要求1所述的方法,其中為所述象素集合中的每個(gè)象素指定所述成分集合是根據(jù)包含所述象素集合的一個(gè)顯示設(shè)備的特征確定的。
21.根據(jù)權(quán)利要求20所述的方法,其中所述顯示設(shè)備的特征包括每個(gè)象素的所述成分集合的一個(gè)基數(shù)。
22.根據(jù)權(quán)利要求20所述的方法,其中所述顯示設(shè)備的特征包括每個(gè)象素的所述成分集合的一個(gè)空域布局。
23.根據(jù)權(quán)利要求20所述的方法,其中所述顯示設(shè)備的特征包括每個(gè)象素中的所述成分集合中的每個(gè)成分的一個(gè)描述符。
24.根據(jù)權(quán)利要求1所述的方法,其中確定所述距離進(jìn)一步包括定位所述象素的所述成分附近的單元集合內(nèi)的一個(gè)單個(gè)采樣點(diǎn);以及根據(jù)所述單元集合重建所述的單個(gè)采樣點(diǎn)處的所述距離。
25.根據(jù)權(quán)利要求1所述的方法,其中確定所述距離進(jìn)一步包括初始化元素的一個(gè)合成緩存器,每個(gè)元素對(duì)應(yīng)于所述象素集合的每個(gè)象素的一個(gè)成分;獨(dú)立處理所述單元集合中的每個(gè)單元,所述的對(duì)每個(gè)單元的處理更新所述合成緩存器中的所述元素的一個(gè)集合;以及處理所述合成緩存器中的每個(gè)元素,以確定所述象素集合中的每個(gè)象素的對(duì)應(yīng)成分的距離。
26.根據(jù)權(quán)利要求25所述的方法,其中所述合成緩存器的每個(gè)元素包括一個(gè)合成距離。
27.根據(jù)權(quán)利要求25所述的方法,其中所述合成緩存器的每個(gè)元素包括一個(gè)合成權(quán)重。
28.根據(jù)權(quán)利要求25所述的方法,其中所述的對(duì)每個(gè)單元的處理進(jìn)一步包括為所述單元確定一個(gè)象素成分的集合,所述的象素成分集合是所述象素集合中的每個(gè)象素的成分集合的一個(gè)子集;從對(duì)應(yīng)于所述象素成分集合的每個(gè)象素成分的所述單元重建一個(gè)采樣距離;為所述象素成分集合中的每個(gè)象素成分確定一個(gè)采樣權(quán)重;以及用所述采樣權(quán)重和所述采樣距離來更新所述合成緩存器中對(duì)應(yīng)于所述象素成分集合的每個(gè)象素成分的所述元素。
29.根據(jù)權(quán)利要求28所述的方法,其中所述象素成分集合是通過在所述單元內(nèi)定位象素成分來確定的。
30.根據(jù)權(quán)利要求28所述的方法,其中所述象素成分集合是通過在距離所述單元的中心一個(gè)指定距離內(nèi)定位象素成分來確定的。
31.根據(jù)權(quán)利要求28所述的方法,其中所述更新將所述采樣權(quán)重累計(jì)成所述合成緩存器中的所述元素的一個(gè)合成權(quán)重。
32.根據(jù)權(quán)利要求28所述的方法,其中所述更新將所述采樣距離累計(jì)成所述合成緩存器中的所述元素的一個(gè)合成距離。
33.根據(jù)權(quán)利要求25所述的方法,其中對(duì)所述合成緩存器中的每個(gè)元素的所述處理進(jìn)一步包括根據(jù)所述合成緩存器的所述元素的一個(gè)合成距離和一個(gè)合成權(quán)重確定一個(gè)加權(quán)平均,以確定所述距離。
34.根據(jù)權(quán)利要求28所述的方法,其中所述象素成分集合中的一個(gè)象素成分的采樣權(quán)重是一個(gè)恒定值。
35.根據(jù)權(quán)利要求28所述的方法,其中所述象素成分集合中的一個(gè)象素成分的所述采樣權(quán)重是根據(jù)從所述單元的一個(gè)位置和所述象素成分的一個(gè)位置得到的一個(gè)第二距離確定的。
36.根據(jù)權(quán)利要求35所述的方法,其中所述象素成分的所述采樣權(quán)重是所述第二距離的一個(gè)線性函數(shù)。
37.根據(jù)權(quán)利要求35所述的方法,其中所述象素成分的所述采樣權(quán)重是所述第二距離的一個(gè)高斯函數(shù)。
38.根據(jù)權(quán)利要求1所述的方法,其中確定所述距離是對(duì)所述象素的所述成分附近的所述二維距離場(chǎng)的一個(gè)區(qū)域上的一個(gè)解析函數(shù)的一個(gè)估算。
39.根據(jù)權(quán)利要求38所述的方法,其中所述解析函數(shù)是所述象素的所述成分附近的所述二維距離場(chǎng)的所述區(qū)域上的一個(gè)積分。
40.根據(jù)權(quán)利要求1所述的方法,其中所述的映射是將所述距離與所述反鋸齒強(qiáng)度相關(guān)聯(lián)的一個(gè)一維函數(shù)。
41.根據(jù)權(quán)利要求40所述的方法,其中所述的一維函數(shù)是一個(gè)第一函數(shù)與一個(gè)第二函數(shù)的組合。
42.根據(jù)權(quán)利要求41所述的方法,其中所述的第二函數(shù)是一個(gè)對(duì)比度增強(qiáng)函數(shù)。
43.根據(jù)權(quán)利要求40所述的方法,其中所述的一維函數(shù)是線性的。
44.根據(jù)權(quán)利要求40所述的方法,其中所述的一維函數(shù)是高斯的。
45.根據(jù)權(quán)利要求1所述的方法,其中所述的映射是一個(gè)將所述距離與所述反鋸齒強(qiáng)度相關(guān)聯(lián)的一維查找表。
46.根據(jù)權(quán)利要求45所述的方法,其中所述一維查找表中的每個(gè)反鋸齒強(qiáng)度值是所述距離的一個(gè)線性函數(shù)。
47.根據(jù)權(quán)利要求45所述的方法,其中所述一維查找表中的每個(gè)反鋸齒強(qiáng)度值是所述距離的一個(gè)高斯函數(shù)。
48.根據(jù)權(quán)利要求1所述的方法,其中所述的映射是將所述距離與所述反鋸齒強(qiáng)度相關(guān)聯(lián)的一個(gè)N維函數(shù)。
49.根據(jù)權(quán)利要求48所述的方法,其中所述的N維函數(shù)的一個(gè)變量是根據(jù)所述象素的所述成分的一個(gè)位置確定的。
50.根據(jù)權(quán)利要求48所述的方法,其中所述的N維函數(shù)的一個(gè)變量是根據(jù)所述象素的所述成分附近的二維距離場(chǎng)的一個(gè)梯度場(chǎng)確定的。
51.根據(jù)權(quán)利要求1所述的方法,其中所述的映射是將所述距離與所述反鋸齒強(qiáng)度相關(guān)聯(lián)的一個(gè)N維查找表。
52.根據(jù)權(quán)利要求51所述的方法,其中所述N維查找表的一個(gè)變量是根據(jù)所述象素的所述成分的一個(gè)位置確定的。
53.根據(jù)權(quán)利要求51所述的方法,其中所述N維查找表的一個(gè)變量是根據(jù)所述象素的所述成分附近的所述二維距離場(chǎng)的一個(gè)梯度場(chǎng)確定的。
54.根據(jù)權(quán)利要求1所述的方法,其中所述的象素由一個(gè)單個(gè)成分構(gòu)成。
55.根據(jù)權(quán)利要求54所述的方法,其中所述象素的顏色是根據(jù)所述象素的所述單個(gè)成分的反鋸齒強(qiáng)度決定的。
56.根據(jù)權(quán)利要求54所述的方法,其中所述象素的阿爾法通道是根據(jù)所述象素的所述單個(gè)成分的反鋸齒強(qiáng)度決定的。
57.根據(jù)權(quán)利要求1所述的方法,其中所述的象素由M個(gè)成分構(gòu)成。
58.根據(jù)權(quán)利要求57所述的方法,其中所述的M個(gè)成分被當(dāng)作一個(gè)單個(gè)成分處理。
59.根據(jù)權(quán)利要求57所述的方法,其中所述的M個(gè)成分的位置是預(yù)先確定的,并且該M個(gè)成分的集合是被獨(dú)立地處理的。
60.根據(jù)權(quán)利要求57所述的方法,其中所述的M個(gè)成分包括一個(gè)紅色、一個(gè)綠色以及一個(gè)藍(lán)色成分。
61.根據(jù)權(quán)利要求57所述的方法,其中所述的M個(gè)成分包括一個(gè)青色、一個(gè)品紅色、一個(gè)黃色以及一個(gè)黑色成分。
62.根據(jù)權(quán)利要求59所述的方法,其中所述象素的顏色是根據(jù)所述M個(gè)成分的集合中的諸個(gè)成分的反鋸齒強(qiáng)度確定的。
63.根據(jù)權(quán)利要求59所述的方法,其中所述象素的阿爾法通道是根據(jù)所述M個(gè)成分的集合中的諸個(gè)成分的反鋸齒強(qiáng)度確定的。
64.根據(jù)權(quán)利要求1所述的方法,其中所述的距離是通過一個(gè)N維函數(shù)修改的,其中該函數(shù)的一個(gè)變量是所述象素的所述成分附近的二維距離場(chǎng)的一個(gè)梯度場(chǎng)。
65.根據(jù)權(quán)利要求1所述的方法,其中所述象素的所述成分的反鋸齒強(qiáng)度是通過一個(gè)N維函數(shù)修改的,其中該函數(shù)的一個(gè)變量是所述象素的所述成分附近的二維距離場(chǎng)的一個(gè)梯度場(chǎng)。
66.根據(jù)權(quán)利要求50、53、64或65所述的方法,其中所述梯度場(chǎng)提供所述對(duì)象的自動(dòng)提示。
67.根據(jù)權(quán)利要求66所述的方法,其中所述的對(duì)象是一個(gè)字符字形。
68.根據(jù)權(quán)利要求66所述的方法,其中所述的對(duì)象是一個(gè)標(biāo)志。
69.根據(jù)權(quán)利要求66所述的方法,其中所述梯度場(chǎng)的方向被用來提高所述對(duì)象的選定邊緣上的對(duì)比度。
70.根據(jù)權(quán)利要求69所述的方法,其中所述選定邊緣是所述對(duì)象的左側(cè)及底部邊緣。
71.根據(jù)權(quán)利要求66所述的方法,其中所述梯度場(chǎng)被用來減少所述對(duì)象的狹窄區(qū)域附近的遺失。
72.根據(jù)權(quán)利要求71所述的方法,其中所述梯度場(chǎng)方向上的突變被用來檢測(cè)所述對(duì)象的狹窄區(qū)域。
73.根據(jù)權(quán)利要求1所述的方法,其中所述的對(duì)象是一個(gè)二維字符字形,該方法包括為所述的二維距離場(chǎng)增加一組屬性;以及根據(jù)所述一組屬性修改所述的二維距離場(chǎng)。
74.根據(jù)權(quán)利要求73所述的方法,其中所述的一組屬性中的一個(gè)屬性是所述二維字符字形的筆畫濃度。
75.根據(jù)權(quán)利要求73所述的方法,其中所述的一組屬性中的一個(gè)屬性是所述二維字符字形的一個(gè)基線。
76.根據(jù)權(quán)利要求73所述的方法,其中所述修改對(duì)所述的二維距離場(chǎng)進(jìn)行縮放。
77.根據(jù)權(quán)利要求73所述的方法,其中所述修改平移所述的二維距離場(chǎng)。
78.根據(jù)權(quán)利要求73所述的方法,其中所述修改變形所述的二維距離場(chǎng)。
79.根據(jù)權(quán)利要求73所述的方法,其中為代表多個(gè)二維字符字形的多個(gè)二維距離場(chǎng)增加單個(gè)的一組屬性。
80.根據(jù)權(quán)利要求50、53、64或65所述的方法,其中所述的梯度場(chǎng)被用來渲染對(duì)象的運(yùn)動(dòng)模糊。
81.根據(jù)權(quán)利要求80所述的方法,其中所述梯度場(chǎng)的方向與所述對(duì)象的運(yùn)動(dòng)方向之間的相似性被用來渲染對(duì)象的運(yùn)動(dòng)模糊。
82.一種對(duì)表示一個(gè)對(duì)象的一個(gè)二維距離場(chǎng)的一個(gè)區(qū)域進(jìn)行反鋸齒化的裝置,其中所述二維距離場(chǎng)被劃分成多個(gè)單元,每個(gè)單元包括一個(gè)在該單元內(nèi)重建所述二維距離場(chǎng)的方法,所述裝置包括識(shí)別表示一個(gè)對(duì)象的一個(gè)二維距離場(chǎng)的一個(gè)單元集合的裝置,所述單元集合與要被渲染的所述二維距離場(chǎng)的一個(gè)區(qū)域相關(guān)聯(lián);定位與所述區(qū)域相關(guān)聯(lián)的一個(gè)象素集合的裝置;為所述象素集合中的每個(gè)象素指定一個(gè)成分集合的裝置;為所述象素集合中的每個(gè)象素的每個(gè)成分確定一個(gè)反鋸齒強(qiáng)度的裝置,所述確定進(jìn)一步包括根據(jù)所述單元集合確定所述象素的所述成分的一個(gè)距離的裝置;以及將所述的距離映射成所述象素的所述成分的反鋸齒強(qiáng)度的裝置;以及用來顯示所述象素的所述成分的反鋸齒強(qiáng)度的顯示裝置。
83.根據(jù)權(quán)利要求82所述的裝置,其中所述的顯示裝置是一臺(tái)CRT顯示器。
84.根據(jù)權(quán)利要求82所述的裝置,其中所述的顯示裝置是一臺(tái)LCD顯示器。
85.根據(jù)權(quán)利要求82所述的裝置,其中所述的顯示裝置是個(gè)人數(shù)字助理的一個(gè)部件。
86.根據(jù)權(quán)利要求82所述的裝置,其中所述的顯示裝置是一臺(tái)通信設(shè)備的一個(gè)部件。
87.根據(jù)權(quán)利要求82所述的裝置,其中所述的顯示裝置是一臺(tái)游戲設(shè)備的一個(gè)部件。
88.根據(jù)權(quán)利要求82所述的裝置,其中所述的顯示裝置是一臺(tái)器械的一個(gè)部件。
89.根據(jù)權(quán)利要求82所述的裝置,其中所述的顯示裝置是一臺(tái)電子設(shè)備的一個(gè)部件。
全文摘要
一種方法及裝置,用于對(duì)表示一個(gè)對(duì)象的一個(gè)二維距離場(chǎng)的一個(gè)區(qū)域進(jìn)行反鋸齒。所述二維距離場(chǎng)被劃分成多個(gè)單元,其中每個(gè)單元包括一種在該單元內(nèi)重建所述二維距離場(chǎng)的方法。識(shí)別與所述區(qū)域相關(guān)聯(lián)的所述二維距離場(chǎng)的一個(gè)單元集合并且定位與所述區(qū)域相關(guān)聯(lián)的一個(gè)象素集合。為每個(gè)象素指定一個(gè)成分集合。為每個(gè)成分,根據(jù)所述單元集合確定一個(gè)距離,然后將該距離映射成所述象素成分的反鋸齒強(qiáng)度。
文檔編號(hào)G06F17/21GK1698072SQ200480000269
公開日2005年11月16日 申請(qǐng)日期2004年3月22日 優(yōu)先權(quán)日2003年3月25日
發(fā)明者薩拉·F·弗利斯肯, 羅納德·N·佩里 申請(qǐng)人:三菱電機(jī)株式會(huì)社