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

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

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

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

或者深度优先遍历

dfs和bfs都可以解决

概念

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

核心思想

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

实现方法

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

注意事项

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

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

  • 缺点:代码稍复杂。

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

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

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

应用场景

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

总结

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

相关推荐
千金裘换酒1 天前
LeetCode 移动零元素 快慢指针
算法·leetcode·职场和发展
wm10431 天前
机器学习第二讲 KNN算法
人工智能·算法·机器学习
NAGNIP1 天前
一文搞懂机器学习线性代数基础知识!
算法
NAGNIP1 天前
机器学习入门概述一览
算法
iuu_star1 天前
C语言数据结构-顺序查找、折半查找
c语言·数据结构·算法
Yzzz-F1 天前
P1558 色板游戏 [线段树 + 二进制状态压缩 + 懒标记区间重置]
算法
漫随流水1 天前
leetcode算法(515.在每个树行中找最大值)
数据结构·算法·leetcode·二叉树
mit6.8241 天前
dfs|前后缀分解
算法
扫地的小何尚1 天前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
千金裘换酒1 天前
LeetCode反转链表
算法·leetcode·链表