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

news2025/1/10 17:52:50

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

文章目录

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


一、什么是腐蚀

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

二、如何实现腐蚀

先上代码:

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次,那我们上面说的 还保留一点的杂点就会被腐蚀掉,但是同样字也会变得更细。实际效果大家可以自行测试。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp不同平台获取文件内容以及base64编码特征

前言 文件图片上传,客户端预览是很正常的需求,获取文件的md5特征码也是很正常的,那么,在uniapp中三种环境,h5, 小程序以及 app环境下,如何实现的? 参考: 如何在uniapp中读取文件Arr…

电动汽车充电负荷时空分布预测(matlab)

目录 1 主要内容 交通网-配电网交互模型 动态交通路网模型 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考《基于动态交通信息的电动汽车充电负荷时空分布预测》和《基于动态交通信息的电动汽车充电需求预测模型及其对配网的影响分析》文献模型,考虑…

Py之ydata-profilin:ydata-profiling的简介、安装、使用方法之详细攻略

Py之ydata-profilin:ydata-profiling的简介、安装、使用方法之详细攻略 目录 ydata-profiling的简介 1、主要特点 2、案例应用 (1)、比较数据集、对时序数据集进行分析、对大型数据集进行分析、处理敏感数据、数据集元数据和数据字典、自定义报告的外观、不同类型…

yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一)--环境配置CPU版本

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接:https://github.com/zzhmx/yolov5-tracking-xxxsort.git 如果需要配置GPU版本环境可以查看我的这篇博客:yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一&am…

动态表格 点击单元格查看完整内容

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>分享收藏</title><script src"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><style…

Java零基础 - 逻辑运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

[word] word带圈数字20以上 #笔记#笔记

word带圈数字20以上 办公中有时候需要用到带圈数字&#xff0c;超过20的数字就不能直接编辑了&#xff0c;那么20以上带圈数字要怎么输入呢&#xff1f;其实通过小技巧就能完成的&#xff0c;接下来就给大家介绍下呢&#xff0c;一起看看吧&#xff01; 20以上带圈数字输入技巧…

LaunchPad 市场的复苏,Penpad 成新兴生力军

以 Fair Launch 为主要启动方式的铭文市场的爆发&#xff0c;推动了 LaunchPad 市场的复苏&#xff0c;绝多数所铭文项目都能通过 Fairr Launch 的方式筹集资金实现启动&#xff0c;该赛道的爆发不仅推动了数百亿美元的热钱开始在链上不断涌动&#xff0c;同时也进一步形成了新…

String为什么是不可变的?

一、String字符串类型的数据结构 首先&#xff0c;String类是由 final 关键字修饰&#xff0c;这说明String 不可被继承。其次&#xff0c;由源代码可以看出String的成员字段value是一个char[ ]数组&#xff0c;在后面所有的String方法里都不提供修改Array数组的方法&#xff0…

torch.manual_seed(233333)

torch.manual_seed&#xff08;233333&#xff09; 介绍报错信息解决问题总结 介绍 这是在使用GPT-SoVITS时运行缺失pytorch导致报的错 报错信息 Traceback (most recent call last): File “D:\vits\GPT-SoVITS-beta\GPT-SoVITS-beta0217\webui.py”, line 10, in torch.m…

文件上传漏洞--Upload-labs--Pass17--条件竞争

一、条件竞争原理&#xff08;结合代码审计&#xff09; 1、首先进行代码审计&#xff0c;查看源代码。 我们可知&#xff0c;将文件上传至服务器后&#xff0c;不会被立即删除&#xff0c;而是做短暂的停留&#xff0c;中间会有一小部分时间差&#xff0c;这部分时间差是代码…

STM32使用软件SPI协议操作TFT18彩屏

时间记录&#xff1a;2024/2/20 一、SPI协议介绍 &#xff08;1&#xff09;SPI设备通过4根线进行通信&#xff0c;CS片选线&#xff0c;选择从设备&#xff0c;SCK时钟线&#xff0c;由主设备产生时钟&#xff0c;主机MOSI线连从机MISO线&#xff0c;由主机向从机发送信息&am…

HighTec编译器系列之01新建工程

HighTec编译器系列之01新建工程 继上篇《Hightec编译器系列之白嫖就是爽》小T告诉大家如何白嫖HighTec编译器长达一年之久之后&#xff0c;今天小T告诉大家如何进行HighTec编译器IDE的基础操作-即新建HighTec工程。 以下是本期内容的行文大纲&#xff1a; S1&#xff1a;创建…

Cesium for Unreal 从源码编译到应用——插件编译

一、安装环境 Unreal Engine 5.3 CMake 3.17.5 Microsoft Visual Studio 2019 二、源码准备 下载cesium-unreal-samples工程。 git clone https://github.com/CesiumGS/cesium-unreal-samples.git 然后在工程目录创建Plugins文件夹&#xff0c;并下载cesium-unreal工程。 …

java常用应用程序编程接口(API)——Objects类和包装类

前言&#xff1a; Object类和Objects类是完全不同的两个类&#xff0c;之前有说过Object类&#xff0c;这次说一下Objects类。打好基础&#xff0c;daydayup! Object类可以看这篇&#xff1a;java常用应用程序编程接口&#xff08;API&#xff09;——Object类概述及常用方法 O…

IIC通信驱动硬件编程 (1)

1、IIC协议基础 I2C( IIC )属于两线式串行总线&#xff0c;由飞利浦公司开发用于微控制器(MCU)和外围设备(从设备)进行通信的一种总线&#xff0c;属于一主多从即一个主设备(Master)&#xff0c;多个从设备(Slave))的总线结构&#xff0c;总线上的每个设备都有一个特定的设备地…

MR(混合现实)系统的开发流程

MR&#xff08;混合现实&#xff09;系统是一种将虚拟信息与真实世界环境相结合的技术&#xff0c;通过头戴式显示器、智能手机等设备将虚拟对象叠加在用户的真实感知中。它可以让用户与虚拟对象进行互动&#xff0c;并在真实环境中观察虚拟对象的行为。MR&#xff08;混合现实…

this的指向问题总结

this一般会出现在函数里面&#xff0c;但是一般情况下只有在函数被调用执行时&#xff0c;才能确定this指向哪个对象。一般情况下this是指调用函数的对象。 1.在全局作用域下或者普通函数中this的指向一般都是window对象 window.fn&#xff08;&#xff09;&#xff0c;普通函…

​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】

欢迎来CILMY23的博客喔&#xff0c;本期系列为​【C语言】长篇详解&#xff0c;字符系列篇3-----strstr&#xff0c;strtok&#xff0c;strerror字符串函数的使用【图文详解​】&#xff0c;图文讲解各种字符串函数&#xff0c;带大家更深刻理解C语言中各种字符串函数的应用&am…

35年的卓越成就:威步在网络安全和软件授权领域持续领先

1989-2023&#xff1a;威步成立35年里程碑。这35年中&#xff0c;公司始终致力于业务连续性、技术进步和团队凝聚力。 ​全球信任与在地优势&#xff1a;威步凭借其全球渠道合作伙伴网络&#xff0c;确保国际客户像信赖本地优质企业一样信赖他们。 传统与创新&#xff1a;威步…