區域填充

區域填充

區域---指已經表示成點陣形式的填充圖形,是象素的集合算法

區域填充是指將區域內的一點(常稱種子點)賦予給定顏色 ,而後將這種顏色擴展到整個區域內的過程。數據結構

 

區域可採用內點表示和邊界表示兩種表示形式blog

 

內點表示:枚舉出區域內部的全部像素,內部的全部像素着 同一個顏色,邊界像素着與內部像素不一樣的顏色遞歸

邊界表示:枚舉出邊界上的全部像素,邊界上的全部像素 着同一個顏色,內部像素着與邊界像素不一樣的顏色內存

區域填充算法要求區域是連通的,由於只有在連通區域中, 纔可能將種子點的顏色擴展到區域內的其它點。效率

區域可分爲4向連通區域和8向連通區域原理

4向連通區域指的是從區域上一點出發,可經過四個方向 ,即上、下、左、右移動的組合,在不越出區域的前提 下,到達區域內的任意象素擴展

8向連通區域指的是從區域內每一象素出發,可經過八個方向,即上、下、左、右、左上、右上、左下、右下這 八個方向的移動的組合來到達方法

 

簡單四連通種子填充算法(區域填充遞歸算法)

種子填充算法的原理是:假設在多邊形區域內部有一像 素已知,由此出發找到區域內的全部像素,用必定的顏色或灰度來填充im

假設區域採用邊界定義,即區域邊界上全部像素均具備某 個特定值,區域內部全部像素均不取這一特定值,而邊界外的像素則可具備與邊界相同的值

 

考慮區域的四向連通,即從區域上一點出發,可經過四個方 向,即上、下、左、右移動的組合,在不越出區域的前提下 ,到達區域內的任意像素。

 

使用棧結構來實現簡單的種子填充算法

算法原理以下:

種子像素入棧,當棧非空時重複執行以下三步操做:

(1)棧頂像素出棧

(2)將出棧像素置成要填充色

(3)按左、上、右、下順序檢查與棧像素相鄰的四個像素,若其中某個像素不在邊界且未置 成填充色,則把該像素入棧

 

 

種子填充算法的不足之處

(1)有些像素會入棧屢次,下降算法效率;棧結構佔空間

(2)遞歸執行,算法簡單,但效率不高。區域內每一像素 都引進一次遞歸,進/出棧,費時費內存

(3)改進算法,減小遞歸次數,提升效率

 

能夠採用區域填充的掃描線算法

 

多邊形的掃描轉換與區域填充算法小結

基本思想不一樣

 多邊形掃描轉換是指將多邊形的頂點表示轉化爲點陣表示

 區域填充只改變區域的填充顏色,不改變區域表示方法

 

 基本條件不一樣

 在區域填充算法中,要求給定區域內一點做爲種子點,而後從這一 點根據連通性將新的顏色擴散到整個區域

 掃描轉換多邊形是從多邊形的邊界(頂點)信息出發,利用多種形式 的連貫性進行填充的

 

掃描轉換區域填充的核心是知道多邊形的邊界,要獲得多 邊形內部的像素集,有多種方法。其中掃描線算法是利用 一套特殊的數據結構,避免求交,而後一條條掃描線肯定

區域填充條件更強一些,不但知道邊界,並且還知道區域 內的一點,能夠利用四連通或八連通區域不斷往外擴展

相關文章
相關標籤/搜索