基于matlab的高斯滤波与图像去噪

1 高斯滤波原理

1.1 原理

高斯滤波是一种线性平滑滤波技术,主要用于消除图像中的高斯噪声。它的工作原理可以理解为对整幅图像进行加权平均的过程,即每个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。

高斯滤波实质上是一种信号的滤波器,其用途是信号的平滑处理。在数字图像处理中,噪声是最大的问题之一,由于误差会累计传递,因此高斯滤波器被广泛应用于图像去噪过程,以获取信噪比SNR较高的图像,从而更真实地反映原始信号。

1.2 公式

高斯滤波的核心是高斯函数,其公式在一维情况下表示为:

G(x) = (\frac{1}{\sqrt{2\pi}\sigma} \exp(-\frac{x2}{2\sigma2}))

其中,(G(x)) 表示高斯函数在 (x) 处的值,(\sigma) 是标准差,它决定了高斯函数的宽度,从而影响了滤波的强弱程度。标准差越大,滤波程度越强,滤波效果越明显。

在二维图像处理中,高斯滤波使用的高斯核是两个一维高斯函数的乘积,形式如下:

G(x, y) = (\frac{1}{2\pi\sigma2}\exp(-\frac{x2+y2}{2\sigma2}))

其中,((x, y)) 是图像中的像素坐标,(\sigma) 是标准差。高斯核是对连续高斯函数的离散近似,通常通过对高斯曲面进行离散采样和归一化得出。这里,归一化指的是卷积核所有元素之和为1。

1.3 实现方法

