种子填充算法的使用—计算机图形学

xiaoxiao2021-02-27  366

(四连通区域填充示意图)

假设内部表示区域为 G ,其中的像素原有颜色为 G 0 ,需要填充的颜色为 G 1 算法需要提供一个种子点 ( x , y ) ,它的颜色为 G 0 。以四连通区域为例: 具体算法如下 ( 四连通区域 ) 1. 内部表示区域种子填充算法

Flood_Fill_4(x, y, G0, G1) { if(GetPixel(x,y) ==G0 ) // GetPixel(x,y) 返回(x,y)的颜色 { SetPixel(x, y, G1); //将(x,y)的添上颜色G1 Flood_Fill_4(x-1, y, G0, G1); Flood_Fill_4(x, y+1, G0, G1); Flood_Fill_4(x+1, y, G0, G1); Flood_Fill_4(x, y-1, G0, G1); } } 2.  边界表示区域种子填充算法 Fill_Boundary_4_Connnected(x, y, BoundaryColor, InteriorColor) // (x,y) 种子像素的坐标; // BoundaryColor 边界像素颜色; InteriorColor 需要填充的内部像素颜色 { if(GetPixel(x,y) != BoundaryColor && GetPixel(x,y)!= InteriorColor ) // GetPixel(x,y): 返回像素(x,y)颜色 { SetPixel(x, y, InteriorColor); // 将像素(x, y)置成填充颜色 Fill_Boundary_4Connnected(x, y+1, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x, y-1, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x-1, y, BoundaryColor, InteriorColor); Fill_Boundary_4Connnected(x+1, y, BoundaryColor, InteriorColor); } }

转载请注明原文地址: https://www.6miu.com/read-1511.html

最新回复(0)