在这篇文章中,我们将了解洪水填充算法和边界填充算法之间的区别。它们是区域填充算法,可以根据随机像素是否具有该区域的原始颜色来区分它们。
它也被称为种子填充算法。
它针对多维数组计算连接到给定节点的面积。
它通过填充或重新着色内部包含特定颜色的特定区域并因此给图像的边界着色来起作用。
它由具有邻域的图片表示,该邻域具有边界并具有不同的颜色区域。
可以更换特定的内部颜色,以使这些部件疼痛。
内存消耗很高。
这是一个相对简单的算法。
它具有处理包含多种边界色的图像的能力。
与边界填充算法相比,它相对较慢。
可以使用随机颜色来绘制内部零件,并且将旧像素替换为新像素。
这是一种有效的算法。
通过连接像素,可以使用两种方法来创建多个边界。
4种连接方式:在这种方法中,像素最多可以有四个邻居。这些将放置在当前像素的左,右,上方和下方位置。
8位连接方式:在这种方法中,像素最多可以有8个邻居。对照四个对角像素检查相邻位置。
当边界包含单一颜色时,算法沿向外方向逐个像素继续,直到找到边界颜色为止。
它在交互式绘画包中实现,可以轻松选择内部点。
该算法开始于接受成为输入的内部点(x,y)的坐标,边界颜色和填充颜色。
该算法从(x,y)点开始检查其相邻位置,以确定它们是否是边界色的一部分。
如果不是边界色,则将其涂上填充色,并在相同条件下测试相邻像素。
当检查所有达到边界颜色的像素时,此过程结束。
该区域用单色定义。
内存消耗较低。
与泛洪算法相比,它是快速的。
与泛洪算法相比,它比较复杂。
它可以处理包含单一边界色的图像。
我正试图制作一个可以在C#中填充int数组的算法。基本上,作为MS Paint中的填充工具,我有一个颜色,如果我在数组中选择(x,y)坐标,它会用新的颜色替换所有初始颜色相同的邻居。 例如: 如果我把3放入(0,0),数组就变成: 所以我在递归中尝试了它,它确实有效,但不是一直有效。实际上,我有时会遇到“堆栈溢出”错误(似乎合适)。这是我的代码,如果你能告诉我哪里出了问题,那就太好了:) 谢了!
我试图构建一个函数floodfill(矩阵,x,y),到目前为止,我已经得到了这个: 你有办法引导我继续下去吗?试着在这里看洪水填充的例子,但他们似乎不适合我的情况。至少我无法将这些示例应用到我的代码中。洪水填充似乎不是这里受欢迎的主题...但是,再次,帮助将非常感谢!
我正在编写一个非常基本的油漆应用程序。 我的应用程序有一个图像,当我触摸任何地方时,这个地方会填充一种颜色。 我使用洪水填充算法(http://en.wikipedia.org/wiki/Flood_fill),特别是第二种替代实现方法。 我使用像素图来更新纹理。 这在我的电脑上运行得很好,问题是在我的android(分辨率为720p的摩托罗拉moto G,android 4.4)上执行应用程序时
我正在用Java开发一个小的绘图应用程序。我试图通过实现洪水填充算法来创建一个“bucket-fill”工具。 (不必是特定于Java的)。 谢谢。
我正在编程一个简单的绘画应用程序使用Java。我试图使用洪水填充算法的递归实现作为我的“桶填充”工具。 我想知道是否有一种方法仍然使用递归与这个算法,而不得到这个错误。 如果没有,这个算法有哪些可能的非递归实现,我可以在我的程序中使用?
下图代表房间布局。 “#”代表墙。在左边和右边有#的单个空格代表门。连续的空间代表房间面积。 这将作为一个2D数组提供给Java程序。示例输入如下: