内容有: 均值滤波 cv2.blur(),方框滤波 cv2.boxFilter(),高斯滤波 cv2.GaussianBlur(),中值滤波 cv2.medianBlur()


滤波可理解为,平均卷积操作。对于图像上存在的噪声点,通过滤波平滑处理操作,可以去除噪声点。在开始前我们先导入需要用的库文件,获取需要用到的图片。

import cv2
# 指定图像所在文件夹位置
filepath = 'C:\\Users\\admin\\.spyder-py3\\test\\opencv\\img'
# 获取文件夹中某张图像
img = cv2.imread(filepath+'\\lina.jpg')
# 显示图像
cv2.imshow('img',img) # (自定义窗口名,图象变量)
cv2.waitKey(0) # 图像不会自动消失
cv2.destoryAllWindows() # 按下任意键图像消失

1. 均值滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;对卷积核内的所有像素值求平均,将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

方法:cv2.blur(img, ksize)

img表示图像变量;ksize表示卷积核大小(n,n),卷积核是值全为1的矩阵

#(1)均值滤波
# 参数:输入的图像数据,卷积核大小,即滑窗的宽和高,一般用奇数
blur = cv2.blur(img,(3,3))
# 显示图像
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destoryAllWindows()

  


2. 方框滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;方框滤波有2种方法(1)将卷积核内所有像素值相加,超过255的像素值变成255(2)对卷积核内的所有像素值求平均将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

如果方框滤波使用第2种方法得到的结果和均值滤波的结果一样。

滤波函数: cv2.boxFilter(img, -1, ksize, normalize)

img代表输入图像;-1代表得到的结果在颜色通道上是一致的,一般不用改;ksize代表卷积核大小;normalize代表是否归一化,如果为True,得到的结果同均值滤波。

#(2)方框滤波
# 卷积核3*3
box = cv2.boxFilter(img,-1,(3,3),normalize=True)
# 显示图像
cv2.imshow('box',box)
cv2.waitKey(0)
cv2.destoryAllWindows()

下图左侧是normalize=False的图像,右侧是normalize=True的图像

  


3. 高斯滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;卷积核内的权重值服从高斯分布,离中心点越近的点权值越大。将卷积核内各值与相应像素值做内积,将乘积相加后求平均,将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

滤波方法: cv2.GaussianBlur(img, ksize, 标准差x, 标准差y)

img代表输入图像;ksize卷积核大小,滑窗宽度高度为奇数;标准差x代表沿x方向的卷积核的标准差;标准差y代表沿y方向的卷积核的标准差,不设置的话则和x轴的标准差一致

# 输入图像,卷积核大小,沿x轴方向的标准差=1,沿y轴标准差不设置的话和沿x轴一样
aussian = cv2.GaussianBlur(img, (5,5), 1)
# 显示图像
cv2.imshow('aussian',aussian)
cv2.waitKey(0)
cv2.destoryAllWindows()

下图左侧为原图,右侧为高斯滤波后的图

  


4. 中值滤波

原理: 卷积核在图像上滑动,将核的锚点放在该特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合;被卷积核框住的像素值从小到大排序,取中间大小的像素值代替滑窗中最中间的值。将所得结果放到与锚点对应的像素上;对图像所有像素重复上述过程。

滤波方法: cv2.medianBlur(img, ksize)

img代表输入的图像,ksize代表滤波模板的尺寸大小,填一个数值,必须是大于1的奇数

#(4)中值滤波
median = cv2.medianBlur(img,5) # 用5*5的卷积核去做滑窗,排序后,取中间那个值
# 显示图像
cv2.imshow('median',median)
cv2.waitKey(0)
cv2.destoryAllWindows()

下图左侧为原图,右侧为滤波后的图像。可以看出,中值滤波对处理椒盐噪声具有很好的效果。

  


最后我们来把这三种滤波(均值、高斯、中值)图像放在一起看一下

#(5)一个窗口显示多个图像
# np.hstack()表示沿着横向堆叠
# np.vstack()表示沿着纵向堆叠
# 参数应该为一个元组
import numpy as np
res = np.hstack((blur,aussian,median))
# 图像显示
cv2.imshow('result',res)
cv2.waitKey(0)
cv2.destoryAllWindows()

