導航:首頁 > 源碼編譯 > 八連接演算法不能填充四連通區域

八連接演算法不能填充四連通區域

發布時間:2023-01-12 14:48:58

① 簡述邊界表示的四連通區域的種子填充演算法的基本思想和執行步驟

一、種子填充演算法思想:
首先填充種子所在的尚未填充的一區段,然後確定與這一區段相鄰的上下兩條掃描線上位於該區段內是否存在需要填充的新區段,如果存在,則依次把每個新區段最右端的象素作為種子放入堆棧。反復這個過程,直到堆棧為空。
二、種子填充演算法步驟:
1、初始化堆棧。
2、種子壓入堆棧。
3、While(堆棧非空)從堆棧彈出種子象素。

② 用隊列實現種子填充演算法的非遞歸

一、種子填充演算法(Seed Filling)
如果要填充的區域是以圖像元數據方式給出的,通常使用種子填充演算法(Seed Filling)進行區域填充。種子填充演算法需要給出圖像數據的區域,以及區域內的一個點,這種演算法比較適合人機交互方式進行的圖像填充操作,不適合計算機自動處理和判斷填色。根據對圖像區域邊界定義方式以及對點的顏色修改方式,種子填充又可細分為幾類,比如注入填充演算法(Flood Fill Algorithm)、邊界填充演算法(Boundary Fill Algorithm)以及為減少遞歸和壓棧次數而改進的掃描線種子填充演算法等等。
所有種子填充演算法的核心其實就是一個遞歸演算法,都是從指定的種子點開始,向各個方向上搜索,逐個像素進行處理,直到遇到邊界,各種種子填充演算法只是在處理顏色和邊界的方式上有所不同。在開始介紹種子填充演算法之前,首先也介紹兩個概念,就是「4-聯通演算法」和「8-聯通演算法」。既然是搜索就涉及到搜索的方向問題,從區域內任意一點出發,如果只是通過上、下、左、右四個方向搜索到達區域內的任意像素,則用這種方法填充的區域就稱為四連通域,這種填充方法就稱為「4-聯通演算法」。如果從區域內任意一點出發,通過上、下、左、右、左上、左下、右上和右下全部八個方向到達區域內的任意像素,則這種方法填充的區域就稱為八連通域,這種填充方法就稱為「8-聯通演算法」。如圖1(a)所示,假設中心的藍色點是當前處理的點,如果是「4-聯通演算法」,則只搜索處理周圍藍色標識的四個點,如果是「8-聯通演算法」則除了處理上、下、左、右四個藍色標識的點,還搜索處理四個紅色標識的點。兩種搜索演算法的填充效果分別如如圖1(b)和圖1(c)所示,假如都是從黃色點開始填充,則「4-聯通演算法」如圖1(b)所示只搜索填充左下角的區域,而「8-聯通演算法」則如圖1(c)所示,將左下角和右上角的區域都填充了。

圖(1) 「4-聯通」和「8-聯通」填充效果

並不能僅僅因為圖1的填充效果就認為「8-聯通演算法」一定比「4-聯通演算法」好,應該根據應用環境和實際的需求選擇聯通搜索方式,在很多情況下,只有「4-聯通演算法」才能得到正確的結果。
1.1 注入填充演算法(Flood Fill Algorithm)
注入填充演算法不特別強調區域的邊界,它只是從指定位置開始,將所有聯通區域內某種指定顏色的點都替換成另一種顏色,從而實現填充效果。注入填充演算法能夠實現顏色替換之類的功能,這在圖像處理軟體中都得到了廣泛的應用。注入填充演算法的實現非常簡單,核心就是遞歸和搜索,以下就是注入填充演算法的一個實現:

164 void FloodSeedFill(int x, int y, int old_color, int new_color)
165 {
166 if(GetPixelColor(x, y) == old_color)
167 {
168 SetPixelColor(x, y, new_color);
169 for(int i = 0; i < COUNT_OF(direction_8); i++)
170 {
171 FloodSeedFill(x + direction_8[i].x_offset,
172 y + direction_8[i].y_offset, old_color, new_color);
173 }
174 }
175 }

