1. 程式人生 > >圖形學(6)多邊形的區域填充

圖形學(6)多邊形的區域填充

本模組內容絕大部分是在慕課上看中國農業大學網客時的筆記,因此算作轉載,在此鳴謝趙明、李振波兩位老師,感謝他們錄製該門課程供大家學習!

區域是指已經表示成點陣形式的填充圖形,是象素的集合。區域填充有別於掃描轉換,是指將區域內的一點(常稱種子點)賦予給定顏色,然後將這種顏色擴充套件到整個區域內的過程。

多邊形的區域填充

區域的表示方法

區域的表示有內點表示和邊界表示兩種。

內點表示

枚舉出區域內部的所有畫素,內部的所有畫素著同一個顏色,邊界畫素著與內部畫素不同的顏色

邊界表示

枚舉出邊界上的所有畫素,邊界上的所有畫素著同一個顏色,內部畫素著與邊界畫素不同的顏色

演算法要求

區域填充演算法要求被填充的區域是“連通”的,以便於顏色點的擴散。而具體的區域連通方式又分四連通區域和八連通區域兩種。其區別在於,四連通區域從區域上任一點出發,通過向上下左右四個方向移動的組合,在不超出區域的前提下,總能達到區域內的任意一點,而八連通則不僅限於上下左右,左上、左下、右上、右下也參與到組合當中。下圖形象地解釋了兩者的小小差異。

 

種子填充

種子填充是在已知區域內部某一畫素及其顏色或灰度的情況下,由該畫素出發,找到(一般用遞迴方法)所有在區域內的點並用該顏色或灰度填充的區域填充演算法。

演算法步驟

簡單的種子填充演算法可以使用棧結構實現。

種子畫素入棧

當棧非空時,迴圈執行如下操作:

    1. 棧頂畫素出棧
    2. 將出棧畫素置為填充色
    3. 按照左、上、右、下(以四連通為例,八連通類似)順序檢查相鄰四個畫素是否不在邊界上且未填充顏色,如果條件成立,則令該畫素入棧

 

但是這個簡單的演算法不足之處也很明顯,即:

    • 有些畫素會多次入棧,影響效率
    • 棧結構是比較佔空間的
    • 遞迴結果的效率不高(關於遞迴的效率問題可以查閱百度或翻看資料結構相關書籍以瞭解),費時間費記憶體

對於該演算法的改進,可以從減少遞迴次數方向入手。(其實筆者感覺,既然邊界畫素與內部畫素都已經區分開了,那麼上一篇的邊界標誌演算法要比這個效率高很多……)

與多邊形的掃描轉換演算法比較

基本思想不同

多邊形掃描轉換是將多邊形的指定頂點表示轉化為點陣表示;區域填充只改變區域的填充顏色,不改變區域的表示方法

基本條件不同

在區域填充演算法中,要求已知邊界及區域內一點作為種子點,然後用棧結構和遞迴對其進行“擴散”;掃描轉換要求已知邊界(頂點),然後從多邊形的幾何屬性出發,根據多種形式的連貫性,利用一套特殊的資料結構和掃描線進行填充。

區域填充的填充方式

實區域顏色或圖案繪製

某種顏色或圖案繪製

多種畫筆,顏色/透明度引數繪製

相關的知網文件推薦


相關推薦

圖形6多邊形區域填充

本模組內容絕大部分是在慕課上看中國農業大學網客時的筆記,因此算作轉載,在此鳴謝趙明、李振波兩位老師,感謝他們錄製該門課程供大家學習! 區域是指已經表示成點陣形式的填充圖形,是象素的集合。區域填充有別於掃描轉換,是指將區域內的一點(常稱種子點)賦予給定顏色,然後將這種顏色

圖形5多邊形的掃描轉換

本模組內容絕大部分是在慕課上看中國農業大學網客時的筆記,因此算作轉載,在此鳴謝趙明、李振波兩位老師,感謝他們錄製該門課程供大家學習! X-掃描線改進演算法 由於X-掃描線演算法的效率問題,下面給出如何巧妙地避免演算法中的求交運算從而提高效率。 重要思想 進行

計算機圖形多邊形裁剪Sutherland-Hodgeman演算法講解與原始碼

因為最近CSDN上傳資源出現問題,無法上傳,等可以上傳之後再給出下載地址。 原始碼下載:點我下載 首先講一下演算法的原理: Sutherland-Hodgeman演算法: 基本思想是一次用視窗的一條邊裁剪多邊形。 考慮視窗的一條邊以及延長線構成的裁剪線,該線把平面分成兩

計算機圖形輸出圖元_10_多邊形填充區_3_內-外測試

內-外測試        各種圖形處理經常需要鑑別物件的內部區域。識別簡單物件如凸多邊形、圓或橢圓的內部通常是一件很容易的事情。但有時我們必須處理較複雜的物件。例如,我們可能描述一個圖3.46所示的有相交邊的複雜填充區。在該形狀中,xy平面上哪一部分為物件邊界的“內部”、哪

計算機圖形掃描線多邊形填充演算法講解與原始碼

如果喜歡轉載請標明出處: 並非菜鳥菜鳥的部落格 在這裡先說下演算法的實現過程 本人覺得這個演算法實現起來還是有點難度的!很多人都不願意去看太多描述性的文字,所以對這個演算法的過程是什麼大概也不知道,那麼我在這裡簡要的說一些! 演算法實現過程中應用兩個資料結構:

【計算機圖形】圖元的區域填充多邊形區域填充

相關資料來源於網路,侵刪歉。 如果文章中存在錯誤,請下方評論告知我,謝謝! 多邊形的區域填充 首先,我們瞭解一下多邊形。 多邊形可以簡單地分為凸多邊形和凹多邊形,除此之外,我們還要討論內含環的多邊形,如下圖。 多邊形的表示方法 頂點表示:用多邊形頂點的序列來刻畫多邊形。直觀、幾何

