Opencv+Python笔记(四)图像的形态学处理

1.腐蚀与膨胀

膨胀用来处理缺陷问题,把缺陷填补掉,提高亮区面积; 腐蚀用来处理毛刺问题,把毛刺腐蚀掉,降低亮区面积。

腐蚀操作可以消除噪点,同时消除部分边界值,导致目标图像整体缩小。
膨胀操作可以使目标特征值增大,导致目标图像整体放大。

腐蚀的规则就是:kernel覆盖img的区域如果有白色,则把核的中心那个点标注为白色,如果该区域没有白色,则不用处理,这里相当于“&&”且运算
膨胀其实非常类似,只不过它关注的是核形状区域有没有黑色B,如果有,就把锚点涂成黑色
在这里插入图片描述
用1代表黑色0代表白色 对A图进行核为 3 * 3 的腐蚀操作后,中间的0会变成1 同理 对B图进行核为3 * 3的膨胀操作后,中间的1会变成0

Opencv API:

cv2.erode(src, kernel, iterations)  # 腐蚀
cv2.dilate(src, kernel, iterations)  # 膨胀

输入:1.src:要进行操作的图像;2.kernel:核结构;3.iterations:要进行腐蚀或者膨胀的次数,默认为1
输出:操作后得到的图像

卷积核核结构构造

kernel = np.ones((5, 5), np.uint8)  #创建一个大小为 5x5 的全为 1 的矩阵,数据类型为 unsigned int 8。它通常被用作图像处理中的卷积核。

2.开运算和闭运算

开运算是先腐蚀后膨胀(有利于把亮刺腐蚀掉);闭运算是先膨胀后腐蚀(有利于把黑洞膨胀掉)图像比较亮的地方是图像的主体部分

开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。开运算一般能平滑图像的轮廓,削弱狭窄部分,去掉较细的突出。
在这里插入图片描述

闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。闭运算也是平滑图像的轮廓,与开运算相反,它一般熔合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。
在这里插入图片描述

开运算用于去毛刺 闭运算用于去孔洞

Opencv API:

cv2.morphologyEx(src, op, kernel)

输入:1.src:要进行运算的图像;2.op:进行的操作类型;3.kernel:使用的卷积核类型
输出:开闭运算后得到的图像

3.礼帽与黑帽(顶帽与底帽)

(1)礼帽:取出亮度高的地方
顶帽运算 = 原图像 - 开运算
开运算可以消除暗背景下的高亮区域,那么如果用原图减去开运算结果就可以得到原图中灰度较亮的区域,所以又称白顶帽变换。
在二值图像中取出亮度较高的部分

(2)黑帽:取出亮度低的地方
底帽运算 = 原图像 - 闭运算
闭运算可以删除亮背景下的暗区域,那么用原图减去闭运算结果就可以得到原图像中灰度较暗的区域,所以又称黑底帽变换。
在二值图像中取出亮度较低的部分

Opencv API:

cv2.morphologyEx(src, op, kernel)

参数同上

在这里插入图片描述

参数功能
cv2.MORPH_OPEN开运算
cv2.MORPH_CLOSE闭运算
cv2.MORPH_TOPHAT礼帽运算
cv2.MORPH_BLACKHAT黑帽运算

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

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

相关文章

C#+asp.net基于web的大学社团管理信息系统

本系统的模块是分为用户模块和管理员模块,管理员负责学生管理模块、社团管理模块、公告管理模块、留言管理模块、加入社团管理模块、活动管理模块、管理员管理模块。社团管理员则负责预约管理模块、活动报名的审核等。。 系统具有三类系统用户分别是:系统…