for循環實現了向8個聯通方向的遞歸搜索,秘密就在direction_8的定義:

15 typedef struct tagDIRECTION
16 {
17 int x_offset;
18 int y_offset;
19 }DIRECTION;

79 DIRECTION direction_8[] = { {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1},{0, -1}, {-1, -1} };

這個是搜索類演算法中常用的技巧,無需做太多說明,其實只要將其替換成如下direction_4的定義,就可以將演算法改成4個聯通方向填充演算法:

80 DIRECTION direction_4[] = { {-1, 0}, {0, 1}, {1, 0}, {0, -1} };

圖2就是應用本演算法實現的「4-聯通」和「8-聯通」填充效果:

③ 北航09春學期《數字圖形設計》作業一

1. a1. 消隱不僅與消隱對象有關而且還與(A )有關
A. 投影方式
B. 消隱演算法選擇
C. 物體空間
D. 消隱坐標
2. 光強也稱光亮度是指既能表示光能(B )有能表示其( )的物理量
A. 大小,強度
B. 色彩,強度
C. 大小,色彩
D. 色彩,亮度
3. 1981年5月,我國國家標准化局發布並實施的「信息、交換用漢字編碼字元基本集」中,共收集字元7445個,每個字元均與一個(B )編碼相對應
A. ASCII編碼
B. 十六進制編碼
C. 十進制編碼
D. 八進制編碼
4. 在互動式圖形系統中,一般有( b)個坐標系
A. 1
B. 2
C. 3
D. 4
5. 下列那個不是計算機圖形學的應用(b )
A. 計算機藝術
B. 計算機可視化
C. 計算機自動化
D. 計算機動畫及廣告
6. 鏡面發射的特點是(a )
A. 光源來自一個方向,反射光集中在反射方向;
B. 光源來自一個方向,發射光均勻地射向各個方向;
C. 光源來自各個方向,又均勻地向各個方向反射;
D. 光源來自各個方向,反射光集中在反射方向;
7. 計算機圖形學是研究通過計算機將( a)轉換為圖形,並在專用的顯示設備上顯示的原理、方法和技術的學科。
A. 數據
B. 程序
C. 演算法
D. 計算機語言
8. 在基本交互任務的基礎上,可以形成(c )種形式的交互任務。
A. 1
B. 2
C. 3
D. 4
9. 在圖形軟體的各層中,我們一般把(b )級軟體成為基本圖形軟體或稱為支撐軟體。
A. 0
B. 0,1
C. 0,1,2
D. 0,1,2,3
10. 哪一個不是國際標准化組織(ISO)批準的圖形標准( b)
A. GKS;
B. PHIGS;
C. CGM;
D. DXF;
二、多選題(共 4 道試題,共 40 分。)
1. 用戶定義矢量字元一般步驟為(a )
A. 寫字模
B. 確定字元代碼
C. 按一定結構保存字元各端點坐標及前一點到此端點是否劃線的標志
D. 將字模寫入字元庫中
2. 布局的基本原則包括(a )
A. 保持一致
B. 保持平衡
C. 提供反饋
D. 成比例
3. 表現三維圖形的方式包括(b )
A. 真實感圖形;
B. 投影圖形
C. 消隱圖
D. 空間模擬圖
4. 在互動式圖形系統中,一般有( c)坐標系
A. 三維坐標系
B. 二維坐標系
C. 屏幕坐標系
D. 用戶坐標系
三、判斷題(共 10 道試題,共 20 分。)
1. 一個邏輯輸入設備可以對應多個物理輸入設備。a
A. 錯誤
B. 正確
2. 朗伯定律描述為:對於漫反射體,表面的反射光亮度和光源入射角的餘弦成反比。b
A. 錯誤
B. 正確
3. 計算機圖形系統應由硬體和相應地程序系統兩部分構成。a
A. 錯誤
B. 正確
4. 現代計算機圖形系統與一般的計算機系統最主要的差別是具有圖形的輸入,輸出設備以及必要的交互工具.b
A. 錯誤
B. 正確
5. 掃描轉換填充演算法適用於規則邊界的區域。a
A. 錯誤
B. 正確
6. 深度緩存演算法是一種最簡單的圖形空間眠消隱演算法,既適應多邊形面也適用其它曲面。b
A. 錯誤
B. 正確
7. Gourand光照模型能夠即使出高光部位的亮度。a
A. 錯誤
B. 正確
8. 用逐點比較法生成圓弧時運算只有加、減和位移運算,無乘除,運算效率高,適用於用硬體實現。b
A. 錯誤
B. 正確
9. 交互圖形的基本交互任務包括:定位,選擇,文字輸入輸出,數值輸入輸出等。b
A. 錯誤
B. 正確
10. 在種子填充演算法中所提到的八向連通區域演算法同時可填充四向連通區a
A. 錯誤
B. 正確

