点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自:opencv学堂

泛洪填充(Flood Fill)很多时候国内的开发者称它为漫水填充,该算法在图形填充与着色应用程序比较常见,属于标配。在图像处理里对二值图像的Hole可以通过泛洪填充来消除,这个是泛洪填充在图像处理中很经典的一个用途,此外还可以通过泛洪填充为ROI区域着色。这个在图像处理也经常用到。让我们首先看一下泛洪填充算法本身,然后再说一下在图像处理中的应用场景。

泛洪填充算法

通常泛洪填充需要从一个点开始,这个点可以随机选择的一点,但是一定要在填充区域内部,然后它就会进行四邻域或者把邻域寻找对周围像素完成填充,直到遇到跟指定随机点像素值不同的像素为止,也可以认为是到达了区域边界。通过邻域像素寻找实现填充速度比较慢、不是泛洪填充好的实现方式,最常见与快速的泛红实现是基于扫描线算法的,步骤如下:

1.首先从开始点出发进行垂直方向列的扫描,填充

2.然后以填充点开始进行每一行的扫描与填充

3.继续以每一行新填充的像素为开始点,执行1,2步骤

4.直到区域所有点都完成填充为止。

图示如下:

第一步:假设有图像如下,红色表种子像素点。

首先进行竖直方向的扫描,填充结果如下:

然后以填充的红色像素为起始点,开始水平方向的扫描填充,结果如下:

用水平方向被填充像素点为种子像素点,继续竖直方式扫描填充,结果如下:

以填充的像素点为种子像素点继续水平方向扫描,结果如下:

这样就完成了对整个区域的填充。从上面的例子可以看出,泛洪填充可以通过递归方式编码实现,但是基于递归方式编码实现有个致命的缺点,对大图填充时候容易导致栈溢出,所以更常用的基于队列或者栈的数据结构实现非递归的泛洪填充。OpenCV中的实现主要是基于栈的扫描线算法实现泛洪填充。

应用场景一:

通过泛洪填充算法实现对二值图像对象区域中Hole填充

运行显示原图如下:


填充以后结果如下:


实现代码如下:

应用场景二:

通过泛洪填充实现对ROI区域的着色, 跟上个例子使用API唯一不同地方是带了mask参数。运行结果如下:


实现代码如下:

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

OpenCV中泛洪填充算法解析与应用相关推荐

  1. OpenCV实现FloodFill泛洪填充算法的代码及相关函数详解

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 FloodFill泛洪填充算法是在很多图形绘制软 ...

  2. 图像处理------泛洪填充算法(Flood Fill Algorithm) 油漆桶功能

    泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...

  3. 水漫金山:OpenCV漫水填充算法(Floodfill)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/28261997 作者:毛星云(浅墨) ...

  4. 【OpenCV入门教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/28261997 作者:毛星云(浅墨) ...

  5. 【OpenCV新手教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/28261997 作者:毛星云(浅墨) ...

  6. 洪水填充算法_Android图像处理之泛洪填充算法

    泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是windows paint的油漆桶功能.算法的原理很简单,就是 ...

  7. opencv中人脸识别算法的基本原理

    opencv中人脸识别算法的基本原理(一) 使用opencv中自带的三种人脸识别算法进行实验后,特意去了解学习了一下其基本原理,在这里记录下. opencv人脸识别 关于如何使用opencv实现人脸识 ...

  8. Linux源码中的mktime算法解析

    Linux源码中的mktime算法解析 我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的. 那么,要把它转化为系统便于处理的ti ...

  9. opencv漫水填充算法floodfill

    定义 : 漫水填充算法是一种用特定颜色填充连通区域,通过设置像素上下限及连通方式来达到不同的连通效果.漫水填充经常用来标记或分离图像的一部分,以便于对其进行进一步的处理和分析.也可以从输入图像获取掩码 ...

最新文章

  1. 某40岁程序员找工作,因技术老旧被拒绝,竟泪洒当场!
  2. Git入门最终集!SSH公钥是乱码怎么办?IDEA与Git!将自己的代码上传至远程仓库!
  3. C# 复制 粘贴 剪切 撤销
  4. 洛谷 - P4015 运输问题(费用流)
  5. canvas 元素绑定事件_绘制SVG内容到Canvas的HTML5应用
  6. POJ 1258 Agri-Net (最小生成树)
  7. 硬件开源为什么如此之难?
  8. 错误:找不到或无法加载主类
  9. iPhone未来怎么走?将融入脸部以及指纹辨识系统
  10. 使用SqlBulkCopy 批量操作大量数据
  11. 使用devcon禁用启用网卡
  12. WAP1.x协议栈浅析
  13. 【老九】【Java】随机数详解
  14. Linux怎么解决更改xx权限:不允许的操作
  15. 100个替代昂贵商业软件的开源应用/100 Open Source Replacements for Expensive Applications
  16. Java根据子节点查找父节点
  17. 【解决方案】如何通过国标GB28181协议视频平台EasyGBS搭建安监局危化品可视化监控平台?
  18. Windows10 的microsoft defender smartscreen怎么关闭的教程和方法?
  19. 安卓桌面软件_金其利银河麒麟桌面操作系统
  20. Python——库docx(六:分页符、分节符)1.4

热门文章

  1. 专访施巍松:边缘计算早期提出者之一
  2. 百度AI开放平台3.0:平等赋能成为百度AI关键词
  3. 马斯克新视频:Boring公司将优先解决公交快速通勤
  4. Facebook 应用机器学习团队专访:人工智能在 Facebook 中的应用
  5. 高速流水线,Jenkins Shared Pipeline
  6. 看看人家 SpringBoot 的全局异常处理,多么优雅...
  7. Nginx 为什么这么快?
  8. 有一份华为荣誉证书等你来拿!网络人工智能硬盘异常预测黑客松比赛火热报名中...
  9. 数据竞赛利器XGBoost常见面试题集锦
  10. Debug Your Life!关于学习、面试和工作成长(附B站录播)