計算機圖形_圖元的屬性_16_ 反走樣_7_區域邊界的反走樣

區域邊界的反走樣   直線的反走樣概念也可以用於區域的邊界,從而消除其鋸齒形的外貌。我們可以將這種程式加加入到掃描線演算法中,在生成區域時來平滑區域輪廓。假如系統具有允許畫素重定位的功能,那麼就可以將邊界畫素位置調整到更靠近區域邊界來實現對區域邊界的平滑處理。

計算機圖形 視頻顯示設備_1_CRT原理

http color size 安裝 ref p s 這一 計算機圖形學 指定 第 1 章 圖形系統概述 如今。計算機圖形學的作用與應用已經得到了廣泛承認。大量的圖形硬件和軟件系統已經應用 到了差點兒全部的領域。通用計算機甚至很多手持計算器也已經

MFC計算機圖形2

mct tid spc DdGzS cin html uem ubd dcs sdsdzi狗聘毫渤口毫http://huiyi.docin.com/hnbkw203d1e5gw濫良瘟侍探蝗http://weibo.com/p/10050563731520645atr4g回救

計算機圖形輸出圖元_3_畫線算法_2_DDA算法

通過 程序 之間 tro 取整 xen git 方程 class DDA算法? ? ? ? 數字微分分析儀(digital differential analyzer, DDA)方法是一種線段掃描轉換算法。基於使用等式(3

【計算機圖形】圖元的區域填充之矩形的區域填充

相關資料來源於網路,侵刪歉。 如果文章中存在錯誤,請下方評論告知我,謝謝! 矩形的區域填充 前提 矩形的頂點座標均為整數。 我們簡單地實現一下,思路是在矩形內逐行逐列點亮每個畫素,如圖。 typedef struct{ int xmin, xmax; int ymin,

計算機圖形幾何變換_5_三維空間的幾何變換_1_三維平移

三維平移 在三維齊次座標表示中,任意點P = (x, y, z)通過將平移距離tx, ty,和tz加到P的座標上而平移到位置P’= (x', y', z'): 我們可以用下面等式中的矩陣形式來表達三維平移操作。 但現在座標位置P和P’用4元列向量的齊次座標表示,且變換操

計算機圖形_圖元的屬性_16_ 反走樣_6_直線亮度差的校正

直線亮度差的校正        為了減輕階梯狀效應,對直線進行反走樣也為如圖4.52所示的另一種光柵效果提供了校正。使用相同數目畫素所繪製的兩條線,對角線還是比水平線長√2倍。例如,當水平線的長度為10 cm時,對角線的長度超過14cm。這導致的視覺效果是對角線顯得比水平線

計算機圖形常用演算法實現5 區域填充演算法-遞迴形式

遞迴形式的區域填充演算法的效率實在是太低了(就是裸的dfs),導致圖形大一點就會爆棧,沒有很大的實用性。 程式碼如下: void floodFill4(int x,int y,int i) { if (map[x, y] == false) {

計算機圖形幾何變換_4_二維複合變換_5_其他二維變換_2_錯切

二維複合變換_5_其他二維變換_2_錯切          錯切(shear)是一種使物件形狀發生變化的變換,經過錯切的物件好像是由已經相互滑動的內部夾層組成。兩種常用的錯切變換是移動x座標值的錯切和移動Y座標值的錯切。相對於x軸的x方向錯切由下列變換矩陣1產生: 該矩陣將

計算機圖形——微表面模型

計算機圖形學中基於物理建模的渲染技術之所以能給人極佳的視覺體驗,是因為利用這些渲染技術能夠很真實的反映出每種物體獨有的“質感”。我們能通過人眼觀察來感受物體表面“質感”的原因,也是因為物體表面反射周圍環境的特性不同而造成的,因此對物體表面的物理建模對於其表面本身的質感表現至關重要。對物體表面的建模,最簡單的是

計算機圖形幾何變換_2_矩陣表示_2_二維矩陣

二維平移矩陣使用齊次座標方法,座標位置的二維平移可表示為下面的矩陣乘法。 該平移操作可簡寫為: 其中T(tx,ty)等式中3*3矩陣。在平移引數沒有混淆的情況下,可以使用T表示平移矩陣。二維旋轉矩陣類似地,繞座標系原點的二維旋轉變換方程可以表示為矩陣形式: 或      

圖形7反走樣技術

本模組內容絕大部分是在慕課上看中國農業大學網客時的筆記,因此算作轉載,在此鳴謝趙明、李振波兩位老師,感謝他們錄製該門課程供大家學習! 其實,在之前繪製直線演算法中,畫出來的直線經放大會有明顯的“鋸齒”,這就是俗稱的走樣(Liasing)現象。下面介紹如何通過特定演算法降低這

學習shader之前必須知道的東西之計算機圖形渲染...

shader到底是幹什麼用的?shader的工作原理是什麼?         其實當我們對這個問題還很懵懂的時候,就已經開始急不可耐的要四處搜尋有關shader的資料,恨不得立刻上手寫一個出來。但看了一些資料甚至看了不少cg的語法之後,我們還是很迷茫,UNITY_MATRIX_MVP到底是個什麼矩陣?它和v

計算機圖形_幾何變換_1_基本的二維幾何變換(一)

4 .幾何變換        使用線段和填充區等圖元來描述場景,並利用屬性來輔助這些圖元。我們給出了掃描線演算法,可以將圖元顯示在光柵裝置上。現在,再看看可用於物件重定位或改變大小的變換操作。這些操作也用於將世界座標系中的場景描述轉換為輸出裝置上顯示的觀察子程式中。另外,它