④ 請教二值圖像點陣區域孔洞的填充方法

四連通填充:
-找到孔洞中的一點,記錄坐標(x,y)
-對於記錄的點開始進行如下操作,直到所有記錄的點都被處理完成:

-將當前點填充,判斷該點上、下、左、右各點是否位於孔內,是否還未填充,如是,將該點添加到記錄點數組的末尾
由此,處理完所有記錄的點後,四連通的孔洞可填充完畢。以上演算法比較簡單,存在優化的可能。

⑤ 計算機圖形學復習

第一章
1. 計算機圖形:用數學方法描述,通過計算機生成、處理、存儲和顯示的對象。
2. 圖形和圖像的主要區別是表示方法不同:圖形是用矢量表示;圖像是用點陣表示的。圖形和圖像也可以通過光柵顯示器(或經過識別處理)可相互轉化。
3. 於計算機圖形學緊密相關的學科主要包括 圖像處理、計算幾何和計算機視覺模式識別。它們的共同點是 以圖形/圖像在計算機中的表示方法為基礎。
4. 互動式計算機圖形系統的發展可概括為以下4個階段:字元、矢量、二維光柵圖形、三維圖形。
5. 圖形學研究的主要內容有:①幾何造型技術 ②圖形生成技術 ③圖形處理技術 ④圖形信息的存儲、檢索與交換技術 ⑤人機交互技術 ⑥動畫技術 ⑦圖形輸入輸出技術 ⑧圖形標准與圖形軟體包的研發。
6. 計算機輔助設計和計算機輔助製造 是計算機圖形學最廣泛最活躍的應用領域。
7. 計算機圖形學的基本任務:一是如何利用計算機硬體來實現圖形處理功能;二是如何利用好的圖形軟體;三是如何利用數學方法及演算法解決實際應用中的圖行處理問題。
8. 計算機圖形系統是由硬體系統和軟體系統組成的。
9. 計算機圖形系統包括處理、存儲、交互、輸入和輸出五種基本功能。
10. 鍵盤和滑鼠是最常用的圖形輸入設備。滑鼠根據測量位移部件的不同,分為光電式、光機式和機械式3種。
11. 數字化儀分為電子式、超聲波式、磁伸縮式、電磁感應式等。小型的數字化儀也稱為圖形輸入板。
12. 觸摸屏是一種 定位設備,它是一種對於觸摸能產生反應的屏幕。
13. 掃描儀由3部分組成:掃描頭、控制電路和移動掃描機構。掃描頭由光源發射和光鮮接收組成。按移動機構的不同,掃描儀可分為平板式和滾筒式2種。
14. 顯示器是計算機的標准輸出設備。彩色CRT的顯示技術有2種:電子穿透法和蔭罩法。
15. 隨機掃描是指電子束的定位及偏轉具有隨意性,電子束根據需要可以在熒光屏任意方向上連續掃描,沒有固定掃描線和掃描順序限制。它具有局部修改性和動態性能。
16. 光柵掃描顯示器是畫點設備。
17. 點距是指相鄰像素點間的距離,與分辨指標相關。
18. 等離子顯示器一般有三層玻璃板組成,通常稱為等離子顯示器的三層結構。
19. 用以輸出圖形的計算機外部設備稱為硬拷貝設備。
20. 列印機是廉價的硬拷貝設備,從機械動作上常為撞擊式和非撞擊式2種。
21. 常用的噴墨頭有:壓電式、氣泡式、靜電式、固體式。
22. 繪圖儀分為靜電繪圖儀和筆式繪圖儀。
23. 圖形軟體的分層。由下到上分別是:①圖形設備指令、命令集、計算機操作系統 ②零級圖形軟體 ③一級圖形軟體 ④二級圖形軟體 ⑤三級圖形軟體。
24. 零級圖形軟體是面向系統的、最底層的軟體,主要解決圖形設備與主機的通信與介面問題,又稱設備驅動程序。
25. 一級圖形軟體即面向系統又面向用戶,又稱基本子系統。
26. 圖形應用軟體是系統的核心部分。
27. 從物理學角度,顏色以主波長、色純度和輝度來描述;從視覺角度來看,顏色以色彩、飽和度和亮度來描述。
28. 用適當比列的3種顏色混合,可以獲得白色,而且這3種顏色中的任意2種的組合都不能生成第三種顏色,稱為三原色理論。
29. RGB模型的匹配表達式是:c=rR+gG+bB。
30. 常用顏色模型
顏色模型名稱 使用范圍
RGB 圖形顯示設備(彩色CRT和光柵顯示器)
CMY 圖形列印、繪制設備
HSV 對應畫家本色原理、直觀的顏色描述
HSL 基於顏色參數的模型
用基色青、品紅、黃定義的CMY顏色模型用來描述硬拷貝設備的輸出顏色。它從白光中濾去某種顏色,故稱為減色性原色系統。

