常见的图像平滑处理算法的比较(均值滤波、高斯滤波、双边滤波),并解析语法格式

  • 粗略的概念:图像平滑处理==图像模糊处理==图像滤波==图像质量增强;称呼是次要的,主要的是:使用算法处理问题;
  • 均值滤波只考虑空间信息,并且权重全为1;
  • 高斯滤波虽然只考虑空间信息,但是权重比例有所改变;
  • 双边滤波既考虑空间信息,又考虑色彩信息(权重比例根据色彩信息确定)。

目录

(1)均值滤波

(2)高斯滤波

(3)双边滤波

(4)代码实现

(5)语法格式解析(以高斯滤波为例)


(1)均值滤波

概念:均值滤波是指当前像素点周围 N*N 个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点,即可完成整幅图像的均值滤波。

如下图所示:在进行均值滤波时,首先要考虑需要对周围多少个像素点取平均值。通常情况下,我们会以当前像素点为中心,对行数和列数相等的一块区域内的所有像素点的像素值求平均。针对图像中第 5 行第 5 列的像素点,其运算过程相当于与一个内部值都是 1/25 的 5×5 矩阵进行相乘计算,从而得到均值滤波的结果 126。

(2)高斯滤波

概念:在进行均值滤波时,其邻域内每个像素的权重是相等的。在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。

如下图所示:针对最左侧的图像内第 4 行第 3 列位置上像素值为 226 的像素点进行高斯卷积,其运算规则为将该点邻域内的像素点按照不同的权重计算和

不同大小的卷积核,如下图所示:


前述滤波方式基本都只考虑了空间的权重信息,这种情况计算起来比较方便,但是在边缘信息的处理上存在较大的问题。


(3)双边滤波

概念:双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护图像 内的边缘信息

 (a)是原始图像。 (b)是高斯滤波处理结果。(c)是双边滤波处理结果。

如下图所示:
(a)是原始图像,左侧区域是白色(像素值为 255),右侧区域是黑色(像素值为 0)。
(b)是进行均值滤波的可能结果。在进行均值滤波时,仅仅考虑空间信息,此时左右 两侧的像素的处理结果是综合考虑周边元素像素值,并对它们取均值得到的。
(c)是进行双边滤波的可能结果。在进行双边滤波时,不仅考虑空间信息,还考虑色彩差别信息。
注意:色彩差异较大,颜色距离很远权重占比越小(颜色距离不是像素点之间的物理距离, 而是颜色值的距离。像素点的值分别是 0 和 255,差别很大,所以说它们颜色距离很远)。

(4)代码实现

import cv2

src = cv2.imread(r"G:\CSDN\python\lena.jpg")

src_blur = cv2.blur(src, (5, 5))                 # 均值滤波
src_GB = cv2.GaussianBlur(src, (5, 5), 0, 0)     # 高斯滤波
src_BF = cv2.bilateralFilter(src, 25, 100, 100)  # 双边滤波

cv2.imshow("src", src)
cv2.imshow("blur", src_blur)
cv2.imshow("GB", src_GB)
cv2.imshow("BF", src_BF)

cv2.waitKey(0)
cv2.destroyAllWindows()

  >>>运行结果

(5)语法格式解析(以高斯滤波为例)

# 在 OpenCV 中,实现高斯滤波的函数是 cv2.GaussianBlur(),该函数的语法格式是:
# dst = cv2.GaussianBlur( src, ksize, sigmaX, sigmaY, borderType )

# 式中:
# dst 是返回值,表示进行高斯滤波后得到的处理结果。
# src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种。
# ksize 是滤波核的大小。滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。需要注意,滤波核的值必须是奇数。
# borderType 是边界样式,该值决定了以何种方式处理边界。一般情况下,不需要考虑该值,直接采用默认值即可。

# 官方文档建议显式地指定 ksize、sigmaX 和 sigmaY 三个参数的值,以避免将来函数修改后可能造成的语法错误。
# 当然,在实际处理中,可以显式指定 sigmaX 和 sigmaY 为默认值 0。

# 因此,函数 cv2.GaussianBlur()的常用形式为:
# dst = cv2.GaussianBlur( src, ksize, 0, 0 )

  >>>如有疑问,欢迎评论区一起探讨

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flying Bulldog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值