十、计算机视觉-腐蚀操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、什么是腐蚀
  • 二、如何实现腐蚀
  • 三、腐蚀的原理


一、什么是腐蚀

在我们生活中常会见到腐蚀,比如金属表面受到氧化或其他化学物质的侵蚀,导致金属表面出现腐蚀、或者生锈。
木材受到细菌或者昆虫的侵蚀,导致木材内部和表面逐渐腐朽或者磨损。
在计算机世视觉中腐蚀操作和现实中类似,腐蚀主要用于减小或消除图像中的边缘或细小的物体。在这个操作中,我们使用一个称为结构元素的小矩形或圆形区域来“侵蚀”图像中的像素。具体来说,当结构元素与图像中的像素进行比较时,只有当结构元素覆盖的所有像素都是前景像素(白色像素)时,该像素才被视为前景像素,否则被视为背景像素(黑色像素)。通过这种方式,腐蚀操作可以使前景物体的边界变得更加平滑,并消除小的物体或者连接较弱的边缘。
你可以想象我们有一个雕刻的石像,但是石像有点瑕疵,我们需要用到工具(结构元素或者叫卷积核)来把他给打磨一下,让它看起来更符合我们的要求。这就是我们使用腐蚀的目的。

二、如何实现腐蚀

先上代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
image = cv2.imread('./img/yunfeng2.jpg')
# 定义结构元素
kernel = np.ones((5,5),np.uint8)

# 执行腐蚀操作
erode_image = cv2.erode(image, kernel, iterations=1)

