種子填充演算法

weixin_33806914發表於2015-12-21

問題描述:

在多邊形區域內部填充某元素。

基礎演算法

種子演算法,即從內部某一點開始填充,再遞迴填充周圍的點(上下左右——四連通)。直到遇到邊界。

演算法虛擬碼

void tianchong(int x,int y,int color){
    if point(x,y) out of the Boundary
    then return
    else{
        point(x,y).setcolor(color);
        tianchong(x,y+1,color);
        tianchong(x,y-1,color);
        tianchong(x-1,y,color);
        tianchong(x+1,y,color);
        }
}

演算法效能分析

在實際應用中,出現了遞迴呼叫棧溢位的情況,先在這裡留坑,下次再補上具體的資料吧。

演算法改進

基礎演算法在實際應用中,除了上面所說的當填充面積過大時,出現棧溢位的錯誤外,還會出現重複填充,很大程度上影響效率。一種改進思路就是,建立一個存放每條連續掃描線的最右端點的堆疊。在這篇論文中有具體的虛擬碼實現掃描線種子填充演算法的改進

小結

這個演算法算是遞迴思想的一種應用,其效能自然也是和遞迴密切相關。分析這一塊還沒細想。留坑待填。

相關文章