【opencv】(3) 图像滤波:均值、方框、中值、高斯相关推荐

  1. Opencv之图像滤波:5.中值滤波(cv2.medianBlur)

    之前介绍的均值滤波.方框滤波.高斯滤波,都是线性滤波方式.由于线性滤波的结果是所有像素值的线性组合,因此含有噪声的像素也会被考虑进去,噪声不会被消除,而是以更柔和的方式存在.这时使用非线性滤波效果可能 ...

  2. opencv方框内图像保存_opencv 图像滤波(均值,方框,高斯,中值)

    为什么要使用滤波 消除图像中的噪声成分叫作图像的平滑化或滤波操作.信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没.因此一个能降低高频成分幅度的滤波 ...

  3. 图像局部均值、中值、方差求取结合opencv

    结合opencv求取图像的局部均值.中值.方差: //src 为待处理图像 //indexrows 为图像遍历的行数 //indexcols 为图像遍历的列数 //meanv 保存均值 //ker 窗 ...

  4. 滤波算法、中值和均值滤波区别

    滤波算法:  这里所讲的算法都是针对图像空间的滤波算法,其中模板,可以理解为图像形态学中的结构元素,是用来选取图像中的那些像素点被用来操作的.空间滤波根据其功能划分为平滑滤波和锐化滤波.平滑滤波:能减 ...

  5. 图像处理:推导五种滤波算法(均值、中值、高斯、双边、引导)

    目录 概论 算法原理 1.均值滤波 2.中值滤波 3.高斯滤波 4.双边滤波 5.引导滤波 手写代码 Opencv代码实现 最后的总结 参考文章 概论 本来打算是分开推导的,但我觉得还是整个合集吧,避 ...

  6. c语言均值滤波步骤,关于中值滤波算法,以及C语言实现

    中值滤波是一种非线性的图像平滑方法,与均值滤波器以及其他线性滤波器相比,它能够很好地滤除脉冲噪声,同时又能够保护目标图像边缘.它是一种邻域运算, 类似于卷积,但计算的不是加权求和,而是把邻域中的像素按 ...

  7. CV:计算机视觉技术之图像基础知识(一)—以python的cv2库来了解计算机视觉图像基础(傅里叶变换-频域-时域/各种滤波器-线性-非线性-均值-中值-高斯-双边)

    CV:计算机视觉技术之图像基础知识(一)-以python的cv2库来了解计算机视觉图像基础(傅里叶变换-频域-时域/各种滤波器-线性-非线性-均值-中值-高斯-双边) 目录 一.图像中的傅里叶变换 1 ...

  8. NR基础篇下——中值滤波、多级中值滤波、多级中值混合滤波、加权中值滤波、中值有理滤波

    上一篇分享了一些均值滤波相关的算法,均值滤波作为一种线性滤波器,在滤除噪声的同时也会导致边缘模糊问题.而且均值滤波对高斯噪声的效果很好,但是对于椒盐噪声的效果就很一般.但是中值滤波作为一种顺序滤波器, ...

  9. 使用Python,OpenCV实现图像和实时视频流中的人脸模糊和马赛克

    使用Python,OpenCV实现图像和实时视频流中的人脸模糊和人脸马赛克 1. 效果图 2. 原理 2.1 什么是人脸模糊,如何将其用于人脸匿名化? 2.2 执行人脸模糊/匿名化的步骤 3. 源码 ...

  10. 【概率论】4-5:均值和中值(The Mean and the Median)

    原文地址1:https://www.face2ai.com/Math-Probability-4-5-The-Mean-and-the-Median转载请标明出处 Abstract: 本文介绍均值和中 ...

最新文章

  1. linux编程 fmemopen函数打开一个内存流 使用FILE指针进行读写访问
  2. Redis:Redis集群模式(Cluster)原理
  3. ACM算法--枚举方法(指数枚举,组合枚举)模板
  4. Visual Studio 20xx试用版升级为正式版(WIN7同样有效)图解、附带序列号
  5. Android开发中的logcat工具使用方法
  6. 【opencv 学习】使用tesseract-ocr机芯数字识别
  7. Exchange 2013 邮箱管理
  8. 《Velocity 模板使用指南》中文版[转]
  9. 揭秘孙小小《PPT演示之道》
  10. windows部署PHP开发的cms系统
  11. 全自动驾驶论文_自动驾驶汽车:我们距离全自动驾驶有多近?
  12. 企业级 布署 vmvare Esxi 5.0.0 从零开始教程 (二) vSphere clinet 安装
  13. 联想服务器装系统鼠标没反应,联想Thinkpad笔记本重装系统后键盘鼠标失灵如何解决...
  14. 酷柚易汛进销存开发进度一览表以及各版本之间区别!
  15. 图表点编辑数据无反应_excel输入数据表格没反应-点击EXCEL插入图表没有反应
  16. ​创业10年的领导口出狂言:80后该退出IT行业!网友怒怼!
  17. 硅谷高管中国行感受:思维太单一,996式加班意义不大
  18. Android实用代码大全
  19. 鸿蒙符和无级符,《少年三国志》乾坤无极评析:乾坤闪避控制废,无极复活两将兴?...
  20. matlab实现牛顿迭代法求解二元函数最优点并绘制动态图像

热门文章

  1. PE文件结构详解(三)
  2. CentOS6.9 ARM虚拟机扩容系统磁盘
  3. 2017-04-09,周日整理
  4. IntelliJ IDEA 的Project structure说明
  5. 物联网兴起 嵌入式系统安全日益受关注
  6. js高级程序设计之跨浏览器事件处理
  7. 合并两个有序数组(重新开始)
  8. 禁止拖放对象文本被选择
  9. android google 下拉刷新 csdn,android SwipeRefreshLayout google官方下拉刷新控件
  10. linux 统计日志数量总,shell统计日志中时间段内匹配的数量的方法