第二章
31. 直線生成的3個常用演算法:數值微分法(DDA)、中點劃線法和Bresenham演算法。
32. DDA演算法的C語言實現:
DDA演算法生成直線,起點(x0,y0),終點(x1,y1).
Void CMy View ::OnDdaline()
{
CDC *pDC=GetDC(); //獲得設備指針
int x0=100,y0=100,x1=300,y1=200,c=RGB(250,0,0);//定義直線兩端點和直線顏色
int x,y,i;
float dx,dy,k;
dx=(float)(x1-x0);
dy=(float)(y1-y0);
k=dy/dx;
x=x0;
y=y0;
if(abs(k)<1)
{ for(;x<=x1;x++)
{pDC—>SetPixel(x,int(y+0.5),c);
y=y+k;}
}
if(abs(k)>=1)
{ for(;y<=y1;y++)
{pDC—>SetPixel(int(x+0.5),y,c);
x=x+1/k;}
}
ReleaseDC(pDC); //釋放設備指針
}
33. 任何影響圖元顯示方法的參數稱為屬性參數。圖元的基本表現是線段,其基本屬性包括線型、線寬和色彩。
34. 最常見的線型包括實線、虛線、細線和點劃線等,通常默認的線型是實線。
35. 線寬控制的實線方法:垂直線刷子、水平線刷子、方形線刷子。生成具有寬度的線條還可以採用區域填充演算法。
36. 用離散量表示連續量時引起的失真現象稱為走樣。為了提高圖形顯示質量,減少或消除走樣現象的技術稱為反走樣。
37. 反走樣技術有:提高解析度(硬體方法和軟體方法)、簡單區域取樣、加權區域取樣。
38. 區域連通情況分為四連通區域和八連通區域。四連通區域是指從區域上某一點出發,可通過上下左右4個方向移動,在不越出區域的前提下到達區域內的任意像素;八連通區域是指從區域內某一像素出發,可通過上下左右、左上左下、右上右下8個方向的移動,在不越出區域的前提下到達區域內的任意像素。
39. 字元的圖形表示可以分為點陣式和矢量式兩種形式。
40. 在圖形軟體中,除了要求能生成直線、圓等基本圖形元素外,還要求能生成其他曲線圖元、多邊形及符號等多種圖元。
41. 在掃描線填充演算法中,對水平邊忽略而不予處理的原因是實際處理時不計其交點。
42. 關於直線生成演算法的敘述中,正確的是:Bresenham演算法是對中點畫線演算法的改進。
43. 在中點畫圓演算法中敘述錯誤的是:為了減輕畫圓的工作量,中點畫圓利用了圓的四對稱性性質。
44. 多邊形填充時,下列論述錯誤的是:在判斷點是否在多邊形內時,一般通過在多變形外找一點,然後根據該線段與多邊形的交點數目為偶數即可認為在多邊形內部,若為奇數則在多邊形外部,且不考慮任何特殊情況。
第三章
1. Cohen-Sutherland演算法,也稱編碼裁剪法。其基本思想是:對於每條待裁剪的線段P1P2分三種情況處理:①若P1P2完全在窗口內,則顯示該線段,簡稱「取」之;②若P1P2完全在窗口外,則丟棄該線段,簡稱「舍」之;③若線段既不滿足「取」的條件也不滿足「舍」的條件,則求線段與窗口邊界的交點,在交點處把線段分為兩段,其中一段 完全在窗口外,可舍棄之,然後對另一段重復上述處理。
2. Sutherland-Hodgman演算法,又稱逐邊裁剪演算法。其基本思想是用窗口的四條邊所在的直線依次來裁剪多邊形。多邊形的每條邊與裁剪線的位置關系有4種情況(假設當前處理的多邊形的邊為SP):a>端點S在外側,P在內側,則從外到內輸出P和I;b>端點S和P都在內側,則從內到內輸出P;c>端點S在內側,而P在外側,則從內到外輸出I;d>端點S和P都在外側,無輸出。
3. 按裁剪精度的不同,字元裁剪可分為三種情況:字元串裁剪、字元裁剪和筆畫裁剪。
4. 在線段AB的編碼裁剪演算法中,如A、B兩點的碼邏輯或運算全為0,則該線段位於窗口內;如AB兩點的碼邏輯與運算結果不為0,則該線段在窗口外。
5. n邊多邊形關於矩形窗口進行裁剪,結果多邊形最多有2n個頂點,最少有n個頂點。
6. 對一條等長的直線段裁剪,編碼裁剪演算法的速度和中點分割演算法的裁剪速度哪一個快,無法確定。(√)
7. 多邊形裁剪可以看做是線段裁剪的組合。(X)
8. 對於線段來說,中點分割演算法要比其他線段裁剪演算法的裁剪速度快。(X)
9. 多邊形的Weiler-Atherton裁剪演算法可以實現對任意多邊形的裁剪。(√)
第四章
1. 幾何變換是指改變幾何形狀和位置,非幾何變換是指改變圖形的顏色、線型等屬性。變換方法有對象變換(坐標系不動)和坐標變換(坐標系變化)兩種。
2. 坐標系可以分為以下幾種:世界坐標系(是對計算機圖形場景中所有圖形對象的空間定位和定義,是其他坐標系的參照)、模型坐標系(用於設計物體的局部坐標系)、用戶坐標系(為了方便交互繪圖操作,可以變換角度、方向)、設備坐標系(是繪制或輸出圖形的設備所用的坐標系,採用左手系統)。
3. 將用戶坐標系中需要進行觀察和處理的一個坐標區域稱為窗口,將窗口映射到顯示設備上的坐標區域稱為視區。從窗口到視區的變換,稱為規格化變換。(eg.4-1)
4. 所謂體素,是指可以用有限個尺寸參數定位和定形的體,如長方體、圓錐體。
5. 所謂齊次坐標表示,就是用n+1維向量表示n維的向量。
6. 二維點(x,y)的齊次坐標可以表示為:(hx hy h),其中h≠0。當h=1時稱為規范化的齊次坐標,它能保證點集表示的唯一性。
7. 旋轉變換公式的推導、對稱變換

