📜  计算机图形学边界填充算法

📅  最后修改于: 2020-12-20 09:39:37             🧑  作者: Mango

填充区域基元:

区域填充是图像或区域的填充过程。填充可以是边界或内部区域,如图2所示。边界填充算法用于填充边界,泛洪填充算法用于填充内部。

边界填充算法:

该算法使用递归方法。首先,考虑称为种子的起始像素。该算法检查边界像素或相邻像素是否着色。如果相邻像素已被填充或着色,则将其保留,否则填充它。使用四个连接的方法或八个连接的方法完成填充。

四个连接的方法比八个连接的方法更合适。

1.四种连接的方法:在这种方法中,将测试左,右,上,下像素。

2.八种相连的方法:在这种方法中,选择了左,右,上,下和四个对角线。

可以通过先从左和右看像素来检查边界。然后通过从上到下查看像素来检查像素。该算法需要时间和内存,因为需要一些递归调用。

递归边界填充算法的问题:

当某些内部像素已经用颜色填充时,有时可能无法正确填充区域。该算法将检查该边界像素是否填充,并且将发现已经填充,因此递归过程将终止。由于另一个内部像素未填充,这可能会有所不同。

因此,在应用算法之前,请检查所有像素颜色。

算法:

Procedure fill (x, y, color, color1: integer)
int c;
c=getpixel (x, y);
if (c!=color) (c!=color1)
{
    setpixel (x, y, color)
    fill (x+1, y, color, color 1);
     fill (x-1, y, color, color 1);
    fill (x, y+1, color, color 1);
    fill (x, y-1, color, color 1);
}