用于测试FDIA在现实约束下可行性的FDIA建模框架(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 信息通信技术的发展和智能设备的引入使电力系统逐渐演变为电力信息物理系统,而信息层与物理层之间的深度耦合也加剧…

【测试面试】吐血整理,大厂测试开发岗面试题(1~4面),拿下年40w...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试面试题&…

【文件系统和系统日志分析】

目录 一、inode和block概述block(块)inode(索引节点) 二、inode内容三、inode的号码3.1、查看inode号码的方法 四、inode的大小磁盘分区后的结构访问文件的简单流程 五、删除乱码文件六、inode节点耗尽故障处理6.1、模拟inode节点…

SSM整合的基本思路梳理

SSM整合的简单思路流程 基本思路 我在整合的时候一般习惯从MyBatis开始向上构建,也就是在开始一个项目的时候先将DAO层搭建起来,再向上整合Spring以及SpringMVC。按照这个流程,可以做出一个比较简单的大致流程作为参考,帮助我们…

[MySQL]基本数据类型及表的基本操作

一、常用的数据类型 1.1 数据库表的列类型 数值 1 2 3.14 tinyint 十分小的数据 1个字节smallint 较小的数据 2个字节mediumint 中等大小的数据 3个字节int 标准的整数 4个字节big 较大的数据 8个字节float 浮点数 4个字节double 浮点数 小数 8个字节(精度问题&am…

JSON的用法和说明

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。 JSON建构于两种结构: "名称/值"对的集合。理解为对象 值的有序列表。理解为数组 JSON具有以下这些形式: 对象是一个无序的“ ’名称/值‘ 对”集合。一个…

【排序】快速排序(递归和非递归)

快速排序 前言图解大致思路对于hoare版本对于挖坑法对于前后指针法 实现方法递归非递归 快排的优化(基于递归的优化)三数取中法小区间优化 时间复杂度和空间复杂度 前言 快速排序,听名字就比较霸道,效率根名字一样,非…

永久免费内网穿透不限制速度

市面上的免费内网穿透大都有格式各样的限制,什么限制流量啊,每个月要签到打卡啊,还有更改域名地址等,只有神卓互联内网穿透是永久免费没有限制的,白嫖也可以。 这篇文章分享了3个方案,按照性能和综合指标排…

项目驱动的编写

驱动代码直接使用nfs传输,设备树直接在开发板中修改设备树文件 1、修改好设备树,在内核顶层make dtbs ,然后替代tftp目录中的设备树文件 2、使用内核源码编译生成驱动程序,然后传送到开发板中,使用insmod动态加载 LCD驱动 1、初始…

从零学习SDK(7)如何打包SDK

打包SDK的目的是为了方便将SDK提供给其他开发者或用户使用,以及保证SDK的兼容性和安全性。打包SDK可以有以下几个好处: 减少依赖:打包SDK可以将SDK所需的库、资源、文档等打包成一个文件或者一个目录,这样就不需要用户再去安装或…

ArduPilot开源飞控系统之简单介绍

ArduPilot开源飞控系统之简单介绍 1. 源由2. 了解&阅读2.1 ArduPilot历史2.2 关于GPLv32.3 ArduPilot系统组成2.4 ArduPilot代码结构 3. 后续4. 参考资料 ArduPilot是一个可信赖的自动驾驶系统,为人们带来便利。为此,提供了一套全面的工具&#xff0…

读SQL进阶教程笔记12_地址与三值逻辑

1. SQL和数据库都在极力提升数据在表现层的抽象度,以及对用户隐藏物理层的概念 2. 关系模型是为摆脱地址而生的 2.1. “地址”不仅包括指针操作的地址,还包括数组下标等 3. 一个优雅的数据结构胜过一百行杂耍般的代码 3.1. 精巧的数据结构搭配笨拙的…

Spring MVC 的调用(12)

目录 SpringMVC流程 源码分析 第一步:用户发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者…

高效部署Redis Sentinel模式(哨兵模式),手把手教学

Redis Sentinel模式部署 前言一、服务器部署同版本的redis1、换软件源在yum拉取包的时候启用remi源 二、修改配置文件1.修改/etc/redis.conf2.配置/etc/redis/sentinel.conf 三、启动redis服务1、启动服务2、连接redis3、检查redis 前言 这里就不过多的解释高可用的好处了&…

CRM系统是什么?它有什么作用?

CRM系统是什么? CRM是Customer Relationship Management(客户关系管理)的缩写,是一种通过对客户进行跟踪、分析和管理的方法,以增加企业与客户之间的互动和联系,提高企业与客户之间的互信,从而…

基于 VITA57.4 标准的 8 路 500MSPS/1GSPS/1.25GSPS 采样率 14 位 AD 采集 FMC 子卡模块

板卡概述 FMC148 是一款基于 VITA57.4 标准的 JESD204B 接口 FMC 子卡模块,该模块可以实现 8 路 14-bit、500MSPS/1GSPS/1.25GSPS ADC 采集功能。该板卡 ADC 器件采用 ADI 公司的 AD9680 芯片,全 功率-3dB 模拟输入带宽可达 2GHz。该 ADC 与 FPGA 的主机接口通 …

Revit相关问题:符号线,转转问题,生成三维视图

一、Revit符号线如何画粗一些?如何自定义符号线子类别? 1、Revit在族里面符号线的粗细、显示颜色、显示线型为符号线的子类别控制! 你可以通过,管理选项卡新建子类别,然后在画符号线的时候应用该子类别! 新建符号线对象样式 应用子类别 二、Revit三维模…

背包问题——01背包|完全背包

目录 前言&背包问题的历史 01背包 1、题目 2、暴力解01背包 Ⅰ、代码 3、动态规划解01背包 Ⅰ、二维dp数组解01背包 1)dp数组的含义 2)递推公式 3)dp数组的初始化 4)遍历顺序的讨论 5、代码 Ⅱ、一维数组解01背包 1&…

C#调用C++封装的SDK库(dll动态库)——上

C#调用C封装的SDK库(dll动态库)——上 一、C封装库 通过前几篇文章,我们封装了C的动态DLL库,有Qt版的,有C版的,当然还有介绍了Pimpl模式在SDK封装中的使用: Qt创建SDK VS创建SDK Pimple在SDK封装中的应用 但是&a…