图像运算——平滑处理

图像平滑处理

案例© Fu Xianjun. All Rights Reserved.
图像平滑处理的基本原理是,将噪声所在像素点的像素值处理为其周围临近像素点的值的近似值。取近似值的方式很多,本文介绍:均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波。

读取原图:

import cv2
img = cv2.imread("peppa_salt.jpg")
cv2.imshow('img',img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

均值滤波:
通常情况下,对于锚点anchor和边界样式borderType,直接采用其默认值即可。
dst = cv2.blur(src,ksize)

dst:输出图
src:输入图
ksize:滤波核的大小(这里以(7,7)为例)

blur = cv2.blur(img, (7, 7))

效果图:
在这里插入图片描述

方框滤波:
通常情况下,对于参数anchor、normalize、borderType,直接采用其默认值即可。
dst = cv2.boxFilter(src,ddepth,ksize)

dst:输出图
src:输入图
ddepth:dst的图像深度,一般使用-1表示与原始图像使用相同的图像深度。
ksize:滤波核的大小(这里以(7,7)为例)

box = cv2.boxFilter(img,-1,(7,7))

效果图:
在这里插入图片描述
高斯滤波:
官方文档建议显式地指定ksize、sigmaX、sigmaY三个参数的值,以避免将来函数修改后可能造成的语法错误。当然,在实际处理中,可以显式指定sigmaX和sigmaY为默认值0

dst = cv2.GaussianBlur(src,ksize,0,0)

dst:输出图
src:输入图
ksize:滤波核的大小(这里以(7,7)为例)
sigmaX:卷积核在水平方向上(X轴方向)的标准差,控制的是权重比例
sigmaY:卷积核在垂直方向上(Y轴方向)的标准差。如果将该值设置为0,则只采用sigmaX的值;如果sigmaX和sigmaY都是0,则通过ksize.width和ksize.height计算得到

gaussian = cv2.GaussianBlur(img, (7, 7), 0, 0) 

效果图:
在这里插入图片描述

中值滤波:
dst = cv2.medianBlur(src,ksize)

dst:输出图
src:输入图
ksize:滤波核的大小(必须比1大的奇数,比如3、5、7等)

median = cv2.medianBlur(img, 7)

效果图:
在这里插入图片描述
双边滤波:
dst = cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)

dst:输出图
src:输入图
d:当前像素点为中心点的直径
sigmaColor:滤波处理时选取的颜色差值范围
sigmaSpace:坐标空间中的sigma值
borderType:边界样式

bilater=cv2.bilateralFilter(img,9,75,75)

效果图:
在这里插入图片描述

可以修改其中参数来得到更直观的五个函数之间的差异。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值