• 【python】均值、中值和高斯滤波详解和示例


    本文对均值、中值和高斯滤波进行详解,以帮助大家理解和使用。


    下面是示例中使用的原图。

    在这里插入图片描述

    均值滤波

    均值滤波是一种简单的平滑滤波器,它通过将每个像素点的值设置为其邻域内像素点的平均值来消除噪声。均值滤波器通常用于去除高斯噪声和均匀噪声。

    import cv2
    import numpy as np
    
    # 读入图像
    img = cv2.imread('Noisy.jpg')
    
    # 定义滤波器大小
    kernel_size = (5, 5)
    
    # 进行均值滤波
    blur = cv2.blur(img, kernel_size)
    
    # 显示原图和滤波后的图像
    cv2.imshow('Original Image', img)
    cv2.imshow('Blur Image', blur)
    cv2.imwrite("meanImage.jpg",blur)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

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

    可以通过改变kernel_size = (5, 5)大小,来改变滤波结果。

    中值滤波

    中值滤波是一种非线性平滑滤波器,它将每个像素点的值设置为其邻域内像素点中值来消除噪声。中值滤波器通常用于去除椒盐噪声和其他孤立的噪声点。

    import cv2
    import numpy as np
    
    # 读入图像
    img = cv2.imread('Noisy.jpg')
    
    # 定义滤波器大小
    #kernel_size = (5, 5)
    
    # 进行中值滤波
    median = cv2.medianBlur(img, 5)
    
    # 显示原图和滤波后的图像
    cv2.imshow('Original Image', img)
    cv2.imshow('Median Image', median)
    cv2.imwrite("zhongImage.jpg",median)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    高斯滤波

    高斯滤波是一种基于高斯函数的平滑滤波器,它通过将每个像素点的值设置为其邻域内像素点的高斯加权平均值来消除噪声。高斯滤波器通常用于去除高斯噪声和其他类型的噪声,同时保留图像的边缘信息。

    import cv2
    import numpy as np
    
    # 读入图像
    img = cv2.imread('Noisy.jpg')
    
    # 定义滤波器大小和标准差
    kernel_size = (9, 9)
    sigmaX = 3  # X方向的标准差,可以根据需要调整
    sigmaY = 3  # Y方向的标准差,可以根据需要调整
    
    # 进行高斯滤波
    gsblur = cv2.GaussianBlur(img, kernel_size, sigmaX, sigmaY)
    # 显示原图和滤波后的图像
    cv2.imshow('Original Image', img)
    cv2.imshow('gsblur Image', gsblur )
    cv2.imwrite("gsblur9*9.jpg",gsblur )
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行结果:
    在这里插入图片描述

    核大小为(9,9)

    改变核大小为9*9,效果为:
    在这里插入图片描述

    核大小为(51,51)

    在这里插入图片描述

    小结

    本文使用的原图噪声级别较高,所以各滤波结果的差距较小,但可以看出,随着核大小的增大,图像变得更平滑,但也变得更模糊。
    在应用时,可以调整核的大小,以满足自己的降噪场景和效果。

  • 相关阅读:
    C语言猜数字
    Linux 之查看标准错误码工具
    CommunityToolkit.Mvvm8.1 viewmodel使用-旧式写法(2)
    JWT 令牌撤销:中心化控制与分布式Kafka处理
    Postgresql 主从复制+主从切换(流复制)
    《少有人走的路:心智成熟的旅程》笔记
    Flink学习13:Flink外接kafka数据源
    2023年全球及中国抗体/蛋白/非核酸疫苗CDMO市场分析:生物药CDMO规模同步增长[图]
    Avalonia 实现简单的IM即时通讯、视频通话(源码,支持国产系统,统信、银河麒麟)
    #DAYU200#Ability入门
  • 原文地址:https://blog.csdn.net/qq_22734027/article/details/134439814