版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
"Qmputd
直線的掃描轉(zhuǎn)換
圓的掃描轉(zhuǎn)換
多邊形的掃描轉(zhuǎn)換
區(qū)域填充
光柵圖形的反走樣算法
2009-2010-2:CG:SCUEC
邊界標(biāo)志舁法--基本思想
首先用一種特殊的顏色在幀緩存中將
多邊形的邊界(水平邊的部分邊界除
外)勾畫出來,然后再把位于多邊形
內(nèi)的各個區(qū)段著上所需的顏色。
對幀緩沖存儲器中的每個元素的賦值
次數(shù)不超過2次。
、才由房施大與2009-2010-2:CG:SCUEC3
邊界標(biāo)志算法一算法實現(xiàn)
EdgeMarkFill(intp[][2],intn,intboundary_color,intpolygoncolor)
{inti,x,y,inflag,xmin,xmax,ymin,ymax;,-----
setcolor(boundary_color);/*設(shè)置畫筆色*/步驟1:以值為
boundary-color
fdr(i=O;i<n;i++)
的特殊顏色勾畫
皿皿
line(p0],p1],p[(i+l)%n][0],p[(i+l)%n])[l]);多邊形P的邊界。
從多邊形頂點數(shù)組p中,求出xmin,xmax,ymin,ymax;
fdr(y=ymin;y<=ymax;y++){
步驟2:求出多邊形
inflag=0;的最小包圍矩形。
fdr(x=xmin;x<=xmax;x++){
步驟3:逐條掃描線進(jìn)行
if(getpixel(x,y)==boundary_color)處理,對每條掃描線依
inflag=-inflag;從左往右的順序,逐個
if(inflag==l)訪問該掃描線上的像素。
putpixel(x,y,polygoncolor);每遇到邊界像素,標(biāo)志
取反。然后,按照標(biāo)志
}//endofinnerfbrloop
是否為真,決定像素是
}//endofouterfbrloop否為填充色。
}//endofalgorithm
'04南》號2009-2010-2:CG:SCUEC
邊界標(biāo)志算法一錯誤處理
?:?該算法雖然簡單,但程序運(yùn)行后會出現(xiàn)局部錯誤。
?錯誤1
-現(xiàn)象:填充時會出現(xiàn)“抽絲”。即某掃描線上不該填
充的區(qū)段填上色,而應(yīng)該填充的區(qū)段卻沒有填上色。
-原因:對于多邊形頂點為局部極值點時,掃描線與多
邊形的相交次數(shù)不再是偶數(shù),而是奇數(shù)。
解決的辦法:判斷多邊形頂點的性質(zhì),如果是局部極
值點,那么掃描線碰上它則不改變標(biāo)志。
,彳擊A施大亨2009-2010-2:CG:SCUEC5
-現(xiàn)象:當(dāng)掃描線y遇到|斜率|vl的邊界線時,碰到幾個邊界點,會
引起標(biāo)志的無序改變,將導(dǎo)致填充的錯誤。如圖(1)所示。
原因:在對多邊形的邊界進(jìn)行掃描轉(zhuǎn)換的時候,考慮了不同斜率
的情況,即|斜率|>1的時候以y為步進(jìn)方向,而|斜率的時候以x
為步進(jìn)方向。
-解決的辦法:對于不同斜率的邊界,都要使用斜率大于1的直線掃
描轉(zhuǎn)換方法:每次y方向增長一步,x方向增長1/m步距,以保證
掃描線y遇到斜率小于1的邊界時,只能遇到一個點。如圖(2)所示。
圖(1)錯誤的邊界圖(2)正確的邊界
O、彳由又菠攵身2009-2010-2:CG:SCUEC6
而又施人與2009-2010-2:CG:SCUEC7
區(qū)域填充
區(qū)域填充是指先修區(qū)域內(nèi)的
一點(常稱種子點)賦予給定
顏色,然后將這種顏色擴(kuò)展
到整個區(qū)域內(nèi)的過程。
@、彳.由A四大專2009-2010-2:CG:SCUEC8
內(nèi)點表示
把位于給定區(qū)域內(nèi)的所有像
素列舉出來的方法稱為
內(nèi)點表示法。它將區(qū)域內(nèi)的
■
所有像素填充成同一種顏色
(常稱為原色),而區(qū)域邊
界上的像素則不能填這種顏
色。如右圖,有?的方格表示
內(nèi)點,在內(nèi)點處像素填原色。內(nèi)點表示的區(qū)域
0彳94熱火手2009-2010-2:CG:SCUEC9
邊界表示法
把位于給定區(qū)域邊界上的像素
漢長漢漢漢
---列舉出來的方法稱為邊界次漢
汝漢
表示法。它將區(qū)域邊界上的像笈漢
漢漢漢漢漢
素都著上同一種顏色(常稱為漢漢漢笈
邊界色),而區(qū)域內(nèi)的像素則漢漢漢漢笈漢
漢漢
不能著這種顏色。如右圖,有漢漢
漢漢漢漢漢漢漢漢
X的方格表示邊界點,在邊界
點處像素填邊界色。邊界表示的區(qū)域
由士蘇?無?2009-2010-2:CG:SCUEC10
區(qū)域的表示和類型
區(qū)域的連通性
C四連通的區(qū)域是指從該區(qū)域內(nèi)一
點出發(fā),通過上、下、左、右四
種運(yùn)動(如圖A)的組合,在不
越出區(qū)域的前提下,可到達(dá)區(qū)域
內(nèi)的任一點。圖A四個方向的運(yùn)動
Q八連通的區(qū)域是指從該區(qū)域內(nèi)一
點出發(fā),通過沿水平方向、垂直
方向和對角線方向的八種運(yùn)動
(如圖B)的組合,在不越出區(qū)
域的前提下,可到達(dá)區(qū)域內(nèi)的任
—?八占、、。圖B八個方向的運(yùn)動
OI、才由又熱大與2009-2010-2:CG:SCUEC11
內(nèi)點表示的四連通區(qū)域邊界表示的四連通區(qū)域
內(nèi)點表示的八連通區(qū)域邊界表示的八連通區(qū)域
'彳由1押人辱2009-2010-2:CG:SCUEC12
e1…——■■^■iilli?t>—
四連通區(qū)域也可理解成八連通區(qū)域,
但兩者的邊界不盡相同。若將右圖中
標(biāo)有?號的像素組成的區(qū)域作為四連
通區(qū)域,則其邊界由圖中標(biāo)有△號的
像素組成。若將該區(qū)域作為八連通區(qū)
域,則其邊界由圖中標(biāo)有△號和X號
四連通區(qū)域與八連通區(qū)
的兩種像素組成。
域的不同邊界
_______________________________________________________£
,用于八連通區(qū)域的填充算法可用于四連通區(qū)域的填充,但用
于四連通區(qū)域的填充算法并不適用于八連通區(qū)域的填充。
而又施人與2009-2010-2:CG:SCUEC13
/、設(shè)(X,y)是內(nèi)點表示的一區(qū)域G內(nèi)
本思鳥'的一點,old_color是G的原色。先取
(”)點為,子點,測試其顏色,
若等于old_color,說明是區(qū)域內(nèi)一
點,則將其置為新的顏色new_color,否則說明該點不
在區(qū)域G內(nèi),則停止填充;然后將該點周圍的四個點
(四連通)或八個點(八連通)作為新的種子點進(jìn)行同
樣的處理,通過這種擴(kuò)散完成對整個區(qū)域的填充。顯然,
這一過程是用遞歸實現(xiàn)的。
0彳94熱火手2009-2010-2:CG:SCUEC14
遞歸算法(內(nèi)點表示的4連通區(qū)域)
flood_fill_4(intx,inty,intoldcolor,intnewcolor)
if(getpixel(framebuffer,x,y)==old_color)
(
setpixel(framebuffer,x,y,newcolor);
flood_fill_4(x,y+l,old_color,new_color);
floodfill_4(x,y-l,old_color,new_color);
floodfill_4(x-l,y,old_color,new_color);
flood_fill_4(x+l,y,old_color,new_color);
}
)
Oi、彳由I族大博2009-2010-2:CG:SCUEC15
試確定下圖區(qū)域中的點填充的順序,黑色點為種子點。
O],才由又熱大與2009-2010-2:CG:SCUEC16
掃描線種子填充算法
目標(biāo):減少遞歸層次
目標(biāo)及范圍J
范圍:適用于邊界表示的4連通區(qū)域
從給定的種子點開始,先填充種子點
所在掃描線上的位于給定區(qū)域內(nèi)的一
個區(qū)間,然后確定與這一區(qū)間相鄰的
上下兩條掃描線上需要填充的區(qū)間,
從這些區(qū)間上各取一個種子點并依次
保存下來,作為下次填充的種子點,
反復(fù)進(jìn)行這個過程,直到所保存的各
區(qū)間都填充完畢。
’市又施人與2009-2010-2:CG:SCUEC17
掃描線種子填充算法
①將堆棧置空,并修給定的種子點
算法步驟(x,y)壓入堆棧。
②若堆棧為空,算法結(jié)束;否則取
棧頂元素(%了)作為種子點。
③從種子點(x,y)出發(fā),沿縱坐標(biāo)為J的當(dāng)前掃描線
向左右兩個方向用新的顏色逐個像素地填充,直到
邊界。設(shè)區(qū)間兩邊界的橫坐標(biāo)分另1為X⑷和X.,。
④以區(qū)間]為搜索范圍,檢查與當(dāng)前掃描線相
鄰的上下兩條掃描線上的像素,若存在非邊界、未
填充的像素,則把相應(yīng)小區(qū)間中最右邊的點作為種
子點壓入堆棧,轉(zhuǎn)入②。
、,’市又施人與2009-2010-2:CG:SCUEC18
掃描線種子填充算法
push(x,y);/*種子壓入堆棧*/FB:FramBuffer
while(stack-not-empty)B:Boundary算法實現(xiàn)
N:New
pop(x,y);/*從堆棧中取一種子象素*/
savex=x:/*保存橫坐標(biāo)x的值*/x=savex-1;/*向種子的左邊填充*/
while(getpixel(FB,x,y)<>B-color)while(getpixel(FB,x,y)<>B-color)
setpixel(FB,x,y,N-color);setpixel(FB,x,y,N-color);
x=x+lx=x-1
}
xright=x-1/*保存線段的右端點*/xle仕=x+l/*保存線段的左端點*/
’市又施人與2009-2010-2:CG:SCUEC19
while(((getpixel(FB,x,y)=B-color)
(getpixel(FB,x,y)=N-color))&&(x<xright))
span-need-fill=false;(
while((getpixel(FB,x,y)<>N-color)x=x+1;
&&(getpixel(FB,x,y)<>B-color))
(
}/*在上一條掃描上檢查完*/
span-need-fill=true;
x=x+1;y=y-2;
}/*在掃描線y-1上從左向右地檢查位于區(qū)間
igspan—need—fill)[xletft,xright]上的象素,其方法與在掃描線
{
y+1上檢查的情況完全一樣,故略去詳情*/
push(x-l,y);/*右端點進(jìn)棧*/
span-need-fill=false;/*出棧完*/
掃描線種子填充算法演示例子
2009-2010-2:CG:SCUEC20
■取多邊形內(nèi)一點作為種子點,用Bresenham或DDA算法將多邊形的邊界
表示成8連通區(qū)域,則多邊形的掃描轉(zhuǎn)換問題轉(zhuǎn)化為區(qū)域填充問題
■如果知道多邊形區(qū)域的頂點表示,區(qū)域填充問題亦可轉(zhuǎn)化為多邊形的掃
描轉(zhuǎn)換問題
?差別:
■基本思想不同
?掃描轉(zhuǎn)換將多邊形的頂點表示轉(zhuǎn)換成點陣表示,掃描過程中利用了
多邊形各種形式的連貫性
?區(qū)域填充只改變區(qū)域的顏色,不改變區(qū)域的表示方法,填充過程中
利用的區(qū)域的連通性
■對邊界要求不同
?掃描轉(zhuǎn)換允許不封閉的區(qū)域,區(qū)域填充不可以
■出發(fā)點不同
?區(qū)域填充要求指定區(qū)域內(nèi)的一點作為種子點,從該點開始進(jìn)行區(qū)域
填充,掃描轉(zhuǎn)換沒有這個要求
O、才由房施大冬2009-2010-2:CG:SCUEC21
光柵圖形的走樣問題
用離散量(像素)表示連續(xù)的量(圖形)
而引起的失真,稱作走樣。
走樣現(xiàn)篆工力Q產(chǎn)生階梯狀的邊界
^Q圖形的細(xì)節(jié)失真
、狹小圖形遺失,動畫序列
中時隱時現(xiàn),產(chǎn)生閃爍
0彳94熱火手2009-2010-2:CG:SCUEC22
走樣現(xiàn)象(1/3)
?:?不光滑(階梯狀)的圖形邊界
階梯性線段階梯性邊界
彳市4羔女多2009-2010-2:CG:SCUEC23
走樣現(xiàn)象(2/3)
?圖形細(xì)節(jié)失真
、才由補(bǔ)大與
?A2009-2010-2:CG:SCUEC24
走樣現(xiàn)象(3/3)
*狹小圖形的遺失與動態(tài)圖形的閃爍
(a)
待顯
示的
狹小
矩形
(b顯)
示
結(jié)
果
O1、彳由I族大博2009-2010-2:CG:SCUEC25
反走樣方法
在圖形顯示過程中,用于減少或
消除走樣現(xiàn)象的方法
常用方法Q提高分辨率方法
Q非加權(quán)區(qū)域采樣
Q加權(quán)區(qū)域采樣
Oi、彳由I族大博2009-2010-2:CG:SCUEC26
提高分辨率的反走樣方法
提高分辨率的方法有兩種:
第一種是提高硬件的分辨率O
O1,才由又施大岑2009-2010-2:CG:SCUEC27
提高分辨率的反走樣方法
第二種是采用軟件的方法,高分辨率計算,低分辨率顯示。
高分辨率計算是指將低分辨的圖形顯示像素劃分為許多子像素,
然后計算出各個子像素的顏色值或灰度值。
低分辨率顯示是指將一像素內(nèi)的各個子像素的顏色值或灰度值的
平均值作為該像素顯示時的顏色值或灰度值。求平均值時可取算術(shù)
平均,也可取加權(quán)平均。下圖所示的是兩種典型的加權(quán)平均方法。
1234321
2468642
36912963
4812161284
36912963
2468642
1234321
(b)
◎才由*2009-2010-2:CG:SCUEC28
理想情況
1、像素是數(shù)學(xué)上抽象的點,它的面積為0,它的
亮度由覆蓋該點的圖形的亮度所決定;
2、直線段是數(shù)學(xué)上抽象直線段,它的寬度為0。
■現(xiàn)實情況
?像素的面積不為0;
?直線段的寬度至少為1個像素;
■理想與現(xiàn)實的矛盾是導(dǎo)致走樣出現(xiàn)的原因之一
I,才由信猊人塔
O2009-2010-2:CG:SCUEC29
非加權(quán)區(qū)域采樣方法
受假定每個像素都是一個具有一定面積的小
區(qū)域,將直線段看作具有一定寬度的狹長
矩形(如下圖所示)。
,當(dāng)線段通過某像素時,可以求出兩者相交
區(qū)域的面積。
Q根據(jù)相交面積的大小來確定該像素的顏色
值或灰度值。
Oi、彳由I族大博2009-2010-2:CG:SCUEC30
Q直線段對一個像素亮度的貢獻(xiàn)與兩者相交
區(qū)域的面積成正比,從而和像素中心點距
直線段的距離成反比(因為像素中心點距直
線段距離越遠(yuǎn),相交區(qū)域的面積越小);
Q當(dāng)直線段和某個像素不相交時,它對該像
素的亮度無影響;
Q相同面積的相交區(qū)域?qū)ο袼氐牧炼蓉暙I(xiàn)相
同,而與這個相交區(qū)域落在像素內(nèi)什么位
置無關(guān)。
關(guān)鍵:如何計算這個面積?
O、才由又熱大與2009-2010-2:CG:SCUEC31
有寬度的線條輪廓象素相交的五種情況及用于計算面積的量
-情況⑴(5)陰影面積為:D2/2m;
—情況⑵(4)陰影面積為:D-m/2;
-情況⑶陰影面積為:1-D2/m
像素實際顯示的灰度值==所得面積*該像素的最大灰度值
、才由房施大與2009-2010-2:CG:SCUEC32
非加權(quán)區(qū)域采樣方法
Q為了簡化運(yùn)算,有時候還
離散方法可以采用離散的方法。
Q將屏幕像素均分成n個子
像素。
Q計算中心點落在直線段內(nèi)
的子像素的個數(shù)k,那么
該像素的亮度就是最大灰
度值乘以相交區(qū)域面積的
近似值k/n。
1左圖所示是n=9,k=3,
近似面積為1/3的情況。
Oi、彳由I族大博2009-2010-2:CG:SCUEC33
非加權(quán)區(qū)域采樣方法』算您
上面的區(qū)域采樣算法存在著兩個缺點:
Q一是像素的亮度與相交區(qū)域的面積成正比,而與
相交區(qū)域落
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建省足球運(yùn)動管理中心招聘1人備考題庫及完整答案詳解一套
- 2026福建省產(chǎn)業(yè)股權(quán)投資基金有限公司福建省產(chǎn)投私募基金管理有限公司招聘備考題庫及答案詳解(考點梳理)
- 2026福建泉州南安市文昌實驗幼兒園招聘專任教師保育員保健醫(yī)生財務(wù)備考題庫完整參考答案詳解
- 2026青海海東市第二人民醫(yī)院校園引才招聘10人備考題庫及完整答案詳解
- 我國商業(yè)銀行內(nèi)部控制體系建設(shè):現(xiàn)狀、挑戰(zhàn)與優(yōu)化路徑
- 2026湖北省中國地質(zhì)大學(xué)(武漢) 計算機(jī)學(xué)院勞務(wù)派遣制工作人員招聘2人備考題庫及1套完整答案詳解
- 曲線運(yùn)動與萬有引力月考復(fù)習(xí)試卷
- 2026河南鄭州科創(chuàng)學(xué)校小學(xué)部教師招聘備考題庫附答案詳解
- 2026浙江寧波市奉化區(qū)甬臺眾創(chuàng)小鎮(zhèn)開發(fā)建設(shè)有限公司招聘1人備考題庫及參考答案詳解一套
- 家園共育方案效果評估試卷
- 2025-2026學(xué)年通-用版英語 高一上學(xué)期期末試題(含聽力音頻答案)
- 高考英語3500詞分類整合記憶手冊(含完整中文釋義)
- 2025年新疆公務(wù)員《行政職業(yè)能力測驗》試題及答案
- 中醫(yī)護(hù)理案例分享
- 骨密度檢測的臨床意義
- 食管良性腫瘤的護(hù)理
- 消防設(shè)施操作規(guī)程標(biāo)準(zhǔn)
- 2025及未來5年手持探頭項目投資價值分析報告
- 2025年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 醫(yī)療器械專員工作計劃及產(chǎn)品注冊方案
- GB/T 20002.5-2025標(biāo)準(zhǔn)中特定內(nèi)容的編寫指南第5部分:涉及可持續(xù)性
評論
0/150
提交評論