opencv——图像阈值设定及常见的滤波操作

news2024/9/20 1:08:14

1、图像阈值

ret,dst=cv2.threshold(src,thresh,maxval,type)

src:输入图,只能是单通道图,也就是灰度图。

thresh:阈值。

maxval:当像素超过了阈值,所赋予的值。

type:二值化操作的类型,包括binary,binary_iny,trunc,tozero,tozero_iny。

binary——超过阈值部分取maxval,否则取0

binary_iny——和binary相反

trunc——大于阈值部分设为阈值,否则不变

tozero——大于阈值部分不改变,否则为0

tozero_iny——与tozero相反

ret,thresh1=cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY)
ret,thresh2=cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INY)
ret,thresh3=cv2.threshold(img_gray,127,255,cv2.THRESH_TRUNC)
ret,thresh4=cv2.threshold(img_gray,127,255,cv2.THRESH_TOZERO)
ret,thresh5=cv2.threshold(img_gray,127,255,cv2.THRESH_TOZERO_INY)
titles=["Original Image","BINARY","BINARY_INY","TRUNC","TOZERO","TOZERO_INY"]
images=[image,thresh1,thresh2,thresh3,thresh4,thresh5]
for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i],"gray")
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

2、图像平滑处理

步骤1:输入图像

img=cv2.imread("lenaNoise.png")
cv2.imshow("img",img)
cv2.waitkey(0)
cv2.destroyALLWindows()

步骤2:均值滤波

图像滤波后大小:result=[(src+2*P-K)/S]+1

其中src:表示源图像尺寸;

P:指有无填充,一般为全零填充,P=K-1

K:表示滤波尺寸

S:滤波步长

result:滤波后的图像尺寸

blur=cv2.blur(img,(3,3))
cv2.imshow("blur",blur)
cv2.waitkey(0)
cv2.destroyALLWindows()

步骤3:方框滤波

当有归一化时,就需要进行归一化,保证其不会超过255,即求均值,和均值滤波相同

无归一化时,则就将滤波器数值相加,超过255的则取255

box=cv2.boxFilter(img,-1,(3,3),normalize=True)#-1表示滤波后的颜色通道和源图像颜色通道保持一致,第三个参数表示是否需要进行归一化处理,保证滤波后不会越界
cv2.imshow("blur",blur)
cv2.waitkey(0)
cv2.destroyALLWindows()

3、高斯滤波

步骤1:高斯操作

0.4

0.8

0.4

0.8

1

0.8

0.4

0.8

0.4

如上述滤波模板所示,中间值为标准值,距离中间值越近的权重越大,模板中数值代表权值。

步骤2:高斯滤波

gausssian=cv2.GaussianBlur(img,(5,5),1)
cv2.imshow("gaussian",gaussian)
cv2.waitkey(0)
cv2.destroyALLWindows()

步骤3:中值滤波

将滤波器模板的数值从小到大进行排列,取中间的值

median=cv2.medianBlur(img,5)
cv2.imshow("median",median)
cv2.waitkey(0)
cv2.destroyALLWindows()

在去除椒盐噪音点时,利用中值滤波的效果比上述滤波更好。

综合对比中值滤波和其他均值滤波的效果:

res=np.hstack(blur,gaussian,median))
print(res)
cv.imshow("median vs average",res)
cv2.waitkey(0)
cv2.destroyALLWindows()

上图中从左到右依次是均值滤波、高斯滤波、中值滤波的效果,可以看出中值滤波的噪音明显少于均值滤波和高斯滤波。

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

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

相关文章

Python编程 闭包

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:b网络豆的主页​​​​​​ 目录 前言 一.闭包 1.什么是闭包 前景引入: 2.闭包的定义需要满足以下…

Redis序列化、乱码问题

Redis序列化问题 每当初学者学习Redis,并且使用SpringBoot整合Redis的时候,总会看到别人使用这种东西—配置类,然后自己又看不懂,oh,fuck!! 这是为什么,为什么要有这个配置类&…

Pytorch优化器全总结(四)常用优化器性能对比 含代码