高斯滤波的实现通常使用卷积操作,即将高斯函数(或高斯核)应用到图像上,通过计算每个像素点与其邻域内像素点的加权平均灰度值来替代该像素点的原始值。具体操作为:用一个模板(或称卷积核、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

高斯滤波在计算机视觉和图像处理中是最常见的操作之一,它有两种主要的实现方式:一是使用离散化窗口滑窗卷积;另一种则是通过傅里叶变换来实现。

2 中值滤波去噪原理

2.1 原理

中值滤波是一种非线性平滑技术,主要用于消除图像或信号中的噪声,特别是椒盐噪声。其基本原理是:将数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。

中值滤波的核心思想是认为噪声像素的值与周围像素值存在显著差异,因此通过取周围像素值的中值可以有效减少噪声的影响。同时,中值滤波在滤除噪声的同时,能够保护信号的边缘,使之不被模糊,这是线性滤波方法所不具备的。

2.2 步骤
  1. 遍历图像的每个像素点,选择一个特定的邻域大小(如3x3、5x5等),该邻域大小可以根据实际需要进行调整。
  2. 将邻域内的像素值按照大小进行排序,生成单调上升(或下降)的二维数据序列。
  3. 将排序后的中值作为当前像素的新值,用于替代原始的像素值或噪声像素值。
2.3 公式

公式一般用来表示二维图像中的中值滤波操作。假设我们有一个滑动窗口,其尺寸为m×m(m为奇数),窗口覆盖下的像素邻域像素值序列长度为m²。序列中的每个元素对应于窗口内的一个像素值。将这些像素值进行排序后,取中间值作为窗口中心像素的新值。

用数学公式表示如下:

g(x, y) = med{f(x-v, y-v), ..., f(x+v, y+v)}

其中,g(x, y)表示中值滤波后图像在(x, y)处的像素值,f(x, y)表示原始图像在(x, y)处的像素值,v = (m-1)/2,med表示取中值操作。

这个公式描述了中值滤波的基本操作过程,即通过在图像上滑动一个固定大小的窗口,并将窗口内像素值的中值作为窗口中心像素的新值,来实现对图像的平滑去噪处理。

3.代码

%% 图像预处理-高斯滤波与图像去噪 
I = imread('test.jpeg');  
if size(I, 3) == 3  % 如果是彩色图像,转换为灰度图像  I = rgb2gray(I);  
end  
I = im2double(I); % 将图像转换为双精度,范围在[0, 1]    
% 对图像进行高斯滤波  
h = fspecial('gaussian', [5 5], 1); % 创建一个5x5的高斯滤波器,标准差为1  
I_gaussian = imfilter(I, h);    
% 绘制原始图像和原始直方图  
figure;  
subplot(3, 2, 1),imshow(I);  
title('原始图像');   
subplot(3, 2, 2),imhist(I);  
title('原始直方图');  
%  绘制高斯滤波后的图像和对应的直方图  
subplot(3, 2, 3),imshow(I_gaussian);  
title('高斯滤波后的图像');  
subplot(3, 2, 4),imhist(I_gaussian);  
title('高斯滤波后的直方图');   
% 去噪使用中值滤波  
I_denoised = medfilt2(I); % 使用中值滤波进行去噪    
% 绘制去噪后的图像和对应的直方图  
subplot(3, 2, 5),imshow(I_denoised);  
title('去噪后的图像');  
subplot(3, 2, 6),imhist(I_denoised);  
title('去噪后的直方图'); 

4 运行结果

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

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

相关文章

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法

在连接数据库的时候出现了下面图面中的错误,尝试集中方法后终于解决了这个问题。 1.修改驱动程序版本 出现这种错误可能是因为你的驱动程序版本不兼容,我们可以尝试修改版本解决。而我们的驱动程序往往是以依赖的形式导入,因此可以在maven仓…

HTML(16)——边距问题

清楚默认样式 很多标签都有默认的样式,往往我们不需要这些样式,就需要清楚默认样式 写法: 用通配符选择器,选择所有标签,清除所有内外边距选中所有的选择器清楚 *{ margin:0; padding:0; } 盒子模型——元素溢出 作…

MySQL锁、加锁机制(超详细)—— 锁分类、全局锁、共享锁、排他锁;表锁、元数据锁、意向锁;行锁、间隙锁、临键锁;乐观锁、悲观锁

文章目录 一、概述1.1 MySQL锁的由来1.2 锁定义1.3 锁分类 二、共享锁与排他锁2.1 共享锁(S锁)2.2 排他锁(X锁)2.3 MySQL锁的释放 三、全局锁3.1 介绍3.2 语法3.3 特点 四、表级锁4.1 介绍4.2 表锁4.3 元数据锁(Meta D…

雷达标定与解析

融合雷达与解析雷达数据的相关代码。感谢开源社区的贡献。以下代码继承了很多人的工作。 如果是单雷达: 直接进行标定,所以就是接收相关的话题然后发布。 lidar_calibration_params.yaml: calibration:在这个接口里面x_offset: 0.0y_offset:…

u盘sd卡格式化怎么恢复,3种恢复方法教学

u盘sd卡格式化怎么恢复,这是许多人在误操作后最关心的问题。我们会详细介绍五种有效的恢复方法,并且提供恢复原理的教学视频,帮助您轻松找回U盘和SD卡上被格式化的数据。 一. 数据存储与恢复的原理 1. U盘、移动硬盘、硬盘以及固态盘存储数据…

游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解

游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解 码客 卢益贵 ygluu 关键词:游戏策划 可配置化 模块化配置 数据引擎 条件系统 红点系统 一、前言 在插件式模块化软件开发当中,既要模块高度独…

解决Windows下移动硬盘无法弹出的问题:\$Extend\$RmMetadata\$TxfLog\$TxfLog.blf

想弹出移动硬盘时,Windows告诉我设备正在使用 然后我使用LockHunter查看到底是哪个应用在使用我的移动硬盘,发现是 System(PID 4) E x t e n d Extend ExtendRmMetadata T x f L o g TxfLog TxfLogTxfLog.blf这个文件正在使用 这是一个索引文件 解决 …

数据清洗!即插即用!异常值、缺失值、离群值处理、残差分析和孤立森林异常检测,确保数据清洗的全面性和准确性,MATLAB程序!

适用平台:Matlab2021版及以上 数据清洗是数据处理和分析中的一个关键步骤,特别是对于像风电场这样的大型、复杂数据集。清洗数据的目的是为了确保数据的准确性、一致性和完整性,从而提高数据分析的质量和可信度,是深度学习训练和…

PTA基础题考点汇总

一:字符串(数组)的逆序,栈的方法 **字符串数组的逆序 : ** 标准容器库的知识:定义stack容器于字符串:stackv; string s; //这里用到了c中stl(标准容器库的知识)stack&…

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能,将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型,现在我们调整下,将其数据类型调整为实体,如下图所示: 数据类型需要选择实体,并在实…

STM32单片机系统

1.STM32最小系统 微型计算机(面) 单片机最小系统是指能够将单片机芯片运行所必需的最少的硬件电路集成在一起的系统。 它是一种基本的单片机应用系统,通常由主芯片,时钟电路,复位电路,电源电路&#xff0c…

Ubuntu/Linux SSH 端口转发

文章目录 Ubuntu/Linux SSH 端口转发概述本地端口转发场景一场景二 参考资料 Ubuntu/Linux SSH 端口转发 概述 SSH, Secure Shell 是一种在网络上用于安全远程登录到另一台机器的工具。除了远程登录以外,ssh 的端口转发是它的另一项强大功能。通过 ssh 端口转发功…

计算机网络知识点整理1

目录 激励的话 一、计算机发展的三个阶段 二、互联网标准化工作 三、互联网的组成 边缘部分 核心部分 电路交换的主要特点 分组交换的主要特点 四、三大交换方式的主要特点 总结 激励的话 没关系的,有三分钟热度,就有三分钟收获 一、计算机…

RabbitMQ实践——使用WebFlux响应式方式实时返回队列中消息

大纲 Pom.xml监听队列实时返回消息测试完整代码工程代码 在之前的案例中,我们在管理后台收发消息都是通过短连接的形式。本文我们将探索对队列中消息的实时读取,并通过流式数据返回给客户端。 webflux是反应式Web框架,客户端可以通过一个长连…

捷云等保一体机 产品服务一站式等保合规交付解决方案

等保2.0的变化 2019 年 5 月 13 日,网络安全等级保护制度 2.0 国家标准(简称“等保 2.0”)正式发布,将等保 2.0 基本要求、测评要求、安全设计技术要求框架统一为安全管理中心支持下的三重防护结构框架。定级对象在按照等保 2.0 …

Python爬虫-贝壳新房

前言 本文是该专栏的第32篇,后面会持续分享python爬虫干货知识,记得关注。 本文以某房网为例,如下图所示,采集对应城市的新房房源数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地…

TensorFlow高阶API使用与PyTorch的安装

欢迎来到 Papicatch的博客 文章目录 🍉TensorFlow高阶API使用 🍈示例1:使用tf.keras构建模型 🍍通过“序贯式”方法构建模型 🍍通过“函数式”方法构建模型 🍈示例2:编译模型关键代码 &am…

ArkTS开发系列之导航 (2.6 图形)

上篇回顾:ArkTS开发系列之导航 (2.5.2 页面组件导航) 本篇内容: 显示图片、自定义图形和画布自定义图形的学习使用 一、知识储备 1. 图片组件(Image) 可以展示jpg 、png 、svg 、gif等各格式的网络和本地资源文件图…

AI 开发平台(Coze)搭建小游戏《挑战花光10亿》

前言 本文讲解如何从零开始,使用扣子平台去搭建一个小游戏 这是成品链接:挑战花光10亿 - 扣子 AI Bot (coze.cn) 欢迎大家去体验一下 效果 正文 什么是coze平台? 扣子(Coze)是字节跳动推出的一站式 AI 开发平台&am…

周末设计高端企业_集团官网主题Discuz模板

风格名称: 周末设计_高端企业_集团官网 适用版本: Discuz! X3.0、X3.1、X3.2、X3.3、F1.0 风格编码: 使用语言包结构,适合全部编码 周末设计高端企业_集团官网主题Discuz模板