OpenCV——《图像平滑》结果输出对比《形态学操作》

news2024/12/27 12:29:02

1.图像平滑

图像平滑是一项简单且使用频率很高的图像处理方法,可以用来压制、弱化或消除图像中的细节、突变、边缘和噪声,最常见的是用来减少图像上的噪声。
常用的滤波器主要为:
均值滤波器:并不能完全消除噪声,只能相对消除噪声。
中值滤波器:主要用于椒盐噪声,效果会好点。
高斯滤波器:进行平滑的同时,保持更好的分布。


img = cv2.imread('lenaNoise.png')#这个是一个有噪声的图片
# cv_show('img',img)
#均值滤波
#简单的平均卷积操作
blur = cv2.blur(img,(3,3))
# 方框滤波
# 基本和均值一样,可以选择归一化
box = cv2.boxFilter(img,-1,(3,3), normalize=True)
# 方框滤波
# 基本和均值一样,可以选择归一化,容易越界
box = cv2.boxFilter(img,-1,(3,3), normalize=False)
# 高斯滤波
# 高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的
aussian = cv2.GaussianBlur(img, (5, 5), 1)#X方向方差主要控制权重。
# 中值滤波
# 相当于用中值代替
median = cv2.medianBlur(img, 5)  # 中值滤波
# 展示所有的
res = np.hstack((img,blur,aussian,median))
cv_show('res',res)

该结果从左到到右分别为原图、均值、方框、高斯滤波的三种比较方式。
请添加图片描述

2.形态学操作

腐蚀和膨胀都是对图片中白色的部分操作,腐蚀会使得白色部分变小,膨胀

2.1腐蚀操作

img = cv2.imread('./dige.png')
cv_show('img',img)
kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(img,kernel,iterations=1)
res = np.hstack((img,erosion))
cv_show('res',res)
# cv_show('pie',pie)
kernel = np.ones((30,30),np.uint8)
erosion1 = cv2.erode(img,kernel,iterations=1)
erosion2 = cv2.erode(img,kernel,iterations=2)
erosion3 = cv2.erode(img,kernel,iterations=3)
res = np.hstack((erosion1,erosion2,erosion3))
cv_show('res',res)
img = cv2.imread('./dige.png')
cv_show('img',img)
kernel = np.ones((3,3),np.uint8)
dige_erosion = cv2.dilate(img,kernel,iterations = 1)
res = np.hstack((img,dige_erosion))
cv_show('res',res)

请添加图片描述

2.2 膨胀效果

增加白色区域的效果

pie= cv2.imread('./pie.png')
cv_show('pie',pie)
kernel = np.ones((30,30),np.uint8)
dilate_1 = cv2.dilate(pie,kernel,iterations = 1)
dilate_2 = cv2.dilate(pie,kernel,iterations = 2)
dilate_3 = cv2.dilate(pie,kernel,iterations = 3)
res = np.hstack((dilate_1,dilate_2,dilate_3))
cv_show('res',res)

图中分别是迭代1次、2次、3次的效果。
请添加图片描述

2.3开运算和闭运算

开运算主要过程:先经历腐蚀后经过膨胀,消除黑色中白色的点。
闭运算主要过程:先经历膨胀后经过腐蚀,消除白色中黑色的点。

# 开:先腐蚀,再膨胀
img = cv2.imread('dige.png')

kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
res = np.hstack((img,opening,closing))
cv_show('res',res)

左边是原图。
中间为开运算,消除黑色中白色的点。所以旁边的chichi消失了。
右边为闭运算,消除白色中黑色的点。因为没有所以基本没有变化。
请添加图片描述

2.4梯度运算

一张图片分别做膨胀与腐蚀操作,最后用膨胀后的图片减去腐蚀的图片,得到的新图片便是该图片的梯度运算。

即:梯度运算 (img) = 膨胀 (img) - 腐蚀 (img)

通过梯度运算可以得到前景物体的轮廓。

pie = cv2.imread('./pie.png')
kernel = np.ones((7,7),np.uint8)
dilate = cv2.dilate(pie,kernel,iterations=5)
erode = cv2.dilate(pie,kernel,iterations=5)
res = np.hstack((pie,dilate,erode))
cv_show('res',res )
#梯度计算
gradient = cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)
cv_show('gradient',gradient)

可以得出腐蚀和膨胀后的两者效果并不大
请添加图片描述
改图为梯度计算的错的前景物体轮廓。
请添加图片描述

2.5礼帽和黑帽

礼帽运算用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。

img = cv2.imread('./dige.png')
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
blackhat  = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
res = np.hstack((tophat,blackhat))
cv_show('res',res)

左边为礼帽,右边为黑帽。tophat和blackhat的区别。
请添加图片描述

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

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

相关文章

【服务器】搭建hMailServer 服务实现远程发送邮件

typora-copy-images-to: upload hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网映射工具即可实现远程发送邮件,不需要使用公网服务器,不需要域名,而且邮件账号名称可以自定义. 下面以windows 10系统为环境,介绍使用方法: 1. 安装hMailServe…

小鹏G9高压平台800V电驱动实拍

近日,小鹏汽车董事长何小鹏在其个人社交账号上透露,小鹏G9正按原定计划按部就班推进节奏,将于8月启动预订,9月正式迎来上市,上市后很快就会启动用户交付。 图片来源:何小鹏官方微博 需要样件请联&#xff1…

Oracle DMP文件导入

dmp文件可以在Navicat中的 把dmp放入其中。然后用数据泵导入。遗憾的是报错 [ERR] ORA-39001: invalid argument value [ERR] ORA-39000: bad dump file specification [ERR] ORA-39143: dump file "/xxx.DMP" may be an original export dump file 改为imp工具&…

