本文概述
- 边界填充算法
- 递归边界填充算法的问题
- 算法
文章图片
边界填充算法 该算法使用递归方法。首先, 考虑称为种子的起始像素。该算法检查边界像素或相邻像素是否着色。如果相邻像素已被填充或着色, 则将其保留, 否则填充它。使用四个连接的方法或八个连接的方法完成填充。
文章图片
四个连接的方法比八个连接的方法更合适。
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);
}
推荐阅读
- 计算机图形(洪水填充算法)
- 计算机图形(中点椭圆算法)
- 计算机图形(三角法)
- 计算机图形(多项式方法)
- 计算机图形中点圆算法
- 布雷森汉姆的循环算法
- 使用极坐标定义一个圆
- 使用多项式方法定义一个圆
- 计算机图形(定义一个圆)