本文概述
区域填充是图像或区域的填充过程。填充可以是边界区域或内部区域, 如图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);
}
评论前必须登录!
注册