區域---指已經表示成點陣形式的填充圖形,是象素的集合算法
區域填充是指將區域內的一點(常稱種子點)賦予給定顏色 ,而後將這種顏色擴展到整個區域內的過程。數據結構
區域可採用內點表示和邊界表示兩種表示形式blog
內點表示:枚舉出區域內部的全部像素,內部的全部像素着 同一個顏色,邊界像素着與內部像素不一樣的顏色遞歸
邊界表示:枚舉出邊界上的全部像素,邊界上的全部像素 着同一個顏色,內部像素着與邊界像素不一樣的顏色內存
區域填充算法要求區域是連通的,由於只有在連通區域中, 纔可能將種子點的顏色擴展到區域內的其它點。效率
區域可分爲4向連通區域和8向連通區域原理
4向連通區域指的是從區域上一點出發,可經過四個方向 ,即上、下、左、右移動的組合,在不越出區域的前提 下,到達區域內的任意象素擴展
8向連通區域指的是從區域內每一象素出發,可經過八個方向,即上、下、左、右、左上、右上、左下、右下這 八個方向的移動的組合來到達方法
種子填充算法的原理是:假設在多邊形區域內部有一像 素已知,由此出發找到區域內的全部像素,用必定的顏色或灰度來填充im
假設區域採用邊界定義,即區域邊界上全部像素均具備某 個特定值,區域內部全部像素均不取這一特定值,而邊界外的像素則可具備與邊界相同的值
考慮區域的四向連通,即從區域上一點出發,可經過四個方 向,即上、下、左、右移動的組合,在不越出區域的前提下 ,到達區域內的任意像素。
算法原理以下:
種子像素入棧,當棧非空時重複執行以下三步操做:
(1)棧頂像素出棧
(2)將出棧像素置成要填充色
(3)按左、上、右、下順序檢查與棧像素相鄰的四個像素,若其中某個像素不在邊界且未置 成填充色,則把該像素入棧
(1)有些像素會入棧屢次,下降算法效率;棧結構佔空間
(2)遞歸執行,算法簡單,但效率不高。區域內每一像素 都引進一次遞歸,進/出棧,費時費內存
(3)改進算法,減小遞歸次數,提升效率
基本思想不一樣
多邊形掃描轉換是指將多邊形的頂點表示轉化爲點陣表示
區域填充只改變區域的填充顏色,不改變區域表示方法
基本條件不一樣
在區域填充算法中,要求給定區域內一點做爲種子點,而後從這一 點根據連通性將新的顏色擴散到整個區域
掃描轉換多邊形是從多邊形的邊界(頂點)信息出發,利用多種形式 的連貫性進行填充的
掃描轉換區域填充的核心是知道多邊形的邊界,要獲得多 邊形內部的像素集,有多種方法。其中掃描線算法是利用 一套特殊的數據結構,避免求交,而後一條條掃描線肯定
區域填充條件更強一些,不但知道邊界,並且還知道區域 內的一點,能夠利用四連通或八連通區域不斷往外擴展