【图像处理】腐蚀(erode)和膨胀(dilate)

article/2025/8/29 5:32:27

【图像处理】腐蚀(erode)和膨胀(dilate)

  • 原理
    • 腐蚀(erode)
    • 膨胀(dilate)
  • OpenCV实现
    • C++实现
    • python实现
  • 开运算(Opening Operation)
  • 闭运算(Closing Operation)
  • 形态学梯度(Morphological Gradient)
  • 顶帽运算(Top Hat)
  • 黑帽运算(Black Hat)
  • 结语

原理

二值图像的处理方法,虽然基础,但在消除孔洞等任务中的效果非常好

腐蚀(erode)

腐蚀操作会把高亮(即值为255)的边界腐蚀掉。设定卷积核尺寸,卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是1,那么中心元素就保持原来的像素值,否则就变为0。
在这里插入图片描述

膨胀(dilate)

膨胀操作会把高亮(即值为255)的边界膨胀开。设定卷积核尺寸,卷积核沿着图像滑动,与卷积核对应的原图像的像素值中只要有一个是1,中心元素的像素值就是1。
在这里插入图片描述

OpenCV实现

某些场景下,先用腐蚀再用膨胀可以达到去除噪声的效果

C++实现

腐蚀:

Mat element = getStructuringElement(MORPH_RECT, Size(10, 10));
erode(src, dst, element)

膨胀:

Mat element = getStructuringElement(MORPH_RECT, Size(10, 10));
dilate(src, dst, element)
  • getStructuringElement:返回指定形状和尺寸的结构元素
  • src:输入图像
  • dst:腐蚀或膨胀操作后输出图像
  • element:自定义卷积核

关于函数getStructuringElement:

  • 第一个参数:矩形——MORPH_RECT,交叉形——MORPH_CROSS,椭圆形——MORPH_ELLIPSE
  • 第二个参数:卷积核的尺寸
  • 第三个参数:锚点的位置,默认值Point(-1, -1),表示锚点位于中心点

python实现

腐蚀:

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) 
dst = cv2.erode(src, kernel) 

膨胀:

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) 
dst = cv2.dilate(src, kernel)

开运算(Opening Operation)

先腐蚀后膨胀

开运算可以用来消除小物体在纤细点出分离物体平滑较大物体的边界同时并不明显改变其面积

闭运算(Closing Operation)

先膨胀后腐蚀

闭运算能够消除小型黑洞

形态学梯度(Morphological Gradient)

膨胀图与腐蚀图之差

对二值图像进行这一操作可以将团块(blob)的边缘突出来,可以用来保留物体的边缘轮廓

顶帽运算(Top Hat)

原图像与开运算的结果图之差

黑帽运算(Black Hat)

闭运算的结果图与原图像之差

结语

如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
如果我的文章对您有帮助,转载请注明出处。


http://chatgpt.dhexx.cn/article/DU3JsgQp.shtml

相关文章

chatgpt赋能Python-python_dilate

Python中的dilate操作:了解该操作及其应用 在计算机视觉领域,dilate操作是一种常用的图像处理技术。在Python中,我们可以使用OpenCV库来实现dilate操作。本文将介绍dilate操作的基本概念,讨论其应用及如何使用Python进行实现。 …

OPenCV膨胀函数dilate()的使用

OPenCV版本:4.4 IDE:VS2017 功能描述 简述:使用一个指定的核元素去膨胀一个图像,图像膨胀的过程类似于一个卷积的过程,源图像矩阵A以及结构元素B,B在A矩阵上依次移动,每个位置上B所覆盖元素的最…

OpenCV每日函数 图像过滤模块 (5) dilate膨胀函数

一、概述 通过使用特定的结构元素来扩大图像。该函数使用指定的结构元素扩展源图像,该结构元素确定取最大值的像素邻域的形状: 膨胀可以应用数次(迭代)。 在多通道图像的情况下,每个通道都是独立处理的。 膨胀: 腐蚀: 二、dilate函数 1、函数原型 cv::dilate…

生产环境屏蔽swagger

只需要在swagger的配置类上增加Profile( )注解,指定环境变量,即可屏蔽生产环境上的swagger,如下: 先使用dev环境,访问swagger,结果如下: 再使用test环境,访问swagger,结果…

生产环境解决跨域

1.先决条件是在开发环境中使用的是代理。 2然后在生产环境当中,增加一个proxy代理; (1)先下载:cnpm install http-proxy-middleware -D (2)引入: (3)使用&am…

linux环境下编译部署php生产环境