第五章
1. 交互繪圖技術是一種處理用戶輸入圖形數據的技術,是設計交互繪圖系統的基礎。常見的交互繪圖技術有:定位技術、橡皮筋技術、拖曳技術、定值技術、拾取技術、網格與吸附技術。
2. 常用的橡皮筋技術有:橡皮筋直線、橡皮筋矩形、橡皮筋圓。
3. 拖曳技術是將形體在空間移動的過程動態地、連續地表示出來,直到用戶滿意。
4. 定值技術有2種:一種是鍵入數值,另一種是改變電位計阻值產生要求的數量,可以用模擬的方式實現電位計功能。
5. 拾取一個基本的對象可以通過:指定名稱法、特徵點發、外界矩陣法、分類法、直接法。

第六章
1. 點、線、面是形成三維圖形的基礎,三維變換是從點開始。
2. 三維圖形變換分類:三維圖形變換包括三維幾何變換和平面幾何變換,三維幾何變換包括基本幾何變換和復合變換;平面幾何變換包括平行投影和透視投影,平行投影包括正投影和軸測投影,透視投影包括一點透視、二點透視、三點透視。
3. 投影中心與投影面之間的距離是無限的投影叫做平行投影,它包括正投影和軸測投影。
4. 正投影形成的視圖包括:主視圖、俯視圖和左視圖。軸測投影形成的視圖為軸測圖。
5. 透視投影也稱為中心投影,其投影中心與投影面之間的距離是有限的。其特點是產生近大遠小的視覺效果
6. 對於透視投影,不平行於投影面的平行線的投影會匯聚到一個點,這個點稱為滅點。透視投影的滅點有無限多個,與坐標軸平行的平行線在投影面上形成的滅點稱為主滅點。主滅點最多有3個,其對應的透視投影分別稱為一點透視、二點透視、三點透視。

