图像去噪 + 低通滤波 opencv

低通滤波:均值滤波、中值滤波、高斯滤波、双边滤波
高通滤波:sobel,scharr,Laplacian 

一、低通滤波

       任何图像都是由不同尺度的空间信息组成的,假设我们处理一幅图像(fig.1 左),每个输出像元的数值由输入像元周围小邻域内的平均得到。处理后的结果是原始图像的一个模糊版本(fig.1 中),我们将这个结果与原始图像相减,就得到了(fig.1右),它表示原始像元与其周围领域平均值的差值。这样我们称模糊的图像是原始图像的低通滤波(Low Pass,LP),而把它和原始图像的差称为高通滤波(High Pass,HP),数学公式如下:
                                                         image(x,y) = LP(x,y) + HP(x,y)

import cv2
image = cv2.imread(path,-1)
LP = cv2.medianBlur(image,21)  #低通滤波
HP = image - medianblur   #高通滤波
cv2.imwrite(path_LP,LP)    #保存低通滤波
cv2.imwrite(path_HP,HP)  #保存高通滤波

              

                                                                fig.1( 左    中    右)

1.1 均值滤波

属于线性滤波,用邻域内取均值的方式替换原图像中的像素值,常可以去除图像上的尖锐噪声,平滑图像。

 

blur = cv2.blur(image,(2,2))  
im_color = cv2.applyColorMap(blur, cv2.COLORMAP_JET)

 均值滤波能去除部分椒盐噪声、如若将滤波器窗口增大,会导致边缘信息变得模糊。

1.2 中值滤波

 非线性滤波,用邻域内取中值的方式替换原图像中的像素值,

  

medianblur = cv2.medianBlur(image,3)  
im_color = cv2.applyColorMap(medianblur, cv2.COLORMAP_JET)

相对来说,对孤立的噪声点有较好的去除效果,图像边缘同样变得有所模糊.

1.3 高斯滤波

线性滤波,对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。对抑制服从正太分布的噪声非常有效。

 

gsblur = cv2.GaussianBlur(image,(3,3),0)
im_color = cv2.applyColorMap(gsblur, cv2.COLORMAP_JET)

 模糊程度小于均值滤波。

1.4 双边滤波

 非线性滤波,结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性。简单来说,结合了高斯滤波和α-截尾均值滤波的特点,一是去除了噪声的,二是很好的保留了边缘特征。 详细信息参考bilateral filter双边滤波器的通俗理解_pan_jinquan的博客-CSDN博客_bilateral filter

bilfilter = cv2.bilateralFilter(image,5,100,100)
im_color = cv2.applyColorMap(bilfilter, cv2.COLORMAP_JET)

以上几种方法来看,双边滤波效果最好(滤波器size选择为5,其他滤波器size选择较小,一般来说size越大,边缘信息丢失越多),在去除噪声时,边缘信息也得到了较好的保留,但随着滤波器尺寸选择的变大,会有淡淡的条纹印记。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值