# 显示原始图像和腐蚀后的图像
cv2.imshow('original', image)
cv2.imshow('erod', eroded_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

看下结果: 上面是原图,下面是腐蚀后的图
在这里插入图片描述
可以看到原图有一些线和点 在腐蚀操作后都消失了,但是我们字好像也变得细了一些。

三、腐蚀的原理

我们看下上面的腐蚀代码

kernel = np.ones((5,5),np.uint8)
erode_image = cv2.erode(image, kernel, iterations=1)

kernel是一个卷积核 也就是我们刚开始提到的结构元素,我们设置为他为5x5像素的。
我们开始介绍时提到腐蚀操作的过程是结构元素与图像中的像素进行比较时,只有当结构元素覆盖的所有像素都是前景像素(白色像素)时,该像素才被视为前景像素,否则被视为背景像素(黑色像素)。
你可以想象一下,现在有一个5x5像素的方格,
方格内容可以根据需要自定义,以适应不同的图像处理任务,例如腐蚀、膨胀、开运算、闭运算等形态学操作,我们这里假定方格的内容比如全是1。
方格在图像上滑动,并且方格与重叠的图像区域的每个像素进行逐个比较假设我们方格移动到上方图像的一个杂点上 这个杂点可能包含多个像素,我们方格对这个杂点每个像素都要比较, 方格覆盖其中一个像素 ,方格覆盖的区域有黑色,那当前这个点就会被腐蚀掉。如果方格覆盖范围全是白色,那就不会腐蚀。
如果还是不明白 可以看下图:
我吧上图的一个杂点给放大 如下图
在这里插入图片描述
这个白色的就是杂点,红色方格就是我们的5x5像素的方格也就是结构元素,方格以自身中心点的位置为基准进行移动的,中心位置就是上图箭头标示的位置。可以看到,方格中心点在杂点的第一个像素上时,方格区域内有黑色像素,所以,杂点的第一个像素就被腐蚀掉,一次类推 逐渐移动杂点的每一个像素。
继续移动到下图的位置:
在这里插入图片描述
我们发现 方格内没有了黑色部分,那与方格中心点重叠的这个像素就不会被腐蚀。有人可能会问,我们刚才演示的云峰那个图片上腐蚀操作后没有白色的杂点了。我们来把刚才腐蚀后的图片方法看一下,
在这里插入图片描述
其实以像素方式去看的话 还是有杂点,只不过太小了 我们视觉肯定看不到了。
再回到我们上面提到的问题:为什么字变细了?相信聪明的你已经有答案了。
我们想一下,我们如果不是设置的5x5的方格而是设置更大或者更小的方格,会对结果有影响吗,有了上面的分析我们可以得出以下结论:
方格的大小可以影响着:
1.腐蚀程度: 结构元素的大小决定了腐蚀操作的程度。较大的结构元素通常会产生更强的腐蚀效果,而较小的结构元素则会产生较弱的腐蚀效果。因此,结构元素的大小会直接影响图像中前景物体的大小和形状。
2.细节保留: 较小的结构元素能够更好地保留图像中的细节和小的特征,因为它们只会影响局部区域。相反,较大的结构元素可能会模糊或丢失一些细小的特征。
3.计算复杂度: 较大的结构元素意味着需要在图像的更多位置执行比较操作,这会增加计算的复杂度和运行时间。因此,在选择结构元素大小时需要考虑到计算资源的限制。

上面腐蚀操作还有一个参数

erode_image = cv2.erode(image, kernel, iterations=1)

iterations代表迭代次数,也就是腐蚀几次,1代表只腐蚀1次,设置2就是腐蚀2次。还是刚才的图片我们如果腐蚀2次,那我们上面说的 还保留一点的杂点就会被腐蚀掉,但是同样字也会变得更细。实际效果大家可以自行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/399945.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【办公类-16-07-04】合并版“2023下学期 中班户外游戏(有场地和无场地版,一周一次)”(python 排班表系列)

背景需求: 把 无场地版(贴周计划用) 和 有场地版(贴教室墙壁上用) 组合在一起,一个代码生成两套。 【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环”&…

基于RHEL8部署Zabbix6.0,监控不再困难!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Linux是什么

文章目录 Linux是什么Linux之前Unix发展史MulticsUnicsUnixUNIX分支--BSDUNIX分支--System VMinixGUN计划GPLXFree86Linux 开源软件和闭源软件开源软件闭源软件/专利软件(copyright) Linux的内核版本Linux发行版 Linux是什么 Linux到底是操作系统还是应用程序呢?Li…

利用nbsp设置空格

想要实现上面效果&#xff0c;一开始直接<el-col :span"8" >{{ item.name }} </el-col> 或者<el-col :span"8" >{{ item.name }}</el-col>或者<el-col :span"8" >{{ item.name }}</el-col> 都无…

基于RBAC的权限管理的理论实现和权限管理的实现

权限管理的理论 首先需要两个页面支持&#xff0c;分别是角色管理和员工管理&#xff0c;其中角色管理对应的是角色和权限的配合&#xff0c;员工管理则是将登录的员工账号和员工所处的角色进行对应&#xff0c;即通过新增角色这个概念&#xff0c;让权限和员工并不直接关联&a…

【前端】前端三要素之DOM

写在前面&#xff1a;本文仅包含DOM内容&#xff0c;JavaScript传送门在这里&#xff0c;BOM传送门在这里。 本文内容是假期中刷的黑马Pink老师视频&#xff08;十分感谢Pink老师&#xff09;&#xff0c;原文保存在个人的GitLab中&#xff0c;如果需要写的网页内容信息等可以评…

ArcGIS中查看栅格影像最大值最小值的位置

如果只是想大概获取栅格影像中最大值最小值的位置进行查看&#xff0c;可以不用编写程序获取具体的行列信息&#xff0c;只需要利用分类工具即可。 假设有一幅灰度影像数据&#xff0c;如下图所示。 想要查看最大值2116的大概位置在哪里&#xff0c;可以右击选择图层属性&…

缩小ppt文件大小的办法

之前用别人模版做了个PPT&#xff0c;100多M,文件存在卡顿问题 解决办法&#xff1a; 1.找到ppt中哪个文件过大&#xff0c;针对解决 2.寻找视频/音频文件&#xff0c;减少体积 3.字体文件是不是过多的问题。 一、文件寻找的内容步骤&#xff1a; 步骤&#xff1a; 1.把p…

linux系统内核升级

1.查看旧版本内核 2.导入密钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 3.安装yum源 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm4.启用elrepo-kernel仓库并安装最新内核版本 yum --enablerepoelrepo-kernel install …

据库异常sql耗尽CPU资源

问题描述 核心系统出现数据库卡顿&#xff0c;严重影响前端业务响应&#xff0c;节点一数据库服务器CPU几乎耗尽&#xff0c;多次重启数据库依然没有效果&#xff0c;仔细诊断初步判定业务SQL执行效率不佳所致&#xff0c;特别是SQL_ID为1hwgwzgw0vfrc的SQL&#xff0c;半小时…

5GC 网元AMF、SMF、AUSF、UPF、PCF、UDM、NRF、NSSF、NEF介绍

文章目录 1、AMF2、SMF3、AUSF4、UPF5、PCF6、UDM7、NRF8、NSSF9、NEF10、DN 1、AMF Access and Mobility Management Function&#xff0c;接入和移动性管理功能&#xff0c;执行注册、连接、可达性、移动性管理。 为UE和SMF提供会话管理消息传输通道&#xff0c;为用户接入…

C语言读取 ini 配置文件,修改/添加键值对

C语言读取 ini 配置文件&#xff0c;修改/添加键值对 C语言读取 ini 配置文件&#xff0c;对section中的键值对进行修改/添加&#xff0c;如果section不存在&#xff0c;则在末尾将新的section/key/value 添加进去。 一、了解什么是INI文件&#xff1f; ini 文件是Initializ…

人工智能|深度学习——基于数字图像处理和深度学习的车牌定位

1.研究背景及研究目的和意义 车牌识别Vehicle License Plate Recognition VLPR) 是从一张或一系列数字图片中自动定位车牌区域并提取车牌信息的图像识别技术。车牌识别 以数字图像处理、模式识别、计算机视觉等技术为基础&#xff0c;是现代智能交通系统的重要组成部分&#xf…

