區域填充


區域填充

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

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

 

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

 

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

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

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

區域可分為4向連通區域和8向連通區域

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

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

 

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

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

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

 

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

 

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

算法原理如下:

種子像素入棧,當棧非空時重復執行如下三步操作:

(1)棧頂像素出棧

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

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

 

 

種子填充算法的不足之處

(1)有些像素會入棧多次,降低算法效率;棧結構占空間

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

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

 

可以采用區域填充的掃描線算法

 

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

基本思想不同

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

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

 

 基本條件不同

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

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

 

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM