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

news2024/12/25 10:15:41

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.coloradmin.cn/o/1855433.html

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

相关文章

Apache Tomcat 10.1.25 新版本发布 java 应用服务器

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应对 H…

POLYGON Horror Carnival - Low Poly 3D Art by Synty

465 个独特的预设模型 一个正在运行的摩天轮和旋转木马 包括10个示例脚本,让嘉年华栩栩如生 ◼ 描述◼ 欢迎来到恐怖嘉年华。这个地方曾经有诱人的音乐,现在却有着令人不安的旋律,暗示着其中令人不安的惊喜。 这场险恶的盛会的真正核心在于演示场景。它使用3D低多边形资源构…

C语言常用标准头文件

头文件的基础概念 在C的系列语言程序中,头文件(通常扩展名为.h)被大量使用,它通常包含函数、变量、结构体等的声明和定义,以及一些宏定义和类型定义。头文件的主要作用是为了方便管理和重用代码,它可以被多…

图纸管理系统的选择:为企业带来的长远价值

图纸管理系统的选择:为企业带来的长远价值 在当今高度信息化和数字化的时代,图纸管理系统的选择对于企业的长远发展至关重要。一个好的图纸管理系统不仅能提升企业的运营效率,还能为企业在激烈的市场竞争中赢得先机。以下我们将详细探讨图纸…

【算法面试】二分查找:如何在有序数组中高效搜索目标值

目录 题目描述 示例 1: 示例 2: 问题分析 解决方法 方法 1:标准二分查找 方法 2:递归二分查找 方法 3:非递归简化版本 方法 4:带调试信息的版本 详细步骤 总结 博主v:XiaoMing_Java 二分查找是一种常见的算…

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

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

外部网络如何访问内网?

在现代信息化时代,随着企业规模的扩大和业务范围的扩展,越来越多的企业需要实现外部网络访问内网的需求。外部网络访问内网指的是在外部网络环境下,通过互联网等公共网络途径,实现对企业内部网络的访问和操作。这种需求的出现&…

骑马与砍杀战团mod制作-基础-军队笔记(一)

骑马与砍杀战团mod制作-基础-军队装备笔记(一) 资料来源 学习的资料来源: b站【三啸解说】手把手教你做【骑砍】MOD,基础篇,链接为: https://www.bilibili.com/video/BV19x411Q7No?p4&vd_sourcea507…

代码随想录——摆动序列(Leetcode376)

题目链接 贪心 class Solution {public int wiggleMaxLength(int[] nums) {if(nums.length < 1){return nums.length;}// 当前一对差值int cur 0;// 前一对差值int pre 0;// 峰值个数int res 1;for(int i 0; i < nums.length - 1; i){cur nums[i 1] - nums[i];i…

STM32单片机系统

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

免费内网穿透工具 ,快解析内网穿透解决方案

在IPv4公网IP严重不足的环境下&#xff0c;内网穿透技术越来越多的被人们所使用&#xff0c;使用内网穿透技术的好处有很多。 1&#xff1a;无需公网ip 物以稀为贵&#xff0c;由于可用的公网IP地址越来越少&#xff0c;价格也是水涨船高&#xff0c;一个固定公网IP一年的成本…

大数据集群数据传输

简单的服务器间的通信示例 netcat&#xff0c;简写为 nc&#xff0c;是 unix 系统下一个强大的命令行网络通信工具&#xff0c;用于在两台主机之间建立 TCP 或者 UDP 连接&#xff0c;并提供丰富的命令进行数据通信。nc 在网络参考模型属于应用层。使用 nc 可以做很多事情&…

《Windows API每日一练》5.5 插入符号

当你向程序中输入文本时&#xff0c;通常会有下划线、竖线或方框指示你输入的下一个字符将出现在屏幕上的位置。你也许认为这是“光标”&#xff0c;但在编写Windows程序时&#xff0c;你必须避免这种习惯。在Windows中&#xff0c;它被称为“插入符号”&#xff08;caret&…

NUS、清华提出STAR:一句话生成高质量4D Avatar,代码已开源

©PaperWeekly 原创 作者 | Chai Zenghao 单位 | 新加坡国立大学博士生 研究方向 | 3D生成 背景 在计算机图形学和数字虚拟人领域&#xff0c;从简单的文本提示生成更真实、可交互的虚拟人物是是目前广受关注的研究课题。然而&#xff0c;先前的 3D Avatar 生成方法存在一…

陀螺仪LSM6DSV16X与AI集成(7)----FIFO数据读取与配置

陀螺仪LSM6DSV16X与AI集成.7--检测自由落体 概述视频教学样品申请源码下载主要内容生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置量程设置FIFO水印设置速率使用流模式设置FIFO时间戳批处理速率使能时间戳FIFO状态寄存器演示…

【ajax核心05】宏任务与微任务

ES6之后引入Promise对象(用来管理异步任务)&#xff0c;让JS引擎也可以发起异步任务 一&#xff1a;异步任务分类 异步任务分为&#xff1a;宏任务与微任务 宏任务 由浏览器环境执行的异步代码 具体宏任务分类 微任务 由JS引擎执行的代码 创建Promise对象时&#xff0c;…

【鸿蒙】ERROR_GET_BUNDLE_INSTALLER_FAILED

错误信息 [ERROR_GET_BUNDLE_INSTALLER_FAILED] Troubleshooting guide $ hdc file send D:\Huawei\devEcoProjects\entry\build\default\outputs\default\entry-default-unsigned.hap /sdcard/e8a215ea7be1444197e6a58ebda7721f/entry-default-unsigned.hap Error while Depl…

Vue74-路由传参2

一、$route中的params参数 二、在配置路由的index.js文件中&#xff0c;声明传参 占位符用的什么名字&#xff0c;params里面的key就是什么。 三、<router-link>标签中传参 3-1、to字符串写法 3-2、to的对象写法 注意&#xff1a;若是用params携带参数&#xff0c;不…

联盟学习:技术原理、特点及适用场景

一、引言 随着大数据和人工智能技术的快速发展&#xff0c;数据成为了推动科技进步的重要资源。然而&#xff0c;在实际应用中&#xff0c;数据往往呈现出碎片化、分散化的特点&#xff0c;如何有效地利用这些数据成为了业界关注的焦点。联盟学习&#xff08;Federated Learni…

异地组网如何OEM?

在现代信息社会中&#xff0c;企业越来越需要跨地域进行数据传输与共享。面临的挑战却是如何在不暴露在公网的情况下&#xff0c;实现异地组网并保障数据的安全性。本文将介绍一种名为“异地组网OEM”的解决方案&#xff0c;该方案能够通过私有通道传输数据并对数据进行安全加密…