洪水填充演算法 洪水填充 Flood fill 演算法

2021-10-13 10:53:21 字數 579 閱讀 3438

洪水填充(flood fill)演算法

從乙個起始節點開始把附近與其連通的節點提取出或填充成不同顏色顏色,直到封閉區域內的所有節點都被處理過為止,是從乙個區域中提取若干個連通的點與其他相鄰區域區分開(或分別染成不同顏色)的經典演算法。

因為其思路類似洪水從乙個區域擴散到所有能到達的區域而得名。在gnu go和掃雷中,flood fill演算法被用來計算需要被清除的區域。

洪水填充演算法接受三個引數:起始節點,目標節點特徵和針對提取物件要執行的處理。

目前有許多實現方式,基本上都顯式的或隱式的使用了佇列或者棧。

洪水填充演算法實現最常見有四鄰域填充法(不考慮對角線方向的節點),八鄰域填充法(考慮對角線方向的節點),基於掃瞄線填充方法。

根據實現又可以分為遞迴與非遞迴(基於棧)。

最簡單的實現方法是採用深度優先搜尋的遞迴方法,也可以採用廣度優先搜尋的迭代來實現。

基於遞迴實現的泛洪填充演算法有個致命的缺點,就是對於大的區域填充時可能導致棧溢位錯誤,

基於掃瞄線的演算法實現了一種非遞迴的洪水填充演算法。

除提出連通區域外,還可以應用於計算從某一節點開始,到可能到達其他所有節點的距離。比如解決像走迷宮這類的問題。

Opencv基礎自學八(洪水填充)

import cv2 as cv import numpy as np def fill color demo image copyimg image.copy 轉殖原圖 h,w image.shape 2 拿出寬高 mask np.zeros h 2,w 2 np.uint8 這個是固定,要求引數...

演算法競賽入門 洪水

題目意思大概就是,有n m個底面積為10 10的格仔,每個格仔內有各種不同高度的柱子,再有乙個降雨量,來填這些格仔,輸出水面高度,和被淹沒於沒被淹沒的比例。include include include include using namespace std intmain 輸入n m個數,可以看成...

C STL填充演算法

include include include include include include include include include using namespace std template void printvector vectorv vectorvarr arr,arr 9 pri...