当前位置: 首页 > news >正文

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

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

这里写目录标题

  • 均值滤波
  • 中值滤波
  • 高斯滤波
    • 核大小为(9,9)
    • 核大小为(51,51)
  • 小结

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

在这里插入图片描述

均值滤波

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

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()

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

可以通过改变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()

在这里插入图片描述

高斯滤波

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

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()

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

核大小为(9,9)

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

核大小为(51,51)

在这里插入图片描述

小结

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

http://www.lryc.cn/news/232518.html

相关文章:

  • 基于STM32的循迹小车项目实战
  • Element UI 偶发性图标乱码问题
  • UniApp中的数据存储与获取指南
  • VUE基础的一些实战总结
  • 【算法】算法题-20231117
  • 轮播图(多个一起轮播)
  • OpenCV中的像素重映射原理及实战分析
  • 如何快速搭建Spring Boot接口调试环境并实现公网访问
  • 简单的用Python实现一下,采集某牙视频,多个视频翻页下载
  • 【手撕数据结构】二分查找(好多细节)
  • Python+Selenium WebUI自动化框架 -- 基础操作封装
  • PyCharm 【unsupported Python 3.1】
  • flutter TabBar指示器
  • PDF/X、PDF/A、PDF/E:有什么区别,为什么有这么多格式?
  • Microsoft发布了一份关于其产品安全修复的 11 月报告。
  • 12v24v60v高校同步降压转换芯片推荐
  • pip 问题
  • 云计算(一):弹性计算概述
  • Qt/C++ 获取QProcess启动的第三方软件的窗体标题
  • Borland编辑器DOS系统快捷键应用
  • KeyarchOS的CentOS迁移实践:使用操作系统迁移工具X2Keyarch V2.0
  • Golang抓包:实现网络数据包捕获与分析
  • 分类预测 | Matlab实现QPSO-SVM、PSO-SVM、SVM多特征分类预测对比
  • kubernetes部署jenkins
  • Node.js详解
  • v-html命令渲染的内容,使用scoped属性的情况下,样式不起作用
  • 浅谈vue2.0和vue3.0的区别
  • git clone报错SSL connect error
  • LeetCode(26)判断子序列【双指针】【简单】
  • 学习c#的第十五天