问题标签 [flood-fill]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
186 浏览

javascript - 在 JavaScript 中用位掩码识别湖泊

我有一个使用单纯形噪声生成“大陆”的算法,因此它会生成一个高度图,当像素/图块高于某个水平时,它将被识别为陆地,否则它是水。

我遇到的问题是有时土地会包围低于海平面的部分。我希望能够识别这些区域,因为它们不是海洋,而是陆地或湖泊。

所以下面的0代表水,1代表土地:

中间的 3 个 0 将被识别为非海。

我熟悉洪水填充算法。所以我可以做到的一种方法是遍历随机点,如果我找到水就使用洪水填充,如果它超过一定大小,那么它将是大海。然后,一旦识别出海洋,我就可以通过并识别非海洋水体。

这似乎效率低下,因为我必须处理比加载区域更大的区域,否则它会错误地将区域识别为非海洋。

有没有更好的办法?

0 投票
2 回答
4009 浏览

java - 递归洪水填充 - 检查边界

我在矩阵中有一个合法邻居的递归洪水填充(合法邻居是具有相同颜色的邻居),洪水没有填充数组中的所有合法邻居。我用于测试的板是:

输出是:

编辑 如果我将地图更改为:

输出将是:

剩下的两个 4 数字也需要填写。我的递归函数是:

更改代码

现在的输出是:

0 投票
1 回答
2717 浏览

parallel-processing - 是否有并行的洪水填充实现?

我可以使用 openMP 和 MPI,并且想知道是否有人遇到过任何洪水填充算法的并行版本(最好在 c 中)。如果没有,我会对如何并行化它的草图感兴趣 - 考虑到它基于递归,它甚至可能吗?

如果您需要刷新关于洪水填充的记忆,维基百科有一篇非常好的文章。

非常感谢您的帮助。

0 投票
2 回答
5143 浏览

java - FloodFill - 扫雷,需要解释

我正在尝试用 Java 制作类似扫雷的游戏,并且我已经完成了大部分工作。我需要帮助的是 FloodFill - http://en.wikipedia.org/wiki/Flood_fill

有人可以解释它是如何工作的吗?我在网上看过,但我不太明白解释,所以我认为在这里问会更容易。

在我的扫雷中,我有:

网格是一个 10x10 的网格,所以说你点击的按钮是 btn[14],

回到这个问题,有人可以向我解释一下吗?

编辑: 我将我的代码更改为 2D,所以现在不是上面的代码

单击按钮时,我希望它检查一个名为 mines[][] 的变量,该变量具有值,如果该值等于 0(在初始单击附近),它会更改 BG

0 投票
2 回答
1632 浏览

java - 递归溢洪溢出

这是我正在制作的类似扫雷游戏的 floodFill 代码。但是,如您所见,有 2 个部分被注释掉了。一旦我取消注释并运行程序。

我不确定为什么会这样,也不知道如何解决。任何帮助表示赞赏。

编辑:

Fls'Zen 在聊天中给出的答案,以防万一其他人遇到这个问题

0 投票
1 回答
3059 浏览

c# - StackOverflow 在我的洪水填充中

我目前正在创建一个用于锻炼的小绘画程序。现在我正在尝试做油漆桶工具,或者换句话说,洪水填充。有趣的是:如果必须填充的像素数量很少,一切正常。如果填充像素的讨厌数量更高,它会给我一个 SO-Exception。这是我的代码:

“löschFarbe”是被点击的颜色(将被其他颜色擦除/覆盖)

发生错误:如果我想填充完整的图片或很大的空间,我会在这里得到一个错误:

任何人都知道我该如何解决这个问题?

顺便说一句,这是我的程序的图片: 画

0 投票
4 回答
8530 浏览

matlab - 使用matlab进行洪水填充

我是 MATLAB 新手,我正在尝试在 matlab 中使用这个算法来实现洪水填充,我不知道我做错了什么可能是我没有正确使用递归函数,但我仍然没有出什么问题,这段代码让我的 matlab 关闭我我正在使用以下代码我从早上开始尝试调试它但未能找到问题

使用调用此函数

我是我的 200 x 200 的矩阵图像我想要我的黑色(0)到灰色(127),任何帮助将不胜感激

0 投票
3 回答
2729 浏览

c++ - 在 C++ 中应用寻路算法(塔防)

我已经实现了洪水填充算法,该算法将 array[15*15] 与路径一起使用,并生成他在填充路径时所采取的步骤队列。tl;博士看起来像这样

但是现在我有一系列步骤来填充网格,但我不知道如何应用这些信息让我的对象跟随并从头到尾。我的意思是,一条路径很简单,但如果它像这样分裂(9 是退出):
0 0 1 0 0
0 1 1 1 0
0 1 0 1 0
0 1 1 1 0
0 0 9 0 0
我将同时拥有队列中的左右路径,所以如果我做一个简单的 go(f_path.front()) 它会做上帝知道什么。我如何过滤它,所以它只会退出然后停止?我不能把头绕在它周围。

0 投票
2 回答
2729 浏览

ios - 对 UIImage 执行填充

我正在尝试对具有不透明度的 UIImage 执行填充。我尝试使用 CG(http://en.wikipedia.org/wiki/Flood_fill)实现 4-Way Floodfill,但读取像素颜色和着色像素会使其太慢。填充 300x100 像素的区域需要一分钟多的时间。我需要一个类似的功能:

这已经足够快了。

是否有人对与 UIImages 一起使用的 Objective-C 中的洪水填充算法有一个可行的实现或想法?我在一些 iOS 绘图应用中看到过这样的油漆桶工具。

0 投票
2 回答
3728 浏览

c# - 洪水填充实施

这是我基于堆栈的洪水填充算法的 C# 实现(我基于维基百科的定义)。早些时候在编码时,我只想看到它工作。它确实做到了。然后,我想知道实际填充的像素数。所以在我的代码中,我将返回类型更改为 int 并返回“ctr”变量。但是后来ctr大约是实际填充像素数的两倍(我制作了一个单独的函数,其唯一目的是计算这些像素 - 只是为了确定)。

任何人都可以了解变量“ctr”如何以及为什么会增加两倍吗?

* Pixel类仅用作位图中像素的 x、y 和颜色值的容器。