干货分享 | TSMaster标定模块自动化控制应用指南

本文目录: 一、TSMaster标定模块自动化控制的基础原理 1.1 TSMaster的标定系统变量 1.2 内部TSMaster调用C脚本实现标定模块的自动化控制 1.3 外部调用COM组件实现自动化标定 二、标定自动化控制场景与TSMaster实例 2.1 C脚本实现控制标定模块的启动与关闭的设…

Goby 漏洞发布|网神SecGate 3600防火墙 sys_export_conf_local_save 文件读取漏洞

漏洞名称:网神SecGate 3600防火墙 sys_export_conf_local_save 文件读取漏洞 English Name:Weaver OA PluginViewServlet Authentication Bypass Vulnerability CVSS core: 8.0 影响资产数:738 漏洞描述: 网神SecGate 3600防…

同一 tomcat 不同项目 session 共享实现

说明 这里仅讨论 同一个tomcat,部署了两个工程(两个war包)。不涉及不同tomcat,不涉及集群 背景 tomcat中的工程A包含用户登录、退出、权限控制等功能;工程B包含业务功能接口。工程A将用户登录信息加密响应给前端,前…

基于Java校园快递代取系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

NLP(五十五)LangChain入门

LangChain简介 背景 由于ChatGPT的发行,大模型(Large Language Model, LLM)已经变得非常流行了。也许你可能没有足够的资金和计算资源从头开始训练大模型,但你仍然可以使用大模型来做一些比较酷的事情,比如&#xff1…

大数据开发薪资怎么样

想必想入行的小伙伴在正式开始学习之前,都会考虑薪资这个可观因素。有不少小伙伴是看中了大数据的薪资选择加入这个行业的,想知道以后能找什么工作以及工作薪水,那不妨让我们以数据的方式来展示一下~ 猎聘大数据研究院发布了《2022未来人才就…

制造执行系统(MES)的核心功能是什么?

制造执行系统(MES)的核心功能是什么? 01 什么是MES 制造执行系统(MES)是一种用于监控、控制和优化制造过程的软件系统。它通过与企业资源计划(ERP)系统和自动化系统的集成,实现对生产过程的管…

小红书品牌营销策略分析!品牌方必看

小红书在品牌营销方面的策略非常成功,特别是在口碑营销、内容营销和小红书素人达人种草营销方面的运用。以下是伯乐网络传媒对这些策略的详细分析,想要做小红书营销推广的商家必看! 一、口碑营销 对于小红书APP来说,口碑营销的传播主体就是小…

Android build.gradle文件

一、ABI(Application Binary Interface)应用程序二进制接口 其实ABI可以不设置,这样编译时,就会将项目里所有依赖资源包里的so库都打到最终的apk里。 但是,ABI支持多的话,apk也会大,所以一般只支…

MySQL数据库——存储引擎

MySQL数据库——存储引擎 一、MySQL存储引擎1.存储引擎的概念2.常用存储引擎3.存储引擎的分类4.企业选择存储引擎依据 二、MyISAM 存储引擎1 MyISAM的相关了解2 MyISAM的特点3 MyISAM表支持3种不同的存储格式4.MyISAM适用的生产场景 三、InnoDB 存储引擎1 InnoDB的相关了解2 In…

探索NDK和逆向工程在Android开发中的力量

NDK是什么? NDK(Native Development Kit)是一组工具集,用于在Android平台上开发和构建使用C或其他本地语言编写的应用程序。NDK提供了一些库和工具,使开发人员能够在应用中使用本地代码,并实现与Java代码的…

ant+svn项目打包部署错误记录

安装ant可以参考下这个 http://t.csdn.cn/kx1ZX 第一个错误,原因是缺少ant-contrib.jar导致,将对应jar包放入ant的lib下即可 [taskdef] Could not load definitions from resource net/sf/antcontrib/antcontrib.properties. It could not be found. B…

低/无代码平台:公民开发和公民自动化,让人人成为软件开发者

在企业数字化转型领域,公民自动化是一个备受关注的概念。虽然这个词汇可能有些“陌生又熟悉”,但在公民开发运动中已经引起了不小的轰动。那么,什么是公民自动化?它与公民开发之间又有哪些不同? 公民开发是什么&#x…

ATTCK 红日靶场(三)-简记

Step 1-》信息收集 端口 nmap -p -A -sV 192.168.1.110 目录 dirsearch -u 192.168.1.110 --exelude-status 400,401,403,404,501,503 访问 ip/1.php -->根目录、禁用函数 ip/robots.txt !!!------- IP/administrator-->>joomla-cms IP/configuration.php~--&…

利用uniapp创建移动端项目

目录 申请微信开发者账号 一、特殊声明 二、申请微信开发者账号 创建小程序项目 一、引言 二、创建小程序工程 三、uni-app框架简介 初识uniapp项目 一、uni-app工程目录结构 二、创建练习页面 创建登录页面 一、拷贝所有素材文件 二、创建登陆页面 创建注册页面 …

【机器学习与遥感】sklearn与rasterio实现遥感影像监督分类

在学习遥感的过程中,我们都了解到了监督分类与非监督分类,二者是遥感解译的基础。之前更多的是使用Erdas与ENVI来进行这两种分类。这里使用python语言,基于机器学习库sklearn与遥感影像处理库rasterio,使用kmeans动态聚类方法实现…

实施计划:项目成功执行的关键

为了增加成功的机会,特别是当涉及到大型或复杂的项目时,团队可能需要关于项目执行过程的额外指导。实施计划可以用于这一目的。 简而言之,项目实施计划是一份文件,作为项目如何执行的路线图。它规定了项目完成过程中的步骤&#…