python opencv中值滤波_opencv 图像滤波(均值,方框,高斯,中值)

为什么要使用滤波

消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。

如下图,左图带有椒盐噪声,右图为使用中值滤波处理后的图片。

2020070810492747.jpg

图像滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。

python +opencv讲解

均值滤波

含义

如图:如果我们想对红色点进行处理,则它新值等于周围N乘N个像素点的平均(包括自身)

2020070810492748.jpg

用表达式表达:

2020070810492749.jpg

扩展到对整个图像进行均值滤波

2020070810492750.jpg

实现方法:

处理结果=cv2.blur(原始图像,核大小)

核大小:以(宽度,高度)的元祖

效果:使图像变模糊啦。能处理被椒盐攻击过的照片。

import cv2

a=cv2.imread('lenacolor.png')#

b=cv2.blur(a,(8,8))

cv2.imshow('original',a)

cv2.imshow('result',b)

cv2.waitKey(0)

cv2.destroyAllWindows()

2020070810492751.jpg

方框滤波

实现方法:函数boxFilter

处理结果=cv2.boxFilter(原始图像,目标图像深度,核大小,normalize属性)

目标图像深度: int类型的目标图像深度,-1表示与原始图像一致

核大小:(宽度,高度)元祖

normalize:是否对目标图像进行归一化处理

normalize为true 时与均值滤波一样,为false时表示任意一个点的像素为周围像素点的和,容易发生溢出超过255

2020070810492752.jpg

normalize=1,1为true

import cv2

a=cv2.imread('lenacolor.png')#

b=cv2.boxFilter(a,-1,(5,5),normalize=1)

cv2.imshow('original',a)

cv2.imshow('result',b)

cv2.waitKey(0)

cv2.destroyAllWindows()

结果:

2020070810492753.jpg

normalize=0,0为false

结果中只有几个点不是白色

2020070810492854.jpg

减少核大小为(2,2)normalize=0

2020070810492855.jpg

高斯滤波

含义:

中心点权重高,越远越低

2020070810492856.jpg

实现方法:GaussianBlur

处理结果=cv2.GaussianBlur(原始图像src,核函数大小ksize,sigmaX)

核函数大小ksize:(N,N)必须是奇数

sigmaX:控制x方向方差,控制权重,一般取0,它自己去计算方差。y轴方差和x一致

2020070810492857.jpg

import cv2

a=cv2.imread('lenacolor.png')#

b=cv2.GaussianBlur(a,(3,3),0)

cv2.imshow('original',a)

cv2.imshow('result',b)

cv2.waitKey(0)

cv2.destroyAllWindows()

2020070810492858.jpg

中值滤波

使用像素点邻域附近的像素的中值代替该点的像素值。通俗点来说,在这个像素的左边找五个像素点,右边找五个像素点,将这些像素进行排序,排序过后产生一个中值,用中间大小的值,来代替该像素的值。

中值滤波可以有效的去除斑点和椒盐噪声。但是效率低,其运算时间 为均值滤波的五倍以上。

2020070810492859.jpg

实现方法:medianBlur

目标图像=cv2.medianBlur(原始图像,intksize)

intksize:核函数,必须为奇数.

import cv2

a=cv2.imread('lenacolor.png')#

b=cv2.medianBlur(a,5)

cv2.imshow('original',a)

cv2.imshow('result',b)

cv2.waitKey(0)

cv2.destroyAllWindows()

2020070810492860.jpg

到此这篇关于opencv 图像滤波(均值,方框,高斯,中值)的文章就介绍到这了,更多相关opencv 图像滤波内容请搜索python博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持python博客!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值