




已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
精品文檔反走樣設(shè)計(jì)與實(shí)現(xiàn)學(xué) 生 董慶洋班 級 2012級四班反走樣設(shè)計(jì)與實(shí)現(xiàn)董慶洋摘 要:圖形圖像技術(shù)是現(xiàn)代社會信息化的重要技術(shù),而走樣卻是數(shù)字化表示圖形圖像的必然產(chǎn)物。為了提高圖形的顯示質(zhì)量,需要減少或消除走樣現(xiàn)象,用于減少或消除這種效果的技術(shù)稱為反走樣。消除或減緩走樣現(xiàn)象,給人視覺上產(chǎn)生更舒適光滑的圖形,在圖形界面已成為人機(jī)交互主流方式的今天,具有一定的應(yīng)用價(jià)值。本文介紹了幾種常用的反走樣方法,主要有:提高分辨率來顯示圖形對象、區(qū)域采樣、加權(quán)區(qū)域采樣以及改進(jìn)的反走樣方法:Wu像素反走樣。關(guān)鍵詞:走樣;反走樣;過取樣;區(qū)域取樣;加權(quán)區(qū)域取樣;Wu像素反走樣1.引入走樣與反走樣光柵圖形顯示器是目前使用最廣泛的圖形顯示器,因?yàn)樗哂幸韵聝?yōu)點(diǎn):光柵掃描顯示器具有固定的刷新順序,掃描從屏幕的左上角開始,從左到右,從上到下的順序進(jìn)行刷新,從而刷新控制部件得以簡化,節(jié)約了成本。在光柵顯示系統(tǒng)中,構(gòu)成圖形的最小圖形元素是像素,這樣只要計(jì)算屏幕上位于給定區(qū)域以內(nèi)的所有像素,并且賦予一定的顏色,就完成了圖形的繪制。光柵顯示器中的圖形由像素構(gòu)成,而每一個(gè)像素又可呈現(xiàn)出多級灰度或不同的顏色值,顏色豐富,顯示出來的圖形具有更好的視覺效果。光柵掃描顯示器是一個(gè)畫點(diǎn)設(shè)備,與圖形的復(fù)雜度無關(guān),刷新頻率固定,因此不會像隨機(jī)掃描顯示器那樣出現(xiàn)閃爍現(xiàn)象,人眼看上去更舒服。但光柵顯示器也有它的缺陷,數(shù)學(xué)意義上的圖形是由無線多個(gè)連續(xù)的、面積為零的點(diǎn)構(gòu)成,而光柵顯示系統(tǒng)中用來表示圖形的卻是一個(gè)個(gè)離散的,具有一定面積的像素。用離散的像素來表示連續(xù)的圖形時(shí)會出現(xiàn)失真,也就稱為走樣。光柵顯示系統(tǒng)為何會出現(xiàn)走樣呢?光柵圖形顯示器上被顯示的線段、字符、圖形及背景色都按像素點(diǎn)一一存儲在幀緩沖存儲器中。當(dāng)我們要畫一條直線時(shí),它通常不可能完全精確地從一個(gè)可編址的像素點(diǎn)畫一條直線到另一個(gè)可編址的像素點(diǎn),只可能用盡可能靠近這條直線路徑的像素點(diǎn)集來近似地表示這條直線。顯然只有畫水平線、垂直線時(shí),像素點(diǎn)集在直線路徑上的位置才是準(zhǔn)確的,其他情況下的直線均或多或少地存在階梯狀(鋸齒狀)的現(xiàn)象。光柵圖形的走樣現(xiàn)象除了上述鋸齒狀邊界外,還有圖形細(xì)節(jié)失真,狹小圖形遺失等現(xiàn)象。為了提高圖形的顯示質(zhì)量,需要減少或消除走樣現(xiàn)象,這種用于減少或消除走樣現(xiàn)象的技術(shù)稱為反走樣技術(shù)。2.實(shí)現(xiàn)反走樣技術(shù)的一些方法2.1 過取樣技術(shù)一種簡單的反走樣方法是以較高的分辨率顯示對象,如圖1。假設(shè)把顯示器分辨率提高一倍,直線經(jīng)過兩倍的像素,鋸齒也增加一倍,但同時(shí)每個(gè)階梯的寬度也減小了一倍,所以顯示出的直線段看起來就平直光滑了一些。這種反走樣方法是以4倍的存儲器代價(jià)和掃描轉(zhuǎn)換時(shí)間獲得的。因此,增加分辨率雖然簡單,但是不經(jīng)濟(jì)的方法,而且它也只能減輕而不能消除鋸齒問題。但是它的思想給我們以后的反走樣方法一定的啟示。 (1)圖1 分辨率提高一倍,階梯程度減小一倍一種可行的反走樣方法:在較高分辨率下用點(diǎn)取樣方法計(jì)算,然后對幾個(gè)像素的屬性進(jìn)行平均得到較低分辨率下的像素屬性,這種技術(shù)稱為過取樣(Supersampling),或后濾波(Postfiltering)。該技術(shù)是把顯示器看成是比實(shí)際更細(xì)的網(wǎng)格來增加取樣率,然后根據(jù)這種更細(xì)的網(wǎng)格使用取樣點(diǎn)來確定每個(gè)屏幕像素合適的亮度等級。2.1.1 提高分辨率方法過取樣方式的一個(gè)簡單實(shí)現(xiàn)是用較高的分辨率進(jìn)行計(jì)算,如圖2,在x方向和y 方向上把分辨率提高一倍,使每個(gè)像素都對應(yīng)4個(gè)子像素,然后掃描轉(zhuǎn)換求得各子像素的顏色亮度,再對4個(gè)像素的顏色亮度進(jìn)行平均,得到較低分辨率下的像素顏色亮度。由于像素中可供選擇的子像素最大數(shù)目是4,因此,該例中提供的亮度等級數(shù)是5。圖中,編號為1和7的像素亮度級別是1,編號為2,3,4,5和6的像素亮度是2。通過這個(gè)方法為圖中的每個(gè)像素設(shè)定不同的灰度值,可以使顯示出來的直線看起來平滑一些,達(dá)到減少走樣現(xiàn)象。圖2 簡單的過取樣方式2.1.2 基于加權(quán)模板的過取樣另一種過取樣方式(重疊過取樣)。為了得到更好的效果,在對一個(gè)像素點(diǎn)進(jìn)行著色處理時(shí),不僅僅只對其本身的子像素進(jìn)行采樣,同時(shí)對其周圍的多個(gè)像素的子像素進(jìn)行采樣,來計(jì)算該點(diǎn)的顏色屬性。如圖3所示。由于接近像素區(qū)域中心的子像素在決定像素的顏色亮度值中發(fā)揮著重要的作用,因此過取樣算法中采用了加權(quán)平均的方法來計(jì)算顯示像素的顏色亮度值(基于加權(quán)模板的過取樣)。圖4示出了33像素分割常采用的加權(quán)模板。中心子像素的權(quán)是角子像素的4倍,是其他子像素的2倍,中心子像素的加權(quán)系數(shù)是1/4,頂部和底部及兩側(cè)子像素的加權(quán)系數(shù)是1/8,而角子像素的加權(quán)系數(shù)是1/16。 圖3 重疊過取樣】 圖4 常用的加權(quán)模板2.1.3 過取樣算法的實(shí)現(xiàn)對于過取樣,不管用哪一種方法都需要在內(nèi)存中建立一個(gè)比現(xiàn)在大幾倍的圖,便于對像素取樣,取得像素的亮度值。具體實(shí)現(xiàn)的算法如下:void SuperSamplingLine(int xa, int ya, int xb, int yb,boolean Weighted) int dx = xb-xa+1, dy = yb-ya+1, x,y,xs,ys,i,j,s, w33= 1,2,1, 2,4,2, 1,2,1; BYTE gray; Graphics:TBitmap * big_bmp; big_bmp = new Graphics:TBitmap(); big_bmp-Width = 3*dx; big_bmp-Height = 3*dy; /設(shè)置白底色 big_bmp-Canvas-Brush-Color = clWhite; big_bmp-Canvas-FillRect(big_bmp-Canvas-ClipRect); big_bmp-Canvas-Refresh(); /設(shè)置綠筆 big_bmp-Canvas-Pen-Color = clGreen; big_bmp-Canvas-MoveTo(1,1); big_bmp-Canvas-LineTo(3*dx-1,3*dy-1); for (x=xa;x=xb;x+) xs = 3*(x-xa); for (y=ya;y=yb;y+) ys = 3*(y-ya); s = 0; for (i=xs;ixs+3;i+) for (j=ys;jCanvas-Pixelsij=clGreen) if (Weighted) s=s+wi-xsj-ys; else s+; if (Weighted) gray = (BYTE)(255.0 - s*(255.0/8.0); else gray = (BYTE)(255.0-s*(255.0/3.0); Form1-Image2-Canvas-Pixelsxy=RGB(gray,gray,gray); 2.2 區(qū)域取樣2.2.1 簡單的區(qū)域取樣在整個(gè)像素區(qū)域內(nèi)進(jìn)行采樣的技術(shù)稱為區(qū)域取樣,又由于像素的亮度是作為一個(gè)整體被確定的,不需要劃分子像素,故也被稱為前置濾波。直線段掃描轉(zhuǎn)換算法中均假定像素是數(shù)學(xué)上的一個(gè)點(diǎn),像素顏色是由對應(yīng)于像素中心的圖形中一點(diǎn)的顏色決定的;并且直線段是數(shù)學(xué)上抽象的直線段,它的寬度是0。但實(shí)際上像素不是一個(gè)點(diǎn),而是一個(gè)有限區(qū)域。屏幕上所畫的直線不是數(shù)學(xué)意義上的無寬度的理想線段,而是一個(gè)寬度至少為一個(gè)像素單位的線條。因此,將屏幕上的直線段看成如圖5中顯示的矩形更為合理。算法中所假定的條件和實(shí)際情況之間的差距是造成走樣的原因之一。為了減少走樣,必須改變直線段的模型,從而得到了簡單區(qū)域取樣的方法,這個(gè)方法的具體步驟是:1)將直線看成具有一定寬度的狹小矩形; 2)當(dāng)直線與像素相交時(shí),求出兩者相交區(qū)域的面積;3)根據(jù)相交區(qū)域的面積,確定像素的亮度值;相交面積大的像素亮度高,相交面積小的像素亮度低。 圖5 有寬度的直線段這種方法將產(chǎn)生模糊的邊界,以此來減輕鋸齒效應(yīng)。在圖5中,像素1約有40被線條區(qū)域覆蓋,因此該像素的亮度就設(shè)置為線條亮度的40。同樣,像素2的亮度設(shè)置為線條亮度的60,而像素3的亮度則設(shè)置為線條亮度的90,等等。對于圖5中寬度線段的任何一個(gè)像素而言,其面積S是介于0-1之間的正數(shù),用它乘以像素的最大光強(qiáng)為Imax,則該像素的光強(qiáng)I=SImax。區(qū)域取樣中,起關(guān)鍵作用的是直線段與像素相交區(qū)域的面積。這個(gè)面積可根據(jù)直線的斜率K和直線的精確起點(diǎn)位置求出。如圖6中(a)所示情況為例,如果已知直線的精確起點(diǎn),則可得到圖中的D值,利用D和直線斜率K可以得到相交區(qū)域的面積:12D(D/K)=(DD)/(2K)。同樣,可以計(jì)算出(b)中重疊區(qū)域的面積。圖6 重疊區(qū)域面積的計(jì)算在OpenGL中實(shí)現(xiàn)這種算法,現(xiàn)在利用改進(jìn)后的Bresenham反走樣畫線算法,如下:BresenhamAntialiasingLine(int x1, int y1, int x2, int y2,int I)/ (x1, y1),(x2, y2)分別是直線的起點(diǎn)和終點(diǎn)/ I是畫線的最大亮度值int x,y,dx,dy,m,w,e;x = x1;y = y1;dx = x2x1;dy = y2y1;m = I*dy/dx;w = Im;e = I/2;SetPixel(x,y,m/2);while (x x2)if (e w)x +;e += m;elsex +;y+;e -= m;SetPixel(x,y,e); 為了簡化計(jì)算,可以利用一種求相交區(qū)域近似面積的離散計(jì)算方法:1)將屏幕像素分割成n個(gè)更小的子像素,2)計(jì)算中心落在直線段內(nèi)的子像素的個(gè)數(shù)m,3) m/n為線段與像素相交區(qū)域面積的近似值。這種簡單的區(qū)域采樣也稱為非加權(quán)區(qū)域采樣,這種方法有兩個(gè)缺點(diǎn):像素的亮度與相交區(qū)域的面積成正比,而與相交區(qū)域落在象素內(nèi)的位置無關(guān),這仍然會導(dǎo)致鋸齒效應(yīng)。直線條上沿理想直線方向的相鄰兩個(gè)象素有時(shí)會有較大的灰度差。為了克服這樣的缺點(diǎn),可以采用加權(quán)區(qū)域采樣方法,使相交區(qū)域?qū)ο笏亓炼鹊呢暙I(xiàn)依賴于該區(qū)域與象素中心的距離。2.2.2 加權(quán)區(qū)域采樣在區(qū)域取樣中,我們使用覆蓋像素的連續(xù)的加權(quán)函數(shù)(Weighting Function)或?yàn)V波函數(shù)(Filtering Function)來確定像素的亮度。加權(quán)函數(shù)W(x,y)是定義在二維顯示平面上的函數(shù)。對于位置為(x,y)的小區(qū)域dA來說,函數(shù)值W(x,y)(也稱為在(x,y)處的高度)表示小區(qū)域dA的權(quán)值。將加權(quán)函數(shù)在整個(gè)二維顯示圖形上積分,得到具有一定體積的濾波器(Filter),該濾波器的體積為1。將加權(quán)函數(shù)在顯示圖形上進(jìn)行積分,得到濾波器的一個(gè)子體,該子體的體積介于0到1之間。用它來表示像素的亮度。如圖7所示的盒式濾波器:圖7 盒式濾波器的加權(quán)區(qū)域取樣 除了盒式濾波器外,常用的濾波器還有圓錐濾波器和高斯濾波器(如圖8所示)。濾波器的底可以具有不同的大小,類似于過取樣加權(quán)模板的大小,但是為了獲得較好的效果,盒式濾波器的底常取作邊長為像素單位整數(shù)倍的正方形,而圓錐濾波器和高斯濾波器的底則是半徑為像素單位整數(shù)倍的圓。圖8 常用的濾波函數(shù)這種加權(quán)區(qū)域采樣的特點(diǎn)是:接近理想直線的象素將被分配更多的灰度值。 相鄰兩個(gè)象素的濾波器相交,有利于縮小直線條上相鄰象素的灰度差。2.3 反走樣算法的改進(jìn)通常的整數(shù)畫線因?yàn)橹荒茉谡麛?shù)坐標(biāo)上繪圖,所以產(chǎn)生難看的鋸齒。因此,我們可以用一種非整數(shù)坐標(biāo)改進(jìn)它,Wu像素反走樣就是一種可以處理非整數(shù)坐標(biāo)的方法。Wu像素的繪制原理是:1)繪制多個(gè)像素代替一個(gè)像素2)理論點(diǎn)位置不一定在屏幕像素的正中,這個(gè)偏差是我們按偏差的比例來繪制多個(gè)像素來代替理論像素的根據(jù)。3)繪制的多個(gè)像素灰度和要于原像素相等。一個(gè)WU直線不僅僅是看上去比一個(gè)普通直線好,它也產(chǎn)生更好的動畫。一個(gè)普通的直線從一個(gè)位置簡單的跳到下一個(gè)位置。然而,一條Wu直線非常悠閑的漂到下一個(gè)位置,最終的算法相當(dāng)容易實(shí)現(xiàn),但是在實(shí)際應(yīng)用中顯得太慢。因此,還有待于改進(jìn)。3.總結(jié)在分析討論了反走樣理論知識的基礎(chǔ)上,本論文實(shí)現(xiàn)了普通過取樣、加權(quán)過取樣、普通區(qū)域取樣、加權(quán)區(qū)域取樣、Wu像素反走樣算法。即:在高于顯示分辨率的較高分辨率下用點(diǎn)取樣方法計(jì)算,然后對幾個(gè)象素的屬性進(jìn)行平均得到較低分辨率下的象素屬性的技術(shù)稱為過取樣,或后濾波;在整個(gè)像素區(qū)域內(nèi)進(jìn)行采樣的技術(shù)稱為區(qū)域取樣,這種技術(shù)由于像素的亮度是作為一個(gè)整體被確定的,不需要劃分子像素,故也被稱為前置濾波;而加權(quán)區(qū)域取樣技術(shù)是基于這兩種技術(shù)之上:過取樣中,我們對所有子像素的亮度進(jìn)行簡單平均或加權(quán)平均來確定像素的亮度;在區(qū)域取樣中,我們使用覆蓋像素的連續(xù)的加權(quán)函數(shù)(Weighting Function)或?yàn)V波函數(shù)(Filtering Function)來確定像素的亮度。對于這幾種反走樣方法的比較:過取樣是在較高分辨率下用點(diǎn)取樣方法計(jì)算,然后對幾個(gè)像素的屬性進(jìn)行平均得到較低分辨率下的像素屬性。由于是對每個(gè)像素進(jìn)行平均值計(jì)算,因此速度明顯慢了很多。普通區(qū)域取樣是將直線看成具有一定寬度的狹小矩形,當(dāng)直線與像素相交時(shí),求出兩者相交區(qū)域的面積,然后確定像素的亮度值,達(dá)到反走樣效果。區(qū)域取樣的速度要比過取樣快得多,不過從效果上來講,還是過取樣的視覺效果更好,更平滑。但由于這些方法畫線只能在整數(shù)坐標(biāo)上繪圖,會產(chǎn)生難看的鋸齒,我們又可以選在非整數(shù)坐標(biāo)上繪圖的方法Wu像素反走樣。因此,在實(shí)際應(yīng)用中要根據(jù)需要來選取不同的反走樣算法。參考文獻(xiàn): 1 計(jì)算機(jī)圖形學(xué)基礎(chǔ)/陸楓,何云峰編著 2版 北京:電子工業(yè)出版社;2008.10 高等學(xué)校規(guī)劃教材2 常進(jìn);OpenGL機(jī)載圖形生成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 度森林資源使用權(quán)轉(zhuǎn)讓合同
- 裝修工程勞動合同合同樣本
- 區(qū)域合作分銷合同協(xié)議
- 合同履行完畢確認(rèn)聲明書
- 黃山風(fēng)景區(qū)國內(nèi)旅游合同
- 私人借款合同樣本及還款細(xì)則
- 境外就業(yè)派遣合同
- 商業(yè)綜合體停車位租賃合同范本
- 商標(biāo)糾紛和解合同細(xì)則
- 木材加工企業(yè)的品牌形象宣傳與公關(guān)活動考核試卷
- 2024 年袋鼠數(shù)學(xué)競賽 等級E(中國區(qū))
- 【《海信電器企業(yè)作業(yè)成本法下的物流成本核算分析》8500字】
- 2024年南京旅游職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫匯編
- 2024年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及一套參考答案
- 2022年袋鼠數(shù)學(xué)競賽真題一二年級組含答案
- JJF 2104-2024 海水溶解氧測量儀校準(zhǔn)規(guī)范
- 情緒管理團(tuán)體輔導(dǎo)專項(xiàng)方案
- 一年級美術(shù)課后輔導(dǎo)方案-1
- 《鍛造安全生產(chǎn)》課件
- 小學(xué)數(shù)學(xué)1-6年級(含奧數(shù))找規(guī)律專項(xiàng)及練習(xí)題附詳細(xì)答案
- 《同濟(jì)大學(xué)簡介》課件
評論
0/150
提交評論