ABAQUS中创建主视图命令菜单和工具条

在ABAQUS中操作模型时&#xff0c;经常需要选择边界上的元素&#xff0c;如果使用框选则需要将模型摆正&#xff08;处于一个主视图角度&#xff09;&#xff0c;虽然ABAQUS提供了6个主视图工具按键&#xff0c;但实际使用中还有有一些不便的&#xff1a; ABAQUS提供的视角只是…

复高斯分布的随机变量的模方的分布

文章目录 服从复高斯分布的随机向量的模方的分布问题的源头矩阵服从复高斯分布向量服从复高斯分布杂记需要与上面向量的分布区别开的是&#xff1a;服从复高斯分布的随机变量的和的平方的分布 服从复高斯分布的随机向量的模方的分布 已知 x ∈ C L 1 \mathbf{x} \in \mathbb{…

【CVE-2024-21626】容器逃逸漏洞修复

哈喽大家好&#xff0c;我是咸鱼。 好久不见&#xff0c;最近有一个很火的 CVE——runc 容器逃逸漏洞。年前的时候我们已经在测试环境进行了相关操作打算年后线上进行修复。 因为今天咸鱼才开工&#xff0c;所以文章也就拖到了现在 &#x1f603; 漏洞介绍 简单来讲&#xf…

怿星科技测试实验室(EPT LABS)服务介绍

据中国汽车工业协会数据&#xff0c;2023年我国汽车产销量分别达3016.1万辆和3009.4万辆&#xff0c;年产销量双双创历史新高&#xff0c;汽车行业进入了新时代。新汽车时代下的OEM竞争更激烈&#xff0c;汽车电子架构更复杂&#xff0c;研发周期更短&#xff0c;软件迭代更快&…

汽车线束中的螺栓拧紧有哪些要求——SunTorque智能扭矩系统

在现代汽车的电气系统中&#xff0c;线束是连接各个电器元件的桥梁&#xff0c;承担着传输电能、信号以及实现控制功能的重要任务。而在线束的装配过程中&#xff0c;螺栓的拧紧技术是确保线束固定、连接可靠的关键环节。SunTorque智能扭矩系统和大家一起探讨汽车线束中的螺栓拧…

Java中的关键字

✨✨ 所属专栏&#xff1a; Java基石&#xff1a;深入探索Java核心基础✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; Java中的关键字是一些具有特殊含义的单词&#xff0c;它们在语法中有特定的用途&#xff0c;不能用作标识符&am…

响应式编程上下文

标题响应式编程代码示例 代码示例 多个消费者订阅了同一个生产者 package com.yaeher.infrastructure.userinfovault.user; import org.junit.jupiter.api.Test; import reactor.core.publisher.Flux; import reactor.core.scheduler.Scheduler; import reactor.core.schedul…