第七章
1. 型值點是曲面或曲線上的點,而控制點不一定在曲線曲面上,控制點的主要目的是用來控制曲線曲面的形狀。
2. 插值和逼近是曲線曲面設計中的兩種不同方法。插值—生成的曲線曲面經過每一個型值點,逼近—生成的曲線曲面靠近每一個控制點。
3. 曲線曲面的表示要求:唯一性、統一性、幾何不變性、幾何直觀、易於界定、易於光滑連接。
4. 曲線曲面有參數和非參數表示,但參數表示較好。非參數表示又分為顯式和隱式兩種。
5. 對於一個平面曲線,顯式表示的一般形式是:y=f(x)。一個x與一個y對應,因此顯式方程不能表示封閉或多值曲線。例不能用顯式方程表示一個圓。
6. 如果一個曲線方程表示為f(x,y)=0的形式,我們稱之為隱式表示。其優點是易於判斷函數f(x,y)是否大於、小於或等於零,即易於判斷是落在所表示曲線上還是在曲線的哪一側。
7. 參數連續與幾何連續的區別:參數連續性是傳統意義上的、嚴格的連續,而幾何連續性只需限定兩個曲線段在交點處的參數導數成比例,不必完全相等,是一種更直觀、易於交互控制的連續性。
8. 在曲線曲面造型中,一般只用到C1(1階參數連續)、C2(2階參數連續)、G1(1階幾何連續)、G2(2階幾何連續)。切矢量(一階導數)反映了曲線對參數t的變化速遞,曲率(二階導數)反映了曲線對參數t變化的加速度。
9. 通常C1連續必能保證G1的連續,但G1的連續並不能保證C1連續。
10. 對於三次Hermite曲線,用於描述曲線的可供選擇的條件有:端點坐標、切矢量和曲率。
11. 三次Hermite曲線特點:①可局部調整,因為每個曲線段僅依賴於端點約束;②基於Hermite樣條的變化形式有Cardinal樣條和Kochanek-Bartels樣條;③具有幾何不變性。
12. Bezier曲線的性質:①端點性質②端點切矢量③端點的曲率④對稱性⑤幾何不變性⑥凸包性⑦變差縮減性。
13. 一次Bezier曲線是連接起點P0和終點P1的直線段,二次Bezier曲線對應一條起點P0終點在P2處的拋物線。
14. B樣條曲線的性質:①局部性②連續性或可微性③幾何不變性④嚴格凸包性⑤近似性⑥變差縮減性。
15. NURRS曲線具有以下性質:①局部性②可微性③仿射不變性④嚴格保凸性⑤一般性⑥變差縮減性⑦端點性質。

