计算机图案填充的两种方法,计算机图形学课件 第9讲 区域填充和字符处理.ppt...
計(jì)算機(jī)圖形學(xué)課件 第9講 區(qū)域填充和字符處理
信息科學(xué)與工程學(xué)院 1999年7月 5.4.1 多邊形的掃描轉(zhuǎn)換 多邊形的兩種表示方法: 頂點(diǎn)表示:用多邊形的頂點(diǎn)序列來(lái)刻劃多邊形。直觀、幾何意義強(qiáng)、占內(nèi)存少;不能直接用于面著色。 點(diǎn)陣表示是用位于多邊形內(nèi)的像素的集合來(lái)刻劃多邊形。失去了許多重要的幾何信息;便于運(yùn)用幀緩沖存儲(chǔ)器表示圖形,易于面著色。 算法步驟: (1)確定多邊形所占有的最大掃描線數(shù),得到多邊形頂點(diǎn)的最小和最大y值(ymin和ymax)。 (2)從y=ymin到y(tǒng)=ymax,每次用一條掃描線進(jìn)行填充。對(duì)一條掃描線填充的過(guò)程可分為四個(gè)步驟: a. 求交:計(jì)算掃描線與多邊形各邊的交點(diǎn); b. 排序:把所有交點(diǎn)按x值遞增順序排序; c. 配對(duì):第一個(gè)與第二個(gè),第三個(gè)與第四個(gè)等等;每對(duì)交點(diǎn)代表掃描線與多邊形的一個(gè)相交區(qū)間; d. 填色:把相交區(qū)間內(nèi)的像素置成多邊形顏色,把相交區(qū)間外的像素置成背景色。 存在問(wèn)題和解決方法:當(dāng)掃描線與多邊形頂點(diǎn)相交時(shí),交點(diǎn)的取舍問(wèn)題。 3. 改進(jìn)的有效邊表算法(Y連貫性算法) 有效邊(Active Edge):指與當(dāng)前掃描線相交的多邊形的邊,也稱(chēng)為活性邊。 有效邊表(Active Edge Table, AET):把有效邊按與掃描線交點(diǎn)x坐標(biāo)遞增的順序存放在一個(gè)鏈表中,此鏈表稱(chēng)為有效邊表。 有效邊表的每個(gè)結(jié)點(diǎn): x ymax 1/k next 邊表(Edge Table)——方便有效邊的建立和更新 邊表的構(gòu)造: (1)首先構(gòu)造一個(gè)縱向鏈表,鏈表的長(zhǎng)度為多邊形所占有的最大掃描線數(shù),鏈表的每個(gè)結(jié)點(diǎn),稱(chēng)為一個(gè)桶,其對(duì)應(yīng)多邊形覆蓋的每一條掃描線。 (2)將每條邊的信息鏈入與該邊最小y坐標(biāo)(ymin )相對(duì)應(yīng)的桶處。也就是說(shuō),若某邊的較低端點(diǎn)為ymin,則該邊就放在相應(yīng)的掃描線桶中。 (3)每條邊的數(shù)據(jù)形成一個(gè)結(jié)點(diǎn),內(nèi)容包括:該掃描線與該邊的初始交點(diǎn)x(即較低端點(diǎn)的x值),1/k,以及該邊的最大y值ymax。 x|ymin ymax 1/k next 算法步驟: (1)初始化:構(gòu)造邊表,AET表置空; (2)將第一個(gè)不空的ET表中的邊與AET表合并; (3)由AET表中取出交點(diǎn)對(duì)進(jìn)行填充。 填充時(shí)設(shè)一布爾變量b(初值為假),令指針從AET中第一個(gè)結(jié)點(diǎn)到最后一個(gè)結(jié)點(diǎn)遍歷一次,每訪問(wèn)一個(gè)結(jié)點(diǎn),把b取反一次,若b為真,則把從當(dāng)前結(jié)點(diǎn)的x值到下一結(jié)點(diǎn)的x值結(jié)束的區(qū)間用多邊形色填充。填充之后刪除y=ymax的邊。(期間,x=round(x) ) (4)yi+1=yi+1,根據(jù)xi+1=xi+1/k計(jì)算并修改AET表,同時(shí)合并ET表中y=yi+1桶中的邊,按次序插入到AET表中,形成新的AET表; (5)AET表不為空則轉(zhuǎn)(3),否則結(jié)束。 5.4.2 邊緣填充算法 邊緣填充算法基本思想 按任意順序處理多邊形的每條邊。在處理每條邊時(shí),首先求出該邊與掃描線的交點(diǎn),然后將每一條掃描線上交點(diǎn)右方的所有像素取補(bǔ)。 5.4.3 區(qū)域填充 區(qū)域填充是指從區(qū)域內(nèi)的一個(gè)點(diǎn)(種子)開(kāi)始,由內(nèi)向外將填充色擴(kuò)展到整個(gè)區(qū)域內(nèi)的過(guò)程。 區(qū)域是指已經(jīng)表示成點(diǎn)陣形式的填充圖形,它是像素集合。通常有內(nèi)點(diǎn)表示和邊界表示兩種形式。 邊界表示法 邊界表示法:把位于給定區(qū)域的邊界上像素一一列舉出來(lái)的方法。 在邊界表示法中,區(qū)域邊界上的像素著同一顏色,而區(qū)域內(nèi)的像素點(diǎn)不能著這種顏色。 由于邊界以特殊顏色指定,填充算法可逐個(gè)像素地向外處理,直到遇到邊界顏色為止。以此為基礎(chǔ)的區(qū)域填充算法稱(chēng)為邊界填充算法(Boundary-fill Algorithm)。 內(nèi)點(diǎn)表示法 內(nèi)點(diǎn)表示:枚舉出給定區(qū)域內(nèi)所有像素的表示方法。 在內(nèi)點(diǎn)表示法中,區(qū)域內(nèi)的所有像素點(diǎn)著同一顏色,而區(qū)域邊界上的像素著不同的顏色。 以內(nèi)點(diǎn)表示法為基礎(chǔ)的區(qū)域填充算法稱(chēng)為泛填充算法(Flood-fill Algorithm)。 區(qū)域通常分為4-連通區(qū)域和8-連通區(qū)域兩類(lèi)。 一個(gè)點(diǎn)p的4-鄰接點(diǎn)是指上、下、左、右四個(gè)相鄰的點(diǎn)。 一個(gè)點(diǎn)p的8-鄰接點(diǎn)是指上、下、左、右、左上、右上、左下、右下八個(gè)相鄰的點(diǎn)。 4-連通區(qū)域是指從區(qū)域上一點(diǎn)出發(fā),通過(guò)訪問(wèn)已知點(diǎn)的4-鄰接點(diǎn),在不越出區(qū)域的前提下,遍歷區(qū)域內(nèi)的所有像素。 8-連通區(qū)域是指從區(qū)域上一點(diǎn)出發(fā),通過(guò)訪問(wèn)已知點(diǎn)的8-鄰接點(diǎn),在不越出區(qū)域的前提下,遍歷區(qū)域內(nèi)的所有像素。 1. 邊界填充算法 算法的輸入:種子點(diǎn)坐標(biāo)(x,y),填充色和邊界顏色。 棧結(jié)構(gòu)實(shí)現(xiàn)4-連通邊界填充算法的算法步驟為: 種子像素入棧;當(dāng)棧非空時(shí)重復(fù)執(zhí)行如下三步操作: (1)棧頂像素出棧; (2)將出棧像素置成填充色;
總結(jié)
以上是生活随笔為你收集整理的计算机图案填充的两种方法,计算机图形学课件 第9讲 区域填充和字符处理.ppt...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android mp4语音识别,怎样用语
- 下一篇: maven仲裁机制_maven仲裁机制