什么叫图像的中值滤波,并附利用OpenCV和MATLB实现均值滤波的代码

图像的中值滤波(Median Filtering)是一种非线性数字滤波技术,常用于图像处理以减少噪声,同时保留图像边缘细节。其基本思想是用图像中某个窗口内像素的中值替代该窗口中心像素的值。具体步骤如下:

  1. 选择窗口:定义一个窗口(也称为滤波器或核),通常为3x3、5x5或7x7的方形矩阵。窗口的大小可以根据需要调整。

  2. 移动窗口:将窗口滑动到图像中的每一个像素点,使得每次窗口覆盖一个像素和其周围的像素。

  3. 排序并取中值:对于窗口内的所有像素值进行排序,然后选择排序后的中值。这一步是中值滤波的核心。

  4. 替换中心像素:用排序后的中值替代窗口中心像素的值。

  5. 重复:对图像中的每一个像素重复上述步骤,直到整个图像都经过滤波处理。

示例

假设有一个3x3的窗口,中心像素值为125,周围像素值如下:

[100, 102, 104]
[120, 125, 130]
[135, 140, 150]
  1. 排序:将窗口内的所有像素值排序得到:[100, 102, 104, 120, 125, 130, 135, 140, 150]
  2. 取中值:排序后的中值是125
  3. 替换中心像素:将中心像素值(125)替换为中值(125)

优点

  • 噪声抑制:中值滤波对抑制椒盐噪声(salt-and-pepper noise)特别有效。
  • 保留边缘:相比于均值滤波,中值滤波更能保留图像的边缘细节,不会模糊图像的边缘。

缺点

  • 计算复杂度较高:中值滤波需要对窗口内的像素值进行排序,计算量较大。
  • 边界处理:在处理图像边缘像素时,窗口可能超出图像范围,需要特殊处理,如填充边界。

中值滤波是一种常用的图像处理技术,广泛应用于去噪声、图像增强等领域。

下面是使用OpenCV实现中值滤波的C++代码:

#include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat src = cv::imread("image.jpg", cv::IMREAD_COLOR);if (src.empty()) {std::cerr << "无法读取图像文件!" << std::endl;return -1;}// 应用中值滤波cv::Mat dst;int kernel_size = 5; // 滤波器大小cv::medianBlur(src, dst, kernel_size);// 显示结果cv::imshow("原始图像", src);cv::imshow("中值滤波后的图像", dst);cv::waitKey(0);// 保存结果图像cv::imwrite("median_filtered.jpg", dst);return 0;
}

使用OpenCV和MATLAB实现中值滤波的代码见本博文原文,链接:
https://www.hhai.cc/thread-247-1-1.html

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

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

相关文章

C++树(二)【直径,中心】

目录&#xff1a; 树的直径&#xff1a; 树的直径的性质&#xff1a; 性质1&#xff1a;直径的端点一定是叶子节点 性质2&#xff1a;任意点的最长链端点一定是直径端点。 性质3&#xff1a;如果一棵树有多条直径,那么它们必然相交&#xff0c;且有极长连…

STM32中PC13引脚可以当做普通引脚使用吗?如何配置STM32的TAMPER?

1.STM32中PC13引脚可以当做普通引脚使用吗&#xff1f; 在STM32单片机中&#xff0c;PC13引脚可以作为普通IO使用&#xff0c;但需要进行一定的配置。PC13通常与RTC侵入检测功能&#xff08;TAMPER&#xff09;复用&#xff0c;因此需要关闭TAMPER功能才能将其作为普通IO使用。…

服务端渲染框架:Nuxt.js 与 Next.js 的区别和对比

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

2024国家护网面试小结

24年国护马上就要开始&#xff0c;基本上大部分蓝队红队都已经准备入场了 今年护网第一年变成常态化护网&#xff0c;由十五天突然变成了两个月常态化&#xff0c;导致今年护网有很多项目整的七零八落 博主今年参加了三家厂商蓝队护网面试&#xff0c;在这边分享一下护网面试…

掌握这些技巧,让你成为画册制作高手

在数字化的时代背景下&#xff0c;电子画册以其便捷的传播方式、丰富的视觉表现形式&#xff0c;赢得了大众的喜爱。它不仅能够在个人电脑上展现&#xff0c;还能通过智能手机、平板电脑等多种移动设备随时随地被访问和浏览。这种跨平台的支持&#xff0c;使得无论你身处何地&a…

Html_Css问答集(12)

99、将上例的0%改为30%&#xff0c;会如何变化&#xff1f; none:延迟2秒间无色&#xff0c;3.8秒&#xff08;0%-30%占1.8秒&#xff09;前无色&#xff0c;之后变红到5秒绿最后蓝&#xff0c;动画结束时恢复初始&#xff08;无色&#xff09;。 forward:延迟2秒间无色&am…

leetcode刷题总结——字符串匹配

