專(zhuān)利名稱(chēng):灰度上色的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及繪制對(duì)計(jì)算機(jī)系統(tǒng)的手寫(xiě)輸入,尤其是涉及平滑以光筆為基礎(chǔ)的計(jì)算機(jī)的用戶(hù)所畫(huà)的線條。
以光筆為基礎(chǔ)的計(jì)算機(jī)通常是便攜式的,因此需要輕型的輸入/輸出顯示屏。顯示器通常是這些設(shè)備中最昂貴的部件,并且通常采用LCD(液晶顯示器)屏幕。能夠接收手寫(xiě)輸入的設(shè)備通常包括一支光筆/觸針供用戶(hù)在顯示屏上進(jìn)行手寫(xiě)輸入。這些設(shè)備包括一個(gè)傳感器用于檢測(cè)與屏幕相關(guān)的手寫(xiě)用戶(hù)輸入。
術(shù)語(yǔ)“手寫(xiě)輸入”意在包羅書(shū)寫(xiě)、繪圖及其它一切劃線方式在內(nèi)的用戶(hù)用光筆在一臺(tái)以光筆為基礎(chǔ)的計(jì)算機(jī)的輸入屏上所進(jìn)行的各種輸入。本發(fā)明也適用于允許用光筆以外的其它可資利用的設(shè)備與/或直接用手指寫(xiě)、畫(huà)及劃的計(jì)算機(jī)上,如果它們存在的話。
采用某種型式的光筆傳感器來(lái)捕集LCD上的書(shū)寫(xiě)早先是通過(guò)計(jì)算光筆的位置并從已知的上一個(gè)的光筆的位置畫(huà)出一個(gè)線段或樣條而完成。畫(huà)線段或樣條的算法通常包含適當(dāng)時(shí)簡(jiǎn)單地點(diǎn)亮或熄滅曲線上的象素。這種描繪得到的效果是失真的,即在當(dāng)今常用的90dpi(點(diǎn)每英寸)LCD屏分辨率上顯示一條鋸齒相當(dāng)明顯的線。
采用灰度的等級(jí)而不是單純的黑與白能使一個(gè)圖象呈現(xiàn)比實(shí)際更高的分辨率,并有助于在一臺(tái)以光筆為基礎(chǔ)的計(jì)算機(jī)中建立較平滑的線條外觀。在本說(shuō)明書(shū)中,名詞′n級(jí)灰度′表示灰度級(jí)的實(shí)際數(shù)目,而不是存儲(chǔ)各灰度值所需的位數(shù)。例如,4級(jí)灰度需要2位存儲(chǔ)器。
利用灰度來(lái)達(dá)到畫(huà)在計(jì)算機(jī)屏幕上的線條的反走樣的一種已知的方法為“部分上色”法,一本有用的參考文獻(xiàn)為Addison Wesley1990年出版的名為“Computer GraphicsPrinciples and Practice”(計(jì)算機(jī)圖形學(xué)原理與實(shí)踐)的書(shū)。部分上色包含根據(jù)所畫(huà)的(理論上的)線條復(fù)蓋象素的份額來(lái)計(jì)算象素的上色程度。這是一種相對(duì)粗糙的方法,其優(yōu)點(diǎn)為成本低但能夠得到的結(jié)果的質(zhì)量是相當(dāng)有限的。
另一種利用灰度的方法便是與本發(fā)明相關(guān)的方法,其中包含數(shù)字采樣與濾波。
概括地說(shuō),為了在計(jì)算機(jī)屏幕上繪制一個(gè)圖象,必須采樣,即數(shù)字化該圖象。走樣便是采樣一個(gè)包含尼奎斯特(Nyquist)極限以上頻率的連續(xù)圖象的直接后果。對(duì)于采樣頻率f,連續(xù)圖象的最大頻率必須小于f/2。如果這一條件不能滿(mǎn)足,則對(duì)較高頻率的采樣會(huì)導(dǎo)致產(chǎn)生使得到圖象失真的多余的低頻成分。為了防止這一問(wèn)題,該連續(xù)圖象必須在采樣前通過(guò)在f/2上截止的一個(gè)低通濾波器。
在IEEE計(jì)算機(jī)圖形學(xué)與應(yīng)用,9(1)75—79,1989年1月,中的Blinn的名為“What we need around here is more aliasing”(我們?cè)谶@里所需要的是更多的走樣)的論文是反走樣的一般課題的有用背景參考資料。
考慮到將手寫(xiě)輸入繪制在一個(gè)計(jì)算機(jī)屏幕上的問(wèn)題,總是希望能夠以最精細(xì)的可能分辨率即一個(gè)象素的線寬來(lái)繪制,然而,這是數(shù)字化失真中的最壞情況,因?yàn)檫@時(shí)手繪的線條沿它們的長(zhǎng)度在全寬度與可忽略的寬度之間跳動(dòng)。
本發(fā)明旨在提供一種具有顯示手寫(xiě)輸入裝置的計(jì)算機(jī),其中為了使所畫(huà)的線平滑并改善其外觀,手寫(xiě)輸入是反走樣的。
本發(fā)明提供一種計(jì)算機(jī),包括使用戶(hù)能進(jìn)行手寫(xiě)輸入的裝置;具有第一分辨率并能用至少四級(jí)灰度顯示圖象的一個(gè)顯示器;用于捕集手寫(xiě)輸入并能從中導(dǎo)出第二分辨率(“高分辨率圖象”)上的一個(gè)圖象定義的傳感裝置,其中第二分辨率是高于第一分辨率的;應(yīng)用高分辨率圖象中增加的信息,在第一分辨率上顯示手寫(xiě)輸入(“輸出”)的一個(gè)反走樣版本的裝置。
上面采用了名詞“圖象定義”來(lái)包羅傳感裝置所定義而用戶(hù)從未見(jiàn)到與/或從未作為一個(gè)復(fù)合圖象存儲(chǔ)的圖象以及作為一個(gè)復(fù)合圖象顯示與/或存儲(chǔ)的圖象的情況。
本發(fā)明具有增量地即動(dòng)態(tài)地實(shí)現(xiàn)手寫(xiě)輸入的反走樣的優(yōu)點(diǎn),從而在畫(huà)出它們時(shí)得到的線條對(duì)用戶(hù)顯得更為光滑。
本系統(tǒng)最好包括用于對(duì)該高分辨率圖象進(jìn)行濾波及用于對(duì)經(jīng)過(guò)濾波的高分辨率圖象進(jìn)行采樣以便產(chǎn)生輸出的裝置。
在將要描述的實(shí)施例中,第二分辨率便是筆傳感器的分辨率。
計(jì)算機(jī)最好包括用于只將濾波裝置作用在將出現(xiàn)在輸出中的高分辨率圖象的元素上的裝置。
在一個(gè)較佳實(shí)施例中,計(jì)算機(jī)包括用于處理高分辨率圖象的有關(guān)元素的裝置而不論它們是否以前已經(jīng)被處理過(guò)。在該實(shí)施例中,更可取的是具有用于將超過(guò)最高灰度級(jí)的輸出元素設(shè)置成最高灰度級(jí)的裝置。
更可取的是,計(jì)算機(jī)的操作可以增量地在正在繪制的一條線的各新增部分上作用一個(gè)卷積核。該卷積核最好是sinc核的離散逼近。在將要描述的一個(gè)實(shí)施例中,作用在用戶(hù)正在繪制的一條線的各新增部分上的卷積核是sinc核的一種三角形逼近,即1/16121242121]]>第二分辨率最好大于第一分辨率整數(shù)倍。在將要描述的實(shí)施例中,第二分辨率為第一分辨率的兩倍。
更可取的是,根據(jù)本發(fā)明的計(jì)算機(jī)能夠進(jìn)行等于或低于16級(jí)灰度的輸入的顯示。
下面參照附圖以示例的方式描述本發(fā)明的實(shí)施例,附圖中
圖1示出sinc函數(shù),其中sincπX=Sin(πX)/πX,π是圓周率;圖2示出逼近該sinc函數(shù)的一個(gè)三角形函數(shù);圖3為根據(jù)本發(fā)明的一臺(tái)以光筆為基礎(chǔ)的計(jì)算機(jī)的示意圖;圖4為圖3的計(jì)算機(jī)的顯示器與光筆傳感器網(wǎng)格的示意圖;圖5為本發(fā)明的第一實(shí)施例的方框圖;圖6為本發(fā)明的第二實(shí)施例的方框圖。
下面將要描述的本發(fā)明的實(shí)施例包含采用分辨率較高的一種線條繪制算法的輸出、對(duì)它進(jìn)行濾波及二次采樣以得出低分辨率上的一個(gè)反走樣的圖象。概念上存在三個(gè)相關(guān)的圖象ⅰ)表示圖象象素的一個(gè)高分辨率二進(jìn)制圖象,這些象素是將要上色的,即它表示圖象象素的改變;ⅱ)一個(gè)高分辨率灰度圖象,它是采用一個(gè)卷積核使該高分辨率二進(jìn)制圖象經(jīng)過(guò)低通濾波后得出的圖象;ⅲ)二次采樣該高分辨率灰度圖象得到的一個(gè)低分辨率灰度圖象。
實(shí)際上,并不真正需要存儲(chǔ)所有上述三種圖象ⅰ)—ⅲ),這一點(diǎn)將在下面對(duì)較佳實(shí)施例的描述中加以說(shuō)明。
高分辨率灰度圖象的低通濾波可以通過(guò)用一個(gè)適當(dāng)?shù)暮瘮?shù)執(zhí)行一次卷積而完成。在本發(fā)明的角度上,要濾波的圖象并不是連續(xù)的,而是在光筆傳感器分辨率上采樣的一個(gè)離散圖象,即當(dāng)從光筆上到來(lái)新的筆畫(huà)時(shí)需要增量地加上它,因此在光筆圖象上需要執(zhí)行離散的卷積。
為了執(zhí)行這一增量繪制,所需要的濾波步驟是線性的。在帶有其所對(duì)應(yīng)的經(jīng)過(guò)平滑的圖G的一個(gè)高分辨率二進(jìn)制圖象I的情況中,在I中再加上一個(gè)象素p給出一個(gè)新的圖象I′,而對(duì)應(yīng)的圖象G′則可計(jì)算如下G′=G+(pK),其中K為平滑核而表示與核K的卷積。
換言之,需要加入以新象素的位置為中心的經(jīng)過(guò)適當(dāng)?shù)乜s放的平滑核的一個(gè)新的拷貝。
如果只計(jì)算實(shí)際需要的G′的值,即只計(jì)算影響顯示在最終圖象中的象素的平滑改變處理效率會(huì)更高。由于顯示將被二次采樣,可以認(rèn)為顯示=二次采樣(G)結(jié)果,在增量情況中顯示=二次采樣(G+(pK))=顯示+二次采樣(pK)。
眾所周知,濾去一個(gè)連續(xù)圖象中的高頻成分的理想卷積核為下列函數(shù)f(x)=sincπx=sin(πx)/πx這一函數(shù)示出在圖1中,它以減弱的振幅在X軸上下連續(xù)振動(dòng)直到正負(fù)無(wú)窮。為了進(jìn)行離散的卷積,采用了sincπX函數(shù)的一種逼近。在圖2中示出了相當(dāng)好地繪出sinc函數(shù)的中心波瓣(central1obe)(但不包括負(fù)波瓣)的sinc核的一種逼近,這是一個(gè)三角形函數(shù)。
從這一函數(shù)中抽取的核便是逼近(121)/4的(474)/15。由于一個(gè)圖象是二維的,有必要將它擴(kuò)展到其二維等價(jià)核,即1/16121242121]]>雖然還有許多其它核可以使用,但這是與本發(fā)明結(jié)合使用的較佳平滑核。
下面通過(guò)示例描述本發(fā)明的較佳實(shí)施例。
參見(jiàn)圖3,一臺(tái)計(jì)算機(jī)10包括一個(gè)屏幕12及一支光筆14。屏幕12既用于向用戶(hù)顯示圖象又用于傳感來(lái)自光筆12的輸入。計(jì)算機(jī)還包括控制芯片,諸如一塊英特爾386芯片,隨機(jī)存取存儲(chǔ)器及其它存儲(chǔ)器。
圖4用粗線示出顯示網(wǎng)格16并用細(xì)線示出光筆傳感器網(wǎng)格18,兩者都是與屏幕12相關(guān)聯(lián)的。顯示網(wǎng)格表示屏幕12的顯示象素的大小。光筆傳感器網(wǎng)格18表示光筆傳感器分辨率及感測(cè)光筆輸入的元素的大小,它們將稱(chēng)作′圖象象素′。顯示網(wǎng)格的分辨率是光筆傳感器網(wǎng)格的分辨率的一半,即每一個(gè)顯示象素中有四個(gè)圖象象素。
圖5表示在軟件中實(shí)現(xiàn)的根據(jù)本發(fā)明的系統(tǒng)的第一實(shí)施例的構(gòu)成部分。
參見(jiàn)圖5,利用諸如標(biāo)準(zhǔn)中點(diǎn)數(shù)字畫(huà)線算法之類(lèi)標(biāo)準(zhǔn)畫(huà)線算法的一個(gè)畫(huà)線部分20從光筆傳感器網(wǎng)格18上取得輸入,并生成定義正在繪制的一條線的兩個(gè)圖象象素寬′畫(huà)筆′的相繼位置,在圖4中參照數(shù)字22處的黑色圓圈。一個(gè)更新部分24計(jì)算哪些點(diǎn)新近要上色并將這一信息提供給一個(gè)平滑/二次采樣部分26。
平滑/二次采樣部分26在新象素位置上加入選定的平滑核并只計(jì)算將會(huì)出現(xiàn)在最終的低分辨圖象中的象素的灰度值,然后將這一信息提供給顯示該反走樣圖象的顯示部分28。
這一進(jìn)程的偽代碼如下renderLinePoint(x,y){1.定位畫(huà)線算法畫(huà)筆并令其與色跡相交2.對(duì)于交點(diǎn)內(nèi)尚未上色的各圖象象素{2.1確定圖象象素在顯示網(wǎng)格上的位置2.2將平滑核的適當(dāng)部分作用在有關(guān)的圖象象素的二次采樣上2.3更新在(X/2,Y/2)處的低分辨率圖象中的有關(guān)顯示象素}}再參見(jiàn)圖4,包含加陰影的矩形的圖象象素的值便是二次采樣圖象網(wǎng)格后顯示網(wǎng)格所用的值。對(duì)于灰度顯示器,這些值是在從零到灰度級(jí)的數(shù)目減一的范圍內(nèi),例如對(duì)于8個(gè)灰度級(jí)的顯示器,這些值的范圍為零至七。如果灰度級(jí)的數(shù)目等于核的規(guī)一化因子,這意味著規(guī)化因子取消而可以不計(jì)。否則必須使用一個(gè)大小等于灰度級(jí)的數(shù)目除以核中的項(xiàng)之和的規(guī)一化因子。
在圖4所示的例子中,畫(huà)線算法需要設(shè)置圖象象素(x5,y4)。下一步便是覆蓋二維平滑核使其中心落在(x5,y4)上。這將影響顯示象素(x5,y3)與(x5,y5),二者都需要加上值2。這意味著這兩個(gè)顯示象素的灰度級(jí)都要增加2。雖然理論上還有圖象網(wǎng)格的其它7個(gè)元素受到該二維卷積核的影響,但由于這7個(gè)圖象象素對(duì)于二次采樣的圖象沒(méi)有影響,因此不計(jì)算對(duì)它們的作用。這樣便將濾波與二次采樣步驟組合在一起。
因而上述偽代碼的節(jié)2.2中所謂“平滑核的適當(dāng)部分”就是指只加入作用在顯示象素上的平滑核的那些部分。這取決于新的圖象象素相對(duì)于顯示網(wǎng)格的位置。圖4示出每一個(gè)顯示象素包含4個(gè)圖象象素,并且一個(gè)圖象象素相對(duì)于對(duì)應(yīng)的顯示象素的四種可能的位置可表示為左上、右上、左下與右下。例如,圖4中的圖象象素x5,y4在左下位置中。對(duì)應(yīng)于與一個(gè)顯示象素有關(guān)的一個(gè)圖象象素4種可能位置的核的部分為左上 右上 左下 右下 對(duì)于每一個(gè)所畫(huà)的新圖象象素采取這一方法,而結(jié)果是,當(dāng)用戶(hù)畫(huà)一條線時(shí),便確定設(shè)置圖象象素的效果并更新相關(guān)的顯示象素以生成一條平滑的線條。
還可以作出進(jìn)一步的簡(jiǎn)化,下面參照本發(fā)明的第二實(shí)施例對(duì)此加以描述。
手寫(xiě)體的一個(gè)特征是存在著交點(diǎn)、折返及復(fù)雜的曲率變化。在上述實(shí)施例中,保留并使用了有關(guān)哪些圖象象素在前面已經(jīng)設(shè)置的知識(shí),因此,任何顯示象素的值是自動(dòng)地限制在允許的灰度級(jí)上的并且交點(diǎn)是不重復(fù)上色的。
然而,可以作出逼近而不用存儲(chǔ)關(guān)于哪些圖象象素已經(jīng)設(shè)置的信息(在16個(gè)灰度級(jí)的系統(tǒng)中需要為每一顯示象素內(nèi)的4個(gè)圖象象素的每一個(gè)存儲(chǔ)4位信息)。這一估算是為了對(duì)無(wú)論是否早先已上過(guò)色的圖象象素進(jìn)行上色及對(duì)正在繪制的一條線的路徑中的一個(gè)顯示象素分配一個(gè)最大灰度級(jí)值。這一逼近假定降低線的交點(diǎn)的灰度級(jí)是可取的并且它們總是趨向黑色。利用這種逼近,便沒(méi)有必要記錄已經(jīng)上過(guò)色的圖象象素。
圖6示出在軟件中實(shí)現(xiàn)的根據(jù)本發(fā)明的第二實(shí)施例的一個(gè)系統(tǒng)中的部分。
參見(jiàn)圖6,利用諸如標(biāo)準(zhǔn)中點(diǎn)數(shù)字畫(huà)線算法的一種標(biāo)準(zhǔn)畫(huà)線算法的一個(gè)畫(huà)線部分30從光筆傳感器網(wǎng)格18取得輸入并生成圖4中參照數(shù)字22處的一個(gè)黑色園圈所示的二個(gè)象素寬畫(huà)筆的相繼位置,并將這一信息提供給一個(gè)平滑/二次采樣部分32。
卷積/二次采樣部分32在最新圖象象素位置上加入選定的平滑核,并且只計(jì)算顯示象素的灰度值,即出現(xiàn)在最終的低分辨率圖象中的那些象素,并將這一信息提供給顯示反走樣圖象的顯示部分34。不論顯示象素以前是否上過(guò)色都加以更新,除非這種更新令灰度值超過(guò)容許的最大值,這時(shí)便將它設(shè)置為該最大值。
這一過(guò)程的偽代碼如下renderLinePoint(x,y){1.對(duì)于畫(huà)筆中要上墨的每一個(gè)圖象象素{1.1確定該圖象象素在顯示網(wǎng)格上的位置。
1.2將平滑核的適當(dāng)部分作用在該圖象象素的有關(guān)二次采樣上1.3更新在(x/2,y/2)上的低分辨率圖象中的相關(guān)顯示象素1.3.1檢驗(yàn)顯示象素的值,如果滿(mǎn)足溢出條件,則設(shè)置為黑色,否則更新成新值}}因此,在這一實(shí)施例中消除了為分離新上色的象素而存儲(chǔ)高分辨率的二進(jìn)制圖象的開(kāi)銷(xiāo)。反之,為了確定一個(gè)顯示象素是否已經(jīng)上色,平滑/二次采樣部分32參考低分辨率顯示,并且如果已經(jīng)上色,仍然更新該顯示象素,但是如果已經(jīng)超過(guò)了最大的灰度級(jí)則將它設(shè)置為黑色。
對(duì)于上述sinc函數(shù)可以選擇三角形逼近以外的平滑核。存在著許多其它的對(duì)sinc函數(shù)的著名逼近,它們能根據(jù)特殊的要求給出可接受的性能。其中的一個(gè)例子為0-1-2-10-1363-1-26126-2-1363-10-1-2-10]]>由于考慮到結(jié)合本發(fā)明相對(duì)地低的灰度級(jí)能夠產(chǎn)生可接受的性能,因此為了降低成本,所選擇的灰度級(jí)是理想地相對(duì)低的,例如4、8或16(一般不用不是2的冪的灰度級(jí))。
在上述實(shí)施例中,光筆傳感器的分辨率與被二次采樣以在低分辨率的輸出顯示上生成反走樣輸出的第二分辨率圖象的相同。應(yīng)當(dāng)理解光筆傳感器的分辨率可高于第二分辨率,并且本身可以二次采樣來(lái)定義第二分辨率圖象,后者又被二次采樣與濾波以提供反走樣的輸出。
第二分辨率圖象與顯示網(wǎng)格之間的2∶1的分辨率比是方便的但不是主要的。也可采用不同的分辨率比,甚至非整數(shù)的分辨率比,只要不會(huì)導(dǎo)致復(fù)雜化即可。需要相應(yīng)地選擇平滑核的規(guī)模與形式。
容易理解,本發(fā)明也可通過(guò)硬編碼以硬件實(shí)現(xiàn)從而在專(zhuān)用設(shè)備中實(shí)現(xiàn)畫(huà)線算法以及平滑與二次采樣。
權(quán)利要求
1.一種計(jì)算機(jī)(10)包括使用戶(hù)能進(jìn)行手寫(xiě)輸入的裝置(14);具有第一分辨率并能采用至少4級(jí)灰度顯示圖象的一個(gè)顯示器(12);用于捕集手寫(xiě)輸入并從中導(dǎo)出第二分辨率(′高分辨率圖象′)上的一個(gè)圖象定義的感測(cè)裝置(18),其中第二分辨率大于第一分辨率;用于用一個(gè)加權(quán)的卷積核對(duì)高分辨率圖象進(jìn)行濾波及對(duì)經(jīng)過(guò)濾波的高分辨率圖象二次采樣以便在第一分辨率上增量地顯示手寫(xiě)輸入的一個(gè)反走樣版本(′輸出′)的裝置(26)。
2.根據(jù)權(quán)利要求1的一種計(jì)算機(jī)(10),其特征在于包括用于只將卷積核(26)的有關(guān)部分作用于將出現(xiàn)在所述輸出中的高分辨率圖象的那些元素上的裝置。
3.根據(jù)權(quán)利要求1或2的一種計(jì)算機(jī)(10),其特征在于包括用于處理高分辨率圖象的相關(guān)元素而不管它們以前是否已被處理過(guò)的裝置(32)。
4.根據(jù)權(quán)利要求3的一種計(jì)算機(jī)(10),其特征在于包括用于將超過(guò)最高灰度級(jí)的輸出的元素設(shè)置為最高灰度級(jí)的裝置(32)。
5.根據(jù)前面任何一項(xiàng)權(quán)利要求的一種計(jì)算機(jī)(10),其特征在于它能夠執(zhí)行將一個(gè)卷積核增量地作用于正在描繪的一條線的各新增部分上的操作。
6.根據(jù)權(quán)利要求5的一種計(jì)算機(jī)(10),其特征在于該卷積核為sinc核的一種離散逼近。
7.根據(jù)權(quán)利要求6的一種計(jì)算機(jī)(10),其特征在于該卷積核為sinc核的一種三角形逼近。
8.根據(jù)權(quán)利要求7的一種計(jì)算機(jī)(10),其特征在于該卷積核實(shí)質(zhì)上是1/16121242121]]>
9.根據(jù)前面任何一項(xiàng)權(quán)利要求的一種計(jì)算機(jī)(10),其特征在于第二分辨率大于第一分辨率整數(shù)倍。
10.根據(jù)權(quán)利要求9的一種計(jì)算機(jī)(10),其特征在于第二分辨率是第一分辨率的兩倍。
11.根據(jù)前面任何一項(xiàng)權(quán)利要求的一種計(jì)算機(jī)(10),其特征在于它能夠執(zhí)行等于或低于16級(jí)灰度的輸出顯示的操作。
全文摘要
一種以光筆為基礎(chǔ)的計(jì)算機(jī)(10),其中用戶(hù)所畫(huà)的線是通過(guò)在分辨率相對(duì)高的光筆傳感器(18)圖像上應(yīng)用一個(gè)平滑濾波器,并二次采樣其結(jié)果而提供一個(gè)用灰度顯示的分辨率相對(duì)低的圖像(16)而增量地反走樣的。
文檔編號(hào)G06T11/20GK1122471SQ94118998
公開(kāi)日1996年5月15日 申請(qǐng)日期1994年11月23日 優(yōu)先權(quán)日1993年11月23日
發(fā)明者D·P·麥卡錫, D·E·雷諾茲 申請(qǐng)人:惠普公司