漫水填充演算法

2021-08-04 08:21:09 字數 937 閱讀 2055

漫水填充演算法是填充演算法中最通用的演算法。所謂漫水填充

演算法,是給定乙個聯通域內的乙個點,以此為起點找到這個聯通域的其餘所有點並將其填充為指定顏色的一種演算法。 

之所以稱之為漫水填充,是因為這種演算法就是模擬了漲水的過程,從一點開始,水流慢慢加大,直到漫過了全部區域。該填充演算法的原型如下所示:

void cvfloodfill (

iplimage *img, 

cvpoint seedpoint, 

cvscalar newval,

cvscalar lodiff, 

cvscalar updiff, 

cvconnectedcomp *comp, 

int flags = 4, 

cvarr *mask = null

)

img引數代表輸入影象,漫水填充從seedpoint點開始(也稱種子點),newval是畫素的被染色的值。如果乙個畫素點的值不低於被染色的相鄰點減去 lodiff 且不高於其加上updiff,那麼該畫素點就會被染色。如果引數 flags 包含cv_floodfill_fixd_range,這時每個畫素點將與種子點比較,而不是與相鄰點比較。如果 comp 不為 null,那麼該cvconnectedcomp結構將被設定為填充區域的統計屬性。flags引數有點複雜,這些引數決定著填充的連通性、相關性、是否填充掩碼區域及用來填充的值。

示例**:

#include #include int main()

原圖:

填充後影象:

漫水填充演算法

所謂漫水填充演算法,是給定乙個聯通域內的乙個點,以此為起點找到這個聯通域的其餘所有點並將其填充為指定顏色的一種演算法。之所以稱之為漫水填充,是因為這種演算法就是模擬了漲水的過程,從一點開始,水流慢慢加大,直到漫過了全部區域。這個演算法的詳細介紹可以參考下面的鏈結。這個演算法在我們尋找一片指定區域時非...

漫水填充演算法

1 基於掃瞄線實現的泛洪填充演算法的主要思想是根據當前輸入的點p x,y 沿y方向分別向上與向下掃瞄填充,同時向左p x 1,y 與向右p x 1,y 遞迴尋找新的掃瞄線,直到遞迴結束。2 row height point.y col width point.x 3 這裡要注意image.at i,...

漫水填充演算法

漫水填充演算法 用一定顏色填充聯通區域,通過射著可連通畫素的上下限以及連通方式來達到不同的填充效果。漫水填充類似於連通域分析中種子填充法,區別在於漫水填充處理彩色或灰度影象,當鄰域畫素值和種子畫素值的差值在一定範圍內,則認為是同一連通區域。種子填充法 include opencv2 imgproc ...