KMP&#xff08;字符串匹配算法&#xff09; 主串或目标串&#xff1a;比较长的&#xff0c;我们就是在它里面寻找子串是否存在&#xff1b; 子串或模式串&#xff1a;比较短的。 前缀&#xff1a;字符串A和B&#xff0c;A BS&#xff0c;S非空&#xff0c;则B为A的前缀。 …

婚礼成本与筹备策略:一场梦幻婚礼的理性规划

婚礼成本与筹备策略&#xff1a;一场梦幻婚礼的理性规划 摘要 婚礼&#xff0c;作为人生中的重要仪式&#xff0c;承载着新人的爱情与梦想&#xff0c;同时也伴随着不菲的经济投入。本文旨在探讨婚礼所需的大致成本、影响成本的主要因素以及婚礼筹备过程中的关键注意事项&…

【Java--数据结构】二叉树

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 树结构 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合 注意&#xff1a;树形结构中&#xff0c;子…

Transformer模型在多任务学习中的革新应用

在深度学习领域&#xff0c;多任务学习&#xff08;Multi-task Learning, MTL&#xff09;是一种训练模型以同时执行多个任务的方法。这种方法可以提高模型的泛化能力&#xff0c;因为它允许模型在不同任务之间共享知识。近年来&#xff0c;Transformer模型因其在自然语言处理&…

【linux高级IO(三)】初识epoll

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux高级IO 1. 前言2. 初识e…

STM32 HRTIM生成PWM时遇到无法输出PWM脉冲波形问题

在使用HRTIM生成PWM时&#xff0c;当把周期寄存器更新的设置放到while循环中时&#xff0c;无法输出PWM脉冲波形&#xff0c;即使增加计数延时也无法输出&#xff0c;最终只能放到中断函数中执行后期寄存器值更新才能够生成PWM脉冲波形。

主流大数据调度工具DolphinScheduler之数据ETL流程

今天给大家分享主流大数据调度工具DolphinScheduler&#xff0c;以及数据的ETL流程。 一&#xff1a;调度工具DS 主流大数据调度工具DolphinScheduler&#xff0c; 其定位&#xff1a;解决数据处理流程中错综复杂的依赖关系 任务支持类型&#xff1a;支持传统的shell任务&a…

Python学习4---迭代器和生成器的区别

一、迭代器 定义&#xff1a;迭代器是一个可以记住遍历的位置的对象。迭代器对象必须实现两个方法&#xff0c;iter() 和 next()。字符串、列表或元组等数据类型都是可迭代对象&#xff0c;但它们不是迭代器&#xff0c;因为它们不具有 next() 方法。迭代器对象用于遍历可迭代对…

冷却塔由那些配件组成

1、淋水填料 将需要冷却的水&#xff08;热水&#xff09;多次溅洒成水滴或形成水膜&#xff0c;以增加水和空气的接触面积和时间&#xff0c;促进水和空气的热交换。 填料在开式横流冷却塔的作用是增加循环水与空气的接触面积&#xff0c;并延长冷却水停留在空气中的时间&am…

LabVIEW工业设备姿态监测系统

开发了一种基于LabVIEW的工业设备姿态监测系统&#xff0c;针对现有监测设备在适应性和反应时间上的不足&#xff0c;采用了LabVIEW软件和STM32微控制器&#xff0c;通过高精度姿态传感器实现了对设备姿态的快速准确监测&#xff0c;大大提高了工业作业的安全与效率。 项目背景…

C++深度解析教程笔记9-静态成员变量,静态成员函数,二阶构造,友元,函数重载,操作符重载

C深度解析教程笔记9 第25课 - 类的静态成员变量实验-数对象个数&#xff08;失败&#xff09;实验-静态变量小结 第26课 - 类的静态成员函数实验-修改对象的静态变量数值实验-利用静态成员函数实验-静态变量静态函数实现统计对象个数小结 第27课 - 二阶构造模式实验-初始化是否…

百度人脸识别Windows C++离线sdk C#接入

百度人脸识别Windows C离线sdk C#接入 目录 说明 设计背景 • 场景特点&#xff1a; • 客户特点&#xff1a; • 核心需求&#xff1a; SDK 包结构 效果 代码 说明 自己根据SDK封装了动态库&#xff0c;然后C#调用。 功能接口 设计背景 • 场景特点&#xff1a; -…

【渗透入门】XSS

文章目录 XSS漏洞XSS举例XSS类型防御方式 XSS漏洞 XSS&#xff08;Cross-Site Scripting&#xff0c;跨站脚本攻击&#xff09;是一种常见的Web应用程序安全漏洞。XSS漏洞发生在应用程序未能充分过滤用户提供的数据&#xff0c;使得恶意脚本得以在不知情的用户的浏览器中被执行…

ARFoundation系列讲解 - 91 Immersal 简介

一、Immersal 简介 Immersal是一家专注于增强现实(AR)技术的公司,致力于开发和推广空间感知解决方案(简称:大空间技术)。他们的核心产品是一个名为Immersal SDK的开发工具包,通过视觉定位(VPS)能够轻松地在现实世界中实现高精度的定位和增强现实体验。 二、Immersal …