FloodFill算法:洪水般的图像处理艺术

简单来说就是一场洪水(雨水)会把低洼的地方淹没

也就是一道题,你要找出所有为负数的连通块,对角线不能连通,所以上述图有两个

其实也很简单,就是你扫描的过程,发现一个负数,就以这个负数为起点,来一次宽度遍历

或者深度优先遍历

dfs和bfs都可以解决

概念

Flood Fill(泛洪填充)算法是一种经典的图像处理算法,用于将连通区域内的所有像素点替换为指定颜色。它也被称为 "种子填充算法",在游戏、图形处理、计算机视觉等领域有广泛应用。以下是关于 Flood Fill 算法的详细介绍:

核心思想

从一个起始点(种子点)开始,递归或迭代地将与其连通且颜色相同的所有像素点替换为目标颜色。连通性通常分为4 方向 (上、下、左、右)或8 方向(加上对角线)。

实现方法

1. 递归 DFS 实现(最直观)
  • 思路:从种子点开始,递归填充 4/8 方向的相邻像素。
  • 优点:代码简洁。
  • 缺点:可能导致栈溢出(递归深度过大时)。
2. 迭代 BFS 实现(更安全)

注意事项

  • 思路:使用队列存储待处理的像素点,避免递归栈溢出。

  • 优点:避免栈溢出,适合大规模数据。

  • 缺点:代码稍复杂。

  • 边界检查:确保不越界。

  • 避免重复处理:使用访问标记或直接修改原图像。

  • 性能优化:对于大图像,优先使用 BFS 或迭代 DFS。

应用场景

  • 图像处理:填充选区、消除背景。
  • 游戏开发:扫雷游戏中自动展开空白区域、地图涂色。
  • 路径规划:识别连通区域、标记障碍物。
  • 计算机视觉:分割图像中的对象。

总结

Flood Fill 是一种简单但强大的算法,核心在于连通区域的遍历。递归 DFS 适合小规模问题,而迭代 BFS 更安全。实际应用中需注意边界处理和性能优化。

相关推荐
垆边人似月.5 小时前
华为机试题 :字符串压缩
算法·华为
ggb喔5 小时前
52pojie 的图片工具:为什么无损转换后体积涨了 6 倍、照片方向还是歪的
图像处理·python·算法·计算机视觉·图形渲染·媒体
菜鸟~noob2335 小时前
【电子战】第25篇:自由空间、双射线与菲涅尔区【含matlab代码】
开发语言·算法·matlab
地平线开发者5 小时前
地平线征程6M YOLOv8s 部署
算法·自动驾驶
Run_Teenage5 小时前
算法:Manacher(马拉车)算法、中心扩展算法
算法
Tisfy6 小时前
LeetCode 0301.删除无效的括号:二进制枚举 / 回溯
算法·leetcode·字符串·题解·回溯·括号匹配·二进制枚举
Nil2086 小时前
leetcode 322零钱兑换
算法·leetcode·职场和发展
海绵宝宝转agent6 小时前
2026-10-9 leetcode100刷题+面经整理
笔记·算法·面试
yi0116 小时前
DAY24: LeetCode 167:两数之和 II|从暴力枚举到左右双指针
笔记·python·算法·leetcode·二分查找·双指针
木井巳6 小时前
【BFS 解决拓扑排序】课程表
java·算法·leetcode·广度优先·宽度优先·推荐算法·图搜索算法