第八章
1. 要把三維物體的信息顯示在二維顯示設備中,必須通過投影變換。由於投影變換失去了深度信息,往往會導致二義性,要消除二義性,就必須在繪制時消除實際不可見的線和面,稱作消除隱藏線和隱藏面,簡稱消隱。
2. 面消隱常用演算法有:深度緩沖區(Z-buffer)演算法和深度排序演算法(畫家演算法)。
3. 深度緩沖區演算法和深度排序演算法的區別:

⑥ 我想用易語言填充畫板的指定區域 並計算填充了多少像素 怎麼計算

函數原型:BOOL ExtFloodFill(HDC hdc,int nXStart,int nYStart,COLORREF crColor,UINT fuFillType);
參數:
nXSTart:指定要開始填充處的邏輯X軸坐標。
nYStart:指定要開始填充處的邏輯Y軸坐標。
crColor:指定要填充的邊界或區域的顏色。crColor的具體解釋要根據參數fuFillType的值而定。
fuFillType:指定要進行的填充操作類型。該參數必須是下列值之一,這些值的含義如下:
FLOODFILLBORDER:表示填充區域是由crColor參數指定的顏色包圍起來的部分。這種形式與FloodFill函數執行的填充類型一樣。
FLOODFILLSURFACE:表示填充區域是由crColor指定的顏色來定義。填充操作向四周伸展,直到遇到這種顏色為止。這種操作式樣對於帶有多種顏色邊界的填充區域有用。
返回值:如果函數執行成功,那麼返回值為非零;如果函數執行失敗,那麼返回值為零。若想獲得更多錯誤信息,請調用GetLastError函數。
備註:下列原因可能引起函數執行失敗:
填充無法完成。
指定的像素點有著參數crColor(如果要求
操作樣式)指定的邊界顏色(即顏色相同)。
指定的像素點沒有參數crColor(如果要求FLOODFILLSURFACE操作樣式)指定的顏色。
該點在剪輯區之外――也就是說在設備中不可見。
如果fuFillType參數為FLOODFILLBORDER,那麼系統認為要填充的區域是完全被參數crColor指定的顏色包圍起來的。該函數從參數nXStart和nYStart指定的點開始填充,向四周繼續,直到遇到邊界為止。
如果fuFillType是FLOODRILLSURFACE,那麼系統就認為要填充的區域是單顏色的,函數從nXStart和nYStart兩個參數指定的點開始填充區域,並向四周延伸,對包含參數crColor指定顏色的所有相鄰區域進行填充。
只有支持光柵顯示操作的設備和內存設備環境才支持ExtFloodFill函數。為了確定設備是否支持該技術,可使用函數GetDeviceCaps。
http://ke..com/link?url=5RPNfKX08273wPGa
以上內容復制自網路
常量值
FLOODFILLBORDER =0
FLOODRILLSURFACE =1

種子填充演算法
編輯
種子填充演算法又稱為邊界填充演算法。其基本思想是:從多邊形區域的一個內點開始,由內向外用給定的顏色畫點直到邊界為止。如果邊界是以一種顏色指定的,則種子填充演算法可逐個像素地處理直到遇到邊界顏色為止。
種子填充演算法常用四連通域和八連通域技術進行填充操作。
從區域內任意一點出發,通過上、下、左、右四個方向到達區域內的任意像素。用這種方法填充的區域就稱為四連通域;這種填充方法稱為四向連通演算法。
從區域內任意一點出發,通過上、下、左、右、左上、左下、右上和右下八個方向到達區域內的任意像素。用這種方法填充的區域就稱為八連通域;這種填充方法稱為八向連通演算法。
一般來說,八向連通演算法可以填充四向連通區域,而四向連通演算法有時不能填充八向連通區域。例如,八向連通填充演算法能夠正確填充如圖2.4a所示的區域的內部,而四向連通填充演算法只能完成如圖2.4b的部分填充。
圖2.4 四向連通填充演算法
a) 連通域及其內點 b) 填充四連通域
四向連通填充演算法:
a) 種子像素壓入棧中;
b) 如果棧為空,則轉e);否則轉c);
c) 彈出一個像素,並將該像素置成填充色;並判斷該像素相鄰的四連通像素是否為邊界色或已經置成多邊形的填充色,若不是,則將該像素壓入棧;
d) 轉b);
e) 結束。
http://ke..com/link?url=jAM4UlhNMYk8__THzHZ2vN__KtQHm7CErVWq

