一文理解什么是中值模糊

news2025/4/5 9:20:34

目录

中值模糊的概念

中值模糊(Median Blur)

中值模糊的原理

示例:3×3 中值模糊

什么是椒盐噪声

椒盐噪声(Salt-and-Pepper Noise)

椒盐噪声的特点

OpenCV 中的 cv2.medianBlur()

函数格式

示例代码

中值模糊 vs 其他模糊方法

适用场景

总结


中值模糊的概念

中值模糊(Median Blur)

        中值模糊(Median Blur)是一种 非线性滤波 方法,主要用于 去除椒盐噪声(Salt-and-Pepper Noise)(后文会解释什么是椒盐噪声),并且 能够较好地保留图像的边缘。它的核心思想是:

窗口(滤波核)内所有像素的中值 取代中心像素的值。


中值模糊的原理

中值模糊(Median Blur)是一种 非线性滤波 方法,它的核心思想是:

用局部窗口(滤波核)中的像素中值来替换中心像素值,从而去除椒盐噪声,并保留边缘信息。

        它不同于均值滤波(Mean Filtering)高斯滤波(Gaussian Filtering),它不计算均值或加权均值,而是直接选择排序后中间的值。

示例:3×3 中值模糊

假设有一个 3×3 的像素窗口:

[ 10, 200, 15 ]
[  5, 250, 20 ]
[  0, 100, 30 ]
  • 先对这些像素值排序:

    [0, 5, 10, 15, 20, 30, 100, 200, 250]

  • 中间值(第 5 个):20

  • 替换窗口中心像素(25020

这样就减少了椒盐噪声的影响,同时保留了边缘信息。


什么是椒盐噪声

椒盐噪声(Salt-and-Pepper Noise)

椒盐噪声是一种常见的图像噪声类型,它的特点是:

在图像中随机出现白色(Salt)和黑色(Pepper)像素点,就像图像被撒上了“盐”和“胡椒”一样,因此得名。

椒盐噪声的特点

  1. 随机出现:椒盐噪声通常是随机分布的,每个像素有一定概率被噪声污染。

  2. 极端像素值

    • “Salt”(盐噪声)是 255(白色) 的像素点。

    • “Pepper”(胡椒噪声)是 0(黑色) 的像素点。

  3. 破坏性强:椒盐噪声对图像影响较大,特别是对边缘和细节部分。

  4. 通常由传输或传感器错误引起

    • 传输错误:图像在无线传输或压缩时可能引入椒盐噪声。

    • 传感器故障:相机或扫描仪的传感器问题可能导致像素随机变黑或变白。


OpenCV 中的 cv2.medianBlur()

函数格式

cv2.medianBlur(src, ksize)
  • src:输入图像(可以是灰度图或彩色图)。

  • ksize:滤波窗口大小(必须是 奇数,如 3、5、7)。

    • ksize=3 → 3×3 窗口

    • ksize=5 → 5×5 窗口

    • 不能是偶数,否则会报错!

示例代码

 
import cv2

# 读取图像
img = cv2.imread('./imgs/001.png')

# 应用中值模糊,核大小为 5
median_blur = cv2.medianBlur(img, 7)

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

# 显示结果
cv2.imshow('Original', img)
cv2.imshow('Median Blur', median_blur)
cv2.imshow('Gaussian Blur', gaussian_blur)

cv2.waitKey(0)

cv2.destroyAllWindows()

cv2.destroyAllWindows()

原图

效果如下:

 那其实就可以看出来了,中值模糊对于这样的椒盐噪声效果很好的嘻嘻。

原图

效果

高斯模糊来这里就纯属是捣乱的,中值模糊对于一些点稍微没有那么大的还是可以完美清除的,但是太大了,一些比ksize还大的,几乎只能去个棱角没办法了。


中值模糊 vs 其他模糊方法

滤波方法计算方式适用场景备注
均值模糊 cv2.blur()计算窗口内所有像素的 均值适用于一般模糊会模糊边缘
高斯模糊 cv2.GaussianBlur()计算 加权均值(中心像素权重大)适用于去噪和平滑适当保留边缘
中值模糊 cv2.medianBlur()窗口像素的中值去椒盐噪声,保留边缘处理速度较慢

适用场景

去椒盐噪声(黑白点状噪声)。
保留边缘信息(不会模糊边界)。
适用于灰度图和彩色图(每个通道独立处理)。


总结

  • 中值模糊 通过 取中值 代替均值,能有效去除椒盐噪声,并且不会模糊边缘

  • 适用于图像去噪,特别是 椒盐噪声清理

  • 核大小必须是奇数,一般选择 ksize=3ksize=5

图像有 椒盐噪声cv2.medianBlur() 选他!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏引擎学习第192天

仓库:https://gitee.com/mrxiao_com/2d_game_4 回顾 我们现在正在编写一些界面代码,主要是用户界面(UI),不过这里的UI并不是游戏内的用户界面,而是为开发者设计的用户界面。我们正在尝试做一些小的UI元素&#xff0c…

通信数据记录仪-产品概念ID

总结: 1、支持高速CAN、支持容错CAN、支持单线CAN(理解是支持不同的协议,CANFD、CAN2.0和LIN?) 2、 通过上位机设计时间

Mac VM 卸载 win10 安装win7系统

卸载 找到相应直接删除(移动到废纸篓) 可参考:mac如何卸载虚拟机win 下载 win7下载地址

基于图扑 HT 技术的电缆厂 3D 可视化管控系统深度解析

在当今数字化浪潮席卷制造业的大背景下,图扑软件(Hightopo)凭借其自主研发的强大技术,为电缆厂打造了一套先进的 3D 可视化管控系统。该系统基于 HT for Web 技术,为电缆厂的数字化转型提供了有力支撑。 HT 技术核心架…

《AI大模型开发笔记》MCP快速入门实战(一)

目录 1. MCP入门介绍 2. Function calling技术回顾 3. 大模型Agent开发技术体系回顾 二、 MCP客户端Client开发流程 1. uv工具入门使用指南 1.1 uv入门介绍 1.2 uv安装流程 1.3 uv的基本用法介绍 2.MCP极简客户端搭建流程 2.1 创建 MCP 客户端项目 2.2 创建MCP客户端…

常见的ETL工具分类整理

一、开源ETL工具 ‌Kettle(Pentaho Data Integration)--Spoon‌ 设计及架构:面向数据仓库建模的传统ETL工具。使用方式:C/S客户端模式,开发和生产环境需要独立部署,任务编写、调试、修改都在本地。底层架构…

Smart Link 技术全面解析

1.1 网络冗余技术的演进与需求 1.2 Smart Link 的核心价值与本文目标 第一章 Smart Link 技术概述 2.1 Smart Link 的应用场景与背景 2.2 Smart Link 的基本概念与组网角色 2.3 Smart Link 与传统技术的对比 第二章 Smart Link 工作原理 3.1 Smart Link 组的构成与运行机…

Roo Code(前身为 Roo Cline)一个 AI 驱动的自主编码代理

Roo Code(前身为 Roo Cline) Roo Code 是一个 AI 驱动的自主编码代理,它存在于您的编辑器中。它可以: 用自然语言沟通直接在您的工作区读写文件运行终端命令自动化浏览器操作与任何 OpenAI 兼容或自定义的 API/模型集成通过自定…

数字化三维实训室:无穿戴动作捕捉技术如何赋能体育与舞蹈

在高校体育与舞蹈教学中,精准的动作训练至关重要。传统训练方式依赖教练的肉眼观察与手动记录,存在效率低下、误差较大的情况。尤其在快速连续动作或复杂肢体形态的捕捉中,人工判读易受主观经验限制,难以实现标准化评估。面对传统…

leetcode51-N皇后

leetcode 51 思路 本题可以使用回溯算法来解决。回溯算法通过尝试所有可能的解决方案来找到问题的解的算法,当发现当前的选择无法得到有效的解决方案时,就回溯到上一步,尝试其他的选择。对于 N 皇后问题,我们可以逐行放置皇后&…

linux 命令 awk

awk 是 Linux/Unix 系统中一个强大的文本处理工具,尤其擅长处理结构化文本数据(如日志、表格数据)。它不仅是命令行工具,还是一种脚本语言,支持变量、条件、循环等编程特性 1. 基本语法 awk [选项] 模式 {动作} 文件名…

R语言——获取数据1

参考资料:学习R 数据的来源可以由很多。R内置有许多数据集,而在其他的附件包中能找到更多的数据。R能从各式各样的来源中读取,且支持大量的文件格式。 1、内置的数据集 R的基本分发包有一个datasets,里面全是示例数据集。很多其他…

从零开始打造HTML5拼图游戏:一个Canvas实战项目

从零开始打造HTML5拼图游戏:一个Canvas实战项目 先看效果: 你是否曾经被那些精美的网页拼图游戏所吸引?用 HTML5 的 Canvas 技术,从零开始,教你怎么画图、处理鼠标事件,还有游戏的核心逻辑&#xff0c…

每日一题洛谷P8649 [蓝桥杯 2017 省 B] k 倍区间c++

P8649 [蓝桥杯 2017 省 B] k 倍区间 - 洛谷 (luogu.com.cn) #include <iostream> #include <vector> using namespace std; #define int long long signed main() {int n, k;cin >> n >> k;vector<int> a(n 1);vector<int> sum(n 1);vec…

Linux(十二)信号

今天我们就要来一起学习信号啦&#xff01;&#xff01;&#xff01;还记得小编在之前的文章中说过的ctrlc吗&#xff1f;之前小编没有详细介绍过&#xff0c;现在我们就要来学习啦&#xff01;&#xff01;&#xff01; 一、信号的基本介绍 首先&#xff0c;小编带领大家先一…

LeetCode算法题(Go语言实现)_30

题目 给定单链表的头节点 head &#xff0c;将所有索引为奇数的节点和索引为偶数的节点分别组合在一起&#xff0c;然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 &#xff0c; 第二个节点的索引为 偶数 &#xff0c;以此类推。 请注意&#xff0c;偶数组和奇数组内…

【读书笔记·VLSI电路设计方法解密】问题61:扫描插入的目的是什么

如问题60所述,要构建可测试电路,必须确保电路中每个节点都具有可控性和可观测性。但对于包含时序元件(如触发器、锁存器等存储元件)的电路,若不采取特殊设计则难以实现这两项特性。这是因为时序元件关联节点的逻辑状态不仅取决于当前输入,还受其先前存储状态影响——它们…

VirtualBox安装FnOS

1.下载FnOS镜像 下载网址&#xff1a; https://www.fnnas.com/2.创建虚拟机 虚拟机配置如图所示&#xff08;注意操作系统类型和网卡配置&#xff09; &#xff08;注意启动顺序&#xff09; 3.启动虚拟机 网卡类型选择桥接的Virtual Adapter 如果没有IP地址或者IP地址无法…

Pycharm(十二)列表练习题

一、门和钥匙 小X在一片大陆上探险&#xff0c;有一天他发现了一个洞穴&#xff0c;洞穴里面有n道门&#xff0c; 打开每道门都需要对应的钥匙&#xff0c;编号为i的钥匙能用于打开第i道门&#xff0c; 而且只有在打开了第i(i>1)道门之后&#xff0c;才能打开第i1道门&#…

集合与容器:List、HashMap(II)

一、ArrayList 是集合框架中最核心的动态数组实现&#xff0c;高频使用的容器之一。 1. 核心数据结构 基于数组实现&#xff0c;维护elementData数组存储元素&#xff1a; transient修饰的elementData不会被默认序列化&#xff08;通过自定义序列化逻辑优化存储&#xff09;…