linux环境下编译部署php生产环境 版本控制 php:7.2.4 nginx:1.9.9 部分插件版本 xlswriter:1.3.3.2 redis:3.1.3 一、安装php 1.安装依赖(之后安装缺少的依赖都可以用yum安装) yum install -y gcc gcc-c make zlib zlib-devel pcre pcre…

用 source map 调试生产环境

当我们的应用程序部署到生产环境时,我们发现它与我们在开发环境时的代码不同。我们的代码在构建过程中会以各种方式进行修改和优化。 TypeScript 被转译、压缩。生成的 JavaScript 包尽可能小并且能够在浏览器中正常运行。 所有这些步骤都很有效率,它们…

uniapp 小程序 开发环境和生产环境

uni开发小程序 运行到开发工具 再上传 process.env.NODE_ENV 获取的值是development 一直是开发环境 用uni发行 上传到微信公众平台是生成环境 在 HBuilderX 中,点击“运行”编译出来的代码是开发环境,点击“发行”编译出来的代码是生产环境 let url;if …

Vue cli3配置生产环境,开发环境,和测试环境

目录1、先在package.json文件中添加: 2、在项目目录下建立 .env文件和.env.test文件 3、配置api变量 3.1、配置axios的baseURL路径 3.2、自己拼接的路径 4、.env知识点补充 4.1,关于文件名:必须以如下方式命名,不要…

31 SpringBoot多环境的切换(生产环境、开发环境、测试环境)

参考链接: Spring官网 Spring官网 外部配置加载顺序的说明 SpringBoot多环境的切换(生产环境、开发环境、测试环境)_周太阳的博客-CSDN博客_springboot测试生产环境切换 java maven 测试生产环境配置_SpringBoot生产环境和测试环境配置分离的教程详解_落云歌语文…

生产环境关闭 swagger

#生产环境需要关闭 swagger 防止接口暴露 1,启动判断写在相应的环境配置文件中,根据条件判断是否启动 swagger : 添加配置项:swagger.is.enable #是否激活 swagger true or false swagger.is.enabletrue2,代码取值&a…

前端工程师生产环境 debugger 技巧

关注公众号 前端开发博客,领27本电子书 回复加群,自助秒进前端群 导言 开发环境 debug 是每个程序员上岗的必备技能。生产环境呢?虽然生产环境 debug 是一件非常不优雅的行为,但是由于种种原因,我们又不得不这么干。 那…

【微信小程序 | 实战开发】开发环境、测试环境和生产环境

写在前面: 你是否想要掌握人工智能的最新技术和应用?你是否想要成为未来社会的创新者和领导者?你是否想要和全球的优秀导师和同学一起学习和交流?如果你的答案是肯定的,那么欢迎来到床长人工智能教程网站,这…

Nginx生产环境平滑升级

一.背景 最近遇到一个比较尴尬而又实际的问题,那就是我们生产环境使用的Nginx是Centos6的老古董。业务需求需要加载Nginx的一个模块来实现,但是版本太老了,需要Nginx1.18之后才能支持,而我们的是Nginx1.12。 那升级Nginx是我们要做…

生产环境和开发环境_环境部署:开发、测试和线上环境的区别

点击蓝字 关注我们 软件开发环境(Software Development Environment,SDE)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者…

python生产环境部署

文章目录 一、前言二、准备工作三、安装python四、安装虚拟环境 一、前言 在实际工作中,很多公司的生产环境都是隔离外网的,而且往往多个项目组共用相同的服务器,因此经常会遇到两个问题: python以及第三方模块的版本难以统一&a…

django生产环境部署

django生产环境部署 生产环境中的数据流 参考文档: wsgi详解:https://blog.csdn.net/li_101357/article/details/52748323 wsgi协议介绍(萌新版):https://blog.csdn.net/j163you/article/details/80919360 廖雪峰…

开发环境、测试环境、生产环境 到底是什么?

读一些官方文档的时候,总会遇到以下几个关键的名词,一开始我不太懂,绕来绕去,让我对文档阅读产生了误会,于是查找了一些资料。 百度解释如下: 开发环境:开发环境是程序猿们专门用于开发的服务器…

生产环境和开发环境

开发环境(development) 开发环境: 是指程序猿专门用于开发的服务器,配置比较简单随意,主要是为了开发过程中调试方便,一般打开全部错误报告和测试工具。 生产环境:(production&…

postman接口自动化测试

Postman除了前面介绍的一些功能,还有其他一些小功能在日常接口测试或许用得上。今天,我们就来盘点一下,如下所示: 1.数据驱动     想要批量执行接口用例,我们一般会将对应的接口用例放在同一个Collection中&#xf…