油漆填充与边界填充的区别

30 Aug 2024 | 3 分钟阅读

在区域填充算法的分类下,Flood Fill 和 Boundary Fill 算法都属于其中。首先,检查随机像素是否具有该区域的原始颜色,这是算法列表中的关键区别点。另一方面,Boundary Fill 算法会检查边界像素,并且还会检查它是否已被填充。

为特定的图像区域或面积着色过程称为区域填充或面积填充。根据几何级别或像素,可以描述这些区域。

Flood Fill 算法定义

Flood Fill 算法的工作机制是通过重新着色或填充图像边界和内部具有不同颜色的指定区域。该算法可以通过具有边界的、不同的区域颜色来说明。而不是寻找边界颜色值,我们可以替换特定的内部颜色来绘制这些区域。这种类型的相应方法称为Flood Fill 算法

该算法从某个点 (x, y) 开始工作,并使用所有必需的填充颜色,重新分配所有最近设置为指定内部颜色的像素值。在多种内部颜色的情况下,像素值会被重新分配。因此,所有内部点都包含相同的颜色。

为了创建连续边界,有两种方法可以通过像素连接使用:4 连通和像素 4 连通方法。在 4 连通方法中,像素最多可以有四个邻居,分别位于当前像素的左、右、下和上方。另一方面,在 8 连通方法中,有八个邻居,并检查邻域中的四个对角像素。从中,可以使用这两种方法之一来重绘内部点。

Boundary Fill 算法定义

Boundary Fill 算法遵循一种方法,在该方法中,区域填充从区域内的某一点开始,并向边界方向填充内部。当遇到由单一颜色组成的边界并逐像素向外扩展时,填充算法会继续进行,直到遇到边界颜色为止。在交互式绘画软件包中,Boundary Fill 算法主要用于易于选择内部点的情况。

通过接受一个内部点 (x, y) 的坐标、一个边界颜色和一个填充颜色作为输入,它就开始工作。该过程从 (x, y) 开始检查相邻位置,以确定它们是否属于边界颜色。如果它们不是边界颜色,它们将被填充颜色填充,并根据条件检查其侧面像素。当检查区域的所有像素都达到边界颜色时,该过程结束。

Flood Fill 算法和 Boundary Fill 算法的比较

基于以下几点的比较Flood Fill 算法Boundary Fill 算法
基本功能此区域可以包含多种颜色。此区域由单一颜色定义。
内存消耗该算法的内存消耗非常高。该算法的内存消耗非常低。
填充过程使用随机颜色为内部部分着色,然后用新颜色更新旧颜色。通过持续搜索边界颜色来填充内部部分。
算法的复杂性在此算法中,算法的复杂度相对简单。在此算法中,算法的复杂度相对复杂。
速度它相对较慢。它相对较快。

结论

Flood-fill 和 Boundary-fill 算法用于不同的目的或不同的场景。Flood-fill 算法更适用于边界没有均匀颜色的对象。相反,Boundary-fill 算法可以在具有单一边界颜色的任意形状区域上优雅地进行操作。


下一主题区别