0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文解析OpenCV中泛洪填充算法与应用

新机器视觉 ? 来源:OpenCV学堂公众号 ? 作者:OpenCV学堂公众号 ? 2021-04-09 10:25 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

泛洪填充算法

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

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

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

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

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

图示如下:

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

482a1852-98d9-11eb-8b86-12bb97331649.png

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

484920ee-98d9-11eb-8b86-12bb97331649.png

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

4865be3e-98d9-11eb-8b86-12bb97331649.png

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

48739b12-98d9-11eb-8b86-12bb97331649.png

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

488483e6-98d9-11eb-8b86-12bb97331649.png

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

应用场景一:

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

运行显示原图如下:

489fade2-98d9-11eb-8b86-12bb97331649.png

填充以后结果如下:

48b3b8be-98d9-11eb-8b86-12bb97331649.png

实现代码如下:

48cb96d2-98d9-11eb-8b86-12bb97331649.jpg

应用场景二:

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

48f93bb4-98d9-11eb-8b86-12bb97331649.png

实现代码如下:

4934b072-98d9-11eb-8b86-12bb97331649.jpg

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1738

    浏览量

    64624
  • OpenCV
    +关注

    关注

    32

    文章

    648

    浏览量

    43312
  • 泛洪算法
    +关注

    关注

    0

    文章

    2

    浏览量

    1397

原文标题:OpenCV中泛洪填充算法解析与应用

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和
    的头像 发表于 08-14 17:45 ?267次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b>实现面部和运动追踪的云台系统?

    锂离子电池电解质填充工艺:技术原理与创新实践

    在锂离子电池的全生命周期中,电解质填充工艺的技术精度直接关联电池的能量密度、循环稳定性与安全性。美能锂电作为新能源制造领域的创新引领者,始终以精密工艺为基石,在电解质填充技术的研发与应用实现了从
    的头像 发表于 08-11 14:53 ?131次阅读
    锂离子电池电解质<b class='flag-5'>填充</b>工艺:技术原理与创新实践

    【GM-3568JHF开发板免费体验】OpenCV 视频目标跟踪 ( CamShift)

    、基本理论 在计算机视觉领域,视频目标跟踪是个非常重要的任务。视频目标跟踪广泛应用于监控、自动驾驶、人机交互等多个领域。OpenCV 提供了多种目标跟踪算法,其中 MeanShif
    发表于 08-09 13:19

    苹果手机应用到底部填充胶的关键部位有哪些?

    苹果手机应用到底部填充胶的关键部位有哪些?苹果手机,底部填充胶(Underfill)主要应用于需要高可靠性和抗机械冲击的关键电子元件封装部位。以下是其应用的关键部位及相关技术解析:手
    的头像 发表于 05-30 10:46 ?331次阅读
    苹果手机应用到底部<b class='flag-5'>填充</b>胶的关键部位有哪些?

    沟槽填充技术介绍

    图2.2是现代CMOS 器件剖面的示意图。般来说,水平方向的尺寸微缩幅度比垂直方向的幅度更大,这将导致沟槽(包含接触孔)的深宽比(aspect ratio)也随之提高,为避免沟槽填充过程中产生空穴
    的头像 发表于 05-21 17:50 ?504次阅读
    沟槽<b class='flag-5'>填充</b>技术介绍

    伟视界:AI防爆型摄像机有哪些常用算法算法解析与并行运行能力介绍

    AI防爆型摄像机通过多种智能算法,如目标检测、人体识别、行为识别等,具备了对监控场景的深度解析与高效管理能力。它能实时监测潜在危险并预警,在无网无电环境可独立运行,充分展示了其强大的并行算法
    的头像 发表于 02-27 10:41 ?665次阅读
    <b class='flag-5'>中</b>伟视界:AI防爆型摄像机有哪些常用<b class='flag-5'>算法</b>之<b class='flag-5'>算法</b><b class='flag-5'>解析</b>与并行运行能力介绍

    解析工业互联网

    电子发烧友网站提供《解析工业互联网.pptx》资料免费下载
    发表于 02-20 16:42 ?1次下载

    先进封装Underfill工艺的四种常用的填充胶CUF,NUF,WLUF和MUF介绍

    今天我们再详细看看Underfill工艺中所用到的四种填充胶:CUF,NUF,WLUF和MUF。 倒装芯片的底部填充工艺般分为三种:毛细填充(流动型)、无流动
    的头像 发表于 01-28 15:41 ?2188次阅读
    先进封装Underfill工艺<b class='flag-5'>中</b>的四种常用的<b class='flag-5'>填充</b>胶CUF,NUF,WLUF和MUF介绍

    芯片底部填充胶种类有哪些?

    芯片底部填充胶种类有哪些?底部填充胶(Underfill)又称底部填充剂,指以高分子材料为原材料制成的电子封装胶,主要用于在芯片和基板之间的空隙
    的头像 发表于 12-27 09:16 ?1209次阅读
    芯片底部<b class='flag-5'>填充</b>胶种类有哪些?

    PCB设计填充铜和网格铜有什么区别?

    填充铜(SolidCopper)和网格铜(HatchedCopper)是PCB设计两种不同的铺铜方式,它们在电气性能、热管理、加工工艺和成本方面存在些区别:1.电气性能:填充铜:提
    的头像 发表于 12-10 16:45 ?101次阅读
    PCB设计<b class='flag-5'>中</b><b class='flag-5'>填充</b>铜和网格铜有什么区别?

    PCB设计填充铜和网格铜有什么区别?

    填充铜(SolidCopper)和网格铜(HatchedCopper)是PCB设计两种不同的铺铜方式,它们在电气性能、热管理、加工工艺和成本方面存在些区别:1.电气性能:填充铜:提
    的头像 发表于 12-10 11:18 ?80次阅读
    PCB设计<b class='flag-5'>中</b><b class='flag-5'>填充</b>铜和网格铜有什么区别?

    【AI实战项目】基于OpenCV的“颜色识别项目”完整操作过程

    OpenCV个广受欢迎且极为流行的计算机视觉库,它因其强大的功能、灵活性和开源特性而在开发者和研究者备受青睐。学习OpenCV主要就是学习里面的计算机视觉
    的头像 发表于 12-09 16:42 ?1551次阅读
    【AI实战项目】基于<b class='flag-5'>OpenCV</b>的“颜色识别项目”完整操作过程

    个月速成python+OpenCV图像处理

    OpenCV个广受欢迎且极为流行的计算机视觉库,它因其强大的功能、灵活性和开源特性而在开发者和研究者备受青睐。学习OpenCV主要就是学习里面的计算机视觉
    的头像 发表于 11-29 18:27 ?525次阅读
    <b class='flag-5'>一</b>个月速成python+<b class='flag-5'>OpenCV</b>图像处理

    手写图像模板匹配算法OpenCV的实现

    OpenCV的模板匹配是支持基于NCC相似度查找的,但是不是很好用,个主要的原因是查找最大阈值,只能匹配个,自己比对阈值,又导致无法正确设定阈值范围,所以问题很多。于是我重新写了
    的头像 发表于 11-11 10:12 ?854次阅读
    手写图像模板匹配<b class='flag-5'>算法</b>在<b class='flag-5'>OpenCV</b><b class='flag-5'>中</b>的实现

    AIGC算法解析及其发展趋势

    AIGC(Artificial Intelligence Generated Content,人工智能生成内容)算法是当今前沿科技的代表,它利用人工智能技术和算法自动生成各种形式的内容。
    的头像 发表于 10-25 15:35 ?1872次阅读