目录 写在前面 一、优化器介绍 1.SGDMomentum 2.Adagrad 3.Adadelta 4.RMSprop 5.Adam 6.Adamax 7.AdaW 8.L-BFGS 二、优化器对比 优化器系列文章列表 Pytorch优化器全总结(一)SGD、ASGD、Rprop、Adagrad Pytorch优化器全总结(二…

设计模式学习(七):Factory Method工厂模式

目录 一、什么是Factory Method模式 二、Factory Method示例代码 2.1 类之间的关系 2.2 Product类 2.3 Factory类 2.4 IDCard类 2.5 IDCardFactory类 2.6 用于测试的Main类 2.7 运行结果 三、拓展思路的要点 3.1 框架与具体加工 3.2 使用模式与开发人员之间的沟通 …

(12)go-micro微服务JWT跨域认证

文章目录一 JWT介绍二 JWT优缺点三 JWT使用1. 导包和数据定义2.生成JWT3.解析JWT4.完整代码四 最后一 JWT介绍 JWT 英文名是 Json Web Token ,是一种用于通信双方之间传递安全信息的简洁的、URL安全的表述性声明规范,经常用在跨域身份验证。 JWT 以 JS…

拐点检测常用算法总结

目录概览问题定义符号定义研究方法损失函数概览 问题定义 拐点检测名为 change point detection,对于一条不平缓的时间序列曲线,认为存在一些时间点 (t1,t2,...,tk)( t_1 , t_2 , . . . , t_k )(t1​,t2​,...,tk​) ,使得曲线在这些点对应…

Java SPI的介绍、JDBC中SPI的应用、自己实现一个SPI应用

目录1. Java SPI介绍2. Java SPI的运行流程3. Java SPI在JDBC中的应用4. Java SPI的三大规范要素5. 自己实现一个SPI应用5.1 Service接口5.2 运营商1的Service Provider5.3 运营商2的Service Provider5.3 手机使用网络1. Java SPI介绍 SPI(Service Provider Interface)是一种基…

在别墅大宅中打造全屋智能,总共需要几步?

关于智能家居,很多读者可能会想起一些不那么愉快的回忆:2014年左右的智能家居浪潮,涌现出了众多带蓝牙互联功能的家电产品,但数据无法互联互通、单品体验升级有限,加上一些企业竞争失败产品不再更新,留给消…

EXCEL工具介绍

目录1. 锁定功能2. 固定1. 锁定功能 锁定:F4 公式引用单元格,有“相对引用”与“绝对引用” 美元符号“ $ ”在excel公式中的作用是在“绝对引用”时,锁定行号或列标(单元格地址由列标行号组成,如A1,A为列…

国产软件不惧微软,WPS力扛大旗,新型办公软件争相助力

金山作为程序员的“黄埔军校”,输入了一批批互联网大佬,小米的雷军、哔哩哔哩的陈睿、蓝港互动的王峰等都师出金山。WPS作为金山拳头作品,有着“国民软件”美誉,功能强大,使用体验一点不输微软word,然而有一…

打工人必学的法律知识(三)——《中华人民共和国劳动争议调解仲裁法》

PS : 对与日常工作比较紧密的部分做摘录 中华人民共和国劳动争议调解仲裁法http://www.npc.gov.cn/npc/c198/200712/756d4eceb95e420a87c97545a58d931c.shtml 目录 一、调解 二、仲裁 三、申请和受理 四、开庭和裁决 五、附则 第六条 发生劳动争议&#xff0…

python镜像设置

winr 输入 %USERPROFILE% 新建pip目录,目录内新建pip.ini 输入: [global] index-urlhttp://mirrors.aliyun.com/pypi/simple/ trusted-hostmirrors.aliyun.com

计算机网络概括

1 前言计算机网络是指将位于不同地理位置,但具有独立功能的多台设备,通过通信设备和线路连接起来,在网络操作系统,网络管理软件、网络通信协议的协调管理下,实现资源共享和信息传递的计算机系统。简单来说,…

STM32模拟SPI总线读写RFID模块RC522

STM32模拟SPI总线读写RFID模块RC522 RC522是一款NXP 公司的支持ISO14443A协议的高频(13.56MHz)RFID射频芯片。RFID有ID和IC两种卡应用类型,RC522属于IC卡的应用类型。NFC则属于增强的IC卡类型,支持双向通信和更多类型的协议。 I…

es官网翻译之Exploring Your Cluster

Exploring Your Cluster 探索你的集群 The rest api rest 风格的 api Now that we have our node (and cluster) up and running, the next step is to understand how to 现在 我们已经将我们自己的节点(和集群) 启动并运行着, 下一个步骤是知道如何 communicate with it…

Java面试题每日10问(12)

1. What is String Pool? String pool is the space reserved in the heap memory that can be used to store the strings.The main advantage of using the String pool is whenever we create a string literal; the JVM checks the “string constant pool” first.If th…

速度为单GPU1.6倍,kaggle双GPU(ddp模式)加速pytorch攻略

accelerate 是huggingface开源的一个方便将pytorch模型迁移到 GPU/multi-GPUs/TPU/fp16 模式下训练的小巧工具。和标准的 pytorch 方法相比,使用accelerate 进行多GPU DDP模式/TPU/fp16 训练你的模型变得非常简单(只需要在标准的pytorch训练代码中改动不几行代码就可…

linux基功系列之man帮助命令实战

文章目录前言一、man命令介绍二、常用参数2.1 语法2.2 常用参数2.3 man页面的操作命令man命令使用案例1. 直接查看手册2. -aw 参数找到可以被查询的章节2.3 一次性查阅所有章节2.4 搜索手册页2.5 -L 设置查询语言总结前言 linux系统中的命令数量有上千的,即使是常用…

前端——周总结系列二

1 JS数组排序sort()方法 不传参数排序,默认根据Unicode排序 附录 传参数,使用比较函数,自己定义比较规则 简单数组排序 // 升序 function ascSort(a, b) {return a - b; } // 降序 function ascSort(a, b) {return b - a; }数组对象排序…

算法leetcode|31. 下一个排列(rust重拳出击)

文章目录31. 下一个排列:样例 1:样例 2:样例 3:提示:分析:题解:rustgoccpythonjava31. 下一个排列: 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0…