要善用搜索

⑦ 填充演算法的注入填充區域演算法

注入填充演算法(FloodFill Algorithm)用於內部定義區域,以改變整個區域的顏色屬性,它把區域內的原像素點值改變成另一種像素點值。演算法3.2用於填充八連通的內部定義區域。演算法中,read &iexcl; pixel(x; y)表示讀出像素點(x; y)像素點值。old-value為像素點的原值, new-value為將要填充的新值。
[演算法3.2] 注入填充區域演算法。
Procere flood-fill-8(x,y,old-value,new-value)
BEGIN
IF read-pixel(x,y)=old-value THEN
BEGIN
write-pixel(x,y,new-value)
flood-fill-8(x,y-1,old-value,new-value)
flood-fill-8(x,y+1,old-value,new-value)
flood-fill-8(x-1,y,old-value,new-value)
flood-fill-8(x+1,y,old-value,new-value)
flood-fill-8(x+1,y-1,old-value,new-value)
flood-fill-8(x+1,y+1,old-value,new-value)
flood-fill-8(x-1,y-1,old-value,new-value)
flood-fill-8(x-1,y+1,old-value,new-value)
END
ENDIF
END
此演算法所採用的基本方法是首先確定(x; y)點的像素點是否在區域內尚未被訪問過的那一部分之中,也就是說,如果這個像素點的值是原始值old-value,則需要把它改為填充的值new-value,然後按八連通區域性質先後訪問其八個相鄰的像素點,當訪問其中每一個近鄰像素點時,都要進行遞歸調用。此演算法通過在四個方向而不是八個方向上擴展,就可以用來填充一個內部定義的四連通式區域。這時程序只要有前面四個flood-fill-8(...)語句就可以了.

⑧ 關於數據結構C語言的問題

你這個演算法其實是四連通區域種子填充演算法,看了一下邏輯上沒問題啊。不知道有什麼錯。其實用遞歸更簡潔

⑨ 計算機圖形學

說句實話。該問題不應該到電腦常識來提
雖然我不能為你解答。但可以提醒你
你把該問題貼到數學那裡去
保證不出幾天你有可以解決
試試吧。

⑩ 請問,在計算機圖形學中,四連通演算法填充時,種子會會重復入棧嗎

會啊,它入棧的順序是左上右下如有疑問請加429198063一起商討

閱讀全文

與八連接演算法不能填充四連通區域相關的資料

熱點內容
pdfdocument 瀏覽:556
gcc編譯vi文件 瀏覽:63
安卓連airpods怎麼找耳機 瀏覽:927
加密貨幣轉賬教程 瀏覽:229
程序員小灰hashmap 瀏覽:838
國語pdf版 瀏覽:184
少兒編程作品美麗的小房子 瀏覽:970
伺服器卡在網頁上怎麼辦 瀏覽:54
用python自製編譯器 瀏覽:951
android分享新浪微博客戶端 瀏覽:26
系統中伺服器在哪裡下載地址 瀏覽:1001
新a4安卓手機怎麼投屏 瀏覽:173
pdftoemf 瀏覽:886
java介面可以實現介面嗎 瀏覽:59
vb編程10個隨機函數 瀏覽:22
程序員個人簡介100 瀏覽:772
土木工程師演算法工程師 瀏覽:92
javaexcel導入oracle 瀏覽:880
如何設置異地伺服器 瀏覽:883
為什麼安卓手機藍牙耳機不會彈窗 瀏覽:547