OpenCV-python学习笔记(四)——smoothing and blurring平滑和模糊
文章目录
- smoothing and blurring平滑和模糊
- 1 averaging均值滤波
- 2 gaussian高斯滤波
- 3 median中值滤波
- 4 bilateral双边滤波
smoothing and blurring平滑和模糊
什么是模糊呢,当我们拍照片没对上焦的时候,就是模糊。
实际上,这意味着图片中的每个像素点都和他旁边的像素点的值混在了一起,这种和相邻像素点进行混合的结果,就是模糊。
模糊通常是我们不希望的,但这在我们进行阈值处理,或者边缘检测的时候显得非常重要,通常第一步就是对图片进行平滑或者模糊。
1 averaging均值滤波
blurred = np.hstack([# 第二个值表示k*k的一个核,通常k要求为奇数# 这个k*k的滑动窗口就表示一个卷积核cv2.blur(image, (3,3)),cv2.blur(image, (5,5)),cv2.blur(image, (7,7))])
cv2.imshow("averaged", blurred)
2 gaussian高斯滤波
均值滤波使用的是一个平均值,而高斯滤波使用的是加权平均值,离中心元素越近的地方权重越大,离中心元素越远的地方权重越小。得到的结果比均值滤波更自然。
blurred = np.hstack([# 第二个值表示k*k的一个核,通常k要求为奇数# 第3个数值表示x-axis的偏差cv2.GaussianBlur(image, (3,3), 0),cv2.GaussianBlur(image, (5,5), 0),cv2.GaussianBlur(image, (7,7), 0)])
cv2.imshow("Gaussian", blurred)
3 median中值滤波
本质上是中位数滤波,中值滤波在去除椒盐(想象照片上撒满了胡椒粉和盐颗粒)噪声的时候非常有效,因为他总是用图像中已有的像素值来更新当前像素。
blurred = np.hstack([# 第二个值表示k*k的一个核,通常k要求为奇数cv2.mediaBlur(image, 3),cv2.mediaBlur(image, 5),cv2.mediaBlur(image, 7)])
cv2.imshow("median", blurred)
4 bilateral双边滤波
上面几个模糊方法有个问题,就是会丢失图像中的边缘。
为了解决这个问题,我们使用两个高斯分布,这就是双边滤波。
第一个高斯函数只考虑空间邻域,第二个高斯函数对邻域像素值进行建模,确保只有相似像素值的像素参与模糊计算,即那些与众不同的像素(他们其实是图像边缘和边界)被保留下来。
blurred = np.hstack([# 第2个值,5代表像素邻域空间的直径,# 第3个值,21表示颜色邻域,越大就会有更多的颜色参与计算# 第4个值,21代表空间邻域,越大,那么更远的像素就会参与计算cv2.bilateralFilter(image, 5, 21, 21),cv2.bilateralFilter(image, 7, 31, 31),cv2.bilateralFilter(image, 9, 41, 41)])
cv2.imshow("Bilateral", blurred)
OpenCV-python学习笔记(四)——smoothing and blurring平滑和模糊相关推荐
- python学习笔记四-列表
list列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 列表是最常用的Python数据类型,它可以作为一个 ...
- python学习笔记(四):函数
一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...
- openCV Python学习笔记(二)画几何
此处要花几何图形,我们需要用到如下几个函数: cv2.line 画线函数 cv2.circle 画圆函数 cv2.ellipse 画椭圆 cv2.rectangle 画矩形 1.画线 img=cv2. ...
- python学习笔记(四)、条件、循环及其他语句
1 再谈print和import 1.1 打印多个参数 print 能够同时打印多个表达式,并且能自定义分隔符.如下: print('a','b','c') --> a b c print('a ...
- Python学习笔记四(Python OS模块)
Python os模块提供了一个统一的操作系统接口函数,通过python os模块可以实现对系统本身的命令,文件,目录进行操作,官方参考文档( http://docs.python.org/libra ...
- Python学习笔记(四)—生成随机数
函数randint(a,b)可以产生区间(a,b)中的随机数.但是要加import random: 比如说: import random number1 = random.randint(0,9) n ...
- 【懒懒的Python学习笔记四】
编程的时候常常需要检查一些条件,并据此决定采用什么措施,在Python中,if语句常用来做判断语句. 一.一个简单的示例 下面是一个简短的示例,演示了如何使用if语句进行判断,假如你有一个水果列表,你 ...
- python学习笔记(四)模块
4.1基础 模块实现函数重用,import导入模块. import sys for i in sys.argv:print(i) 运行结果: C:\Users\liyz-b\Desktop\work\ ...
- python学习笔记四——数据类型
1.数字类型: 2.字符串类型: 切片:a[m:n:s] m:起始值 n:结束值(不包括n) s:步长,负数表示从后向前取值 3.序列:列表,元组和字符串都是序列 序列的两个主要特点是索引操作 ...
最新文章
- 计算机考试金麦圈编号教程,计算机二级:数据处理.doc
- Qt DOM读写XML文件
- 【数据结构与算法】之深入解析“字符串相乘”的求解思路与算法示例
- 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则
- dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...
- Pytorch:损失函数
- DSP5509项目之用FFT识别钢琴音调(5)之开始傅里叶变换
- python爬虫免费代理池_Python爬取免费代理搭建代理池
- python气象绘图_Python气象绘图教程特刊(一)
- Linux之操作系统杂谈
- 股灾情形下搞了个满堂红,我也是醉了
- python 颜色大全 颜色对应 matplotlab plot 颜色对应
- 市面常见存储卡的读写速度对比测试
- 恢复手机qq删除的收藏表情
- 赵鑫:强化学习在京东广告序列推荐中的应用
- vue项目中Echarts两个图表之间连接两条线
- 找不到服务器或dsn错误,win7浏览网页提示“找不到服务器或DNS错误”原因及解决方法...
- PDF签名系列(2):PDF的签名值到底存在哪里?
- 计数问题:1~n中x出现了多少次?
- linux开启telnet服务(总结)
热门文章
- MyCat分布式数据库集群架构工作笔记0012---高可用_Mycat双主双从复制原理
- 人工智能TensorFlow工作笔记007---认识张量
- python数据结构剑指offer-替换空格
- java 中文件outputstream的操作注意
- 多线程的那点儿事(之原子锁)
- oracle 序列赋值变量,Oracle变量的定义、赋值及使用
- matlab anova 如何不画图,方差分析的数据处理和作图
- yii mysql 操作数据库_YII2中操作数据库的方式
- CVE-2021-21871: PowerISO 内存越界写漏洞
- 卷积神经网络(CNN)相关的基础知识