Matlab图像平滑滤波学习笔记——卷积、中值滤波、排序滤波以及自适应滤波

1.引言

图像处理是计算机视觉领域中的一个重要分支,其目标是通过对图像进行各种操作来改善图像的质量或提取出特定的信息。在图像处理的诸多任务中,平滑和滤波是常见且关键的操作,用于去除噪声、增强细节或突出图像中的特征。本文将重点介绍一系列MATLAB脚本文件,通过不同的函数实现图像的平滑和滤波操作。这些函数涵盖了各种技术,包括卷积、中值滤波、排序滤波以及自适应滤波等。

2.主要函数介绍

2.1 imfilter()函数

进行图像平滑。该函数通过卷积操作,利用不同的滤波器对图像进行处理,有助于去除高频噪声,提高图像质量。

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I);
J=imnoise(I, 'salt & pepper', 0.02);%添加噪声
h=ones(3,3)/5;                      %建立模板
h(1,1)=0;   h(1,3)=0;
h(3,1)=0;   h(1,3)=0;
K=imfilter(J, h);                  %图像的滤波
figure;
subplot(131);
imshow(I);                        %显示原始图像
subplot(132);
imshow(J);                        %显示添加噪声后的图像
subplot(133);
imshow(K);  

2.2 conv2()函数

进行图像平滑。类似于imfilter()conv2()同样通过卷积操作实现图像的平滑,对于平均化像素值起到积极的作用。

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I);
I=im2double(I);
J=imnoise(I, 'gaussian', 0, 0.01); %添加噪声
h=ones(3,3)/9;                     %产生模板
K=conv2(J, h);                     %通过卷积进行滤波
figure;
subplot(131);
imshow(I);                         %显示原始图像
subplot(132);
imshow(J);                         %显示添加噪声后的图像
subplot(133);
imshow(K);                         %显示滤波结果图像

2.3 filter2()函数

进行平滑滤波。这个函数同样执行卷积操作,可以根据选择的滤波器实现不同程度的平滑效果,从而提升图像清晰度。

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I);
I=im2double(I);
J=imnoise(I, 'salt & pepper', 0.02);%添加噪声
h1=fspecial('average', 3);          %3*3模板
h2=fspecial('average', 5);          %5*5模板
K1=filter2(h1, J);                  %滤波
K2=filter2(h2, J);                  %滤波
figure;
subplot(131);
imshow(J);                          %显示图像
subplot(132);
imshow(K1);                         %滤波结果
subplot(133);
imshow(K2);                         %滤波结果

2.4 medfilt2()函数

进行中值滤波。中值滤波是一种非线性滤波方法,对于去除图像中的椒盐噪声等噪声类型非常有效。

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I);
I=im2double(I);
J=imnoise(I, 'salt & pepper', 0.03);%添加噪声
K=medfilt2(J);                      %中值滤波
figure;
subplot(131);
imshow(I);                          %显示原始图像
subplot(132);
imshow(J);                          %显示添加噪声后的图像
subplot(133);
imshow(K);                         %显示滤波后的图像

2.5 ordfilt2()函数

进行排序滤波。通过对像素进行相对大小的排序,可以有效去除尖峰噪声等特定噪声类型。

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I);
I=im2double(I);
J1=ordfilt2(I, 1, true(5)); %排序滤波
J2=ordfilt2(I, 25, true(5));%排序滤波
figure;
subplot(131);
imshow(I);                 %显示原始图像
subplot(132);
imshow(J1);                %显示排序后第1个作为输出的结果
subplot(133);
imshow(J2);                %显示排序后第25个作为输出的结果

2.6 wiener2()函数

进行自适应滤波。Wiener滤波在频域上调整滤波参数,使其更适应图像的信噪比,从而保留细节并去除噪声。

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I);
I=im2double(I);
J=imnoise(I, 'gaussian', 0, 0.01);%添加高斯噪声
K=wiener2(J, [5 5]);              %自适应滤波
figure;
subplot(131);
imshow(I);                        %显示原始图像
subplot(132);
imshow(J);                        %显示噪声图像
subplot(133);
imshow(K);                        %显示滤波后的图像

2.7 算子

采用相关算子对图像进行锐化滤波。这种滤波方法通过增强高频信息,使图像边缘更加清晰。

I=im2double(I);
h=[0,1,0; 1, -4, 1; 0, 1, 0]; %拉普拉斯算子
J=conv2(I, h, 'same');        %卷积
K=I-J;
figure;
subplot(121);
imshow(I);                   %显示原图像
subplot(122);
imshow(K);                   %显示结果图像

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

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

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

相关文章

探索Viper-适用于GoLang的完整配置解决方案

前言 对于现代应用程序,尤其大中型的项目来说,在程序启动和运行时,往往需要传入许多参数来控制程序的行为,我们可以通过命令行参数,环境变量,配置文件等方式来将参数传递给程序。而Viper库为Golang语言开发…

麒麟系统安装minio_centos8.0安装最新minio_离线安装minio并设置权限_创建桶---minio工作笔记001

https://www.minio.org.cn/?id=18&id=3&id=0&id=11&id=9&spinz=qianfeng&adinfo678=baidu&spinz=qianfeng&adinfo678=baidu%3E 首先去到官网去下载minio,然后 可以看到已经显示的官网,然后再去,右边点击下载 进入下载页面一般都是amd64的版本…

【JaveWeb教程】(35)SpringBootWeb案例之《智能学习辅助系统》登录功能的详细实现步骤与代码示例(8)

目录 案例-登录和认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 案例-登录和认证 在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能…

Leetcode3014. 输入单词需要的最少按键次数 I

Every day a Leetcode 题目来源:3014. 输入单词需要的最少按键次数 I 解法1:统计 统计字符串 word 的小写字母个数和 1、#、*、0 的个数。 将小写字母均匀地分配到 8 个按键上,模拟即可。 代码: /** lc appleetcode.cn id3…

多维时序 | Matlab实现DBO-LSTM蜣螂算法优化长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现DBO-LSTM蜣螂算法优化长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现DBO-LSTM蜣螂算法优化长短期记忆神经网络多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-LSTM多变量时间序列预测&#x…

K8s 安装部署-Master和Minion(Node)

K8s 安装部署-Master和Minion(Node) 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETCD y…

手机通讯录----Python实例练习

问题描述 通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人们可以在通讯录中通过姓名查看相关联系人的联系方式、邮箱、地址等信息,也可以在其中新增联系人,或修改、删除联系人信息。下面是一个常见…

静态分析Golang语言生成函数调用关系的利器——go-callvis

目录 升级go删除旧版本安装新版本配置环境变量载入环境修改当前环境修改之后进入的环境 分析安装go-callvis分析其他包总结 导出文件总结 清晰主体脉络总结 其他 参考资料 不同于之前分析C语言项目的工具,go-callvis还是很方便使用。只要把两项工作做好就能顺利的使…

图像处理------调整色调

什么是色调? 色调,在画面上表现思想、感情所使用的色彩和色彩的浓淡。分为暖色调和冷色调。 from cv2 import destroyAllWindows, imread, imshow, waitKey#创建棕褐色色调 def make_sepia(img, factor: int):pixel_h, pixel_v img.shape[0], img.shap…

如何使用Docker部署WBO白板并实现公网地址远程访问

本文主要是如何使用Docker部署WBO白板并实现公网地址远程访问的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句&am…

【C/C++】C/C++编程——变量和常量

文章目录 变量变量的声明变量命名规则变量的类型 常量常量的定义与初始化字面量常量整型常量浮点型常量字符常量常量表达式(constexpr) 大家好,我是 shopeeai,也可以叫我虾皮,中科大菜鸟研究生。今天我们来一起来学习C…

C++初阶:C/C++内存管理、new与delete详解

之前结束了类与对象:今天进行下面部分内容的学习 文章目录 1.C/C内存分布2.C语言中动态内存管理方式:malloc/calloc/realloc/free3.C动态内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型 4.operator new与operator delete函数5.new和…

C#,数据检索算法之三元搜索(Ternary Search)的源代码

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文发布 三元搜索(Ternary Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algo…

SpringMvc切换Json转换工具

SpringBoot切换使用goolge的Gson作为SpringMvc的Json转换工具 <!-- gson依赖 --> <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId> </dependency>Configuration public class JsonWebConfig {B…

Python拼接字符串

在Python编程中&#xff0c;字符串拼接是一项常见的操作&#xff0c;它可以用于将多个字符串连接起来形成一个新的字符串&#xff0c;是处理文本数据和字符串操作的基本技巧之一。 1. 使用""运算符进行字符串拼接 最常见的字符串拼接方法是使用""运算符&…

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预…

专业130+总分390+第二名中国海洋大学946信号与系统考研经验电子信息通信

今年专业946信号与系统130&#xff0c;总分390&#xff0c;专业排名第2顺利上岸中国海洋大学&#xff0c;总结一下自己的复习经验希望对大家复习有所帮助&#xff0c;每个人的学习习惯不同&#xff0c;大家要对自己有信心&#xff0c;借鉴加上自己整合&#xff0c;属于自己的才…

第十篇【传奇开心果系列】BeeWare开发移动应用示例:优质跨平台解决方案

传奇开心果博文系列 系列博文目录BeeWare开发移动应用示例系列博文目录前言一、Beeware优质跨平台实现方案三、跨平台能力示例代码和说明四、原生用户界面示例代码和说明五、强大生态系统示例代码和说明六、灵活的部署选项示例代码和说明七、归纳总结系列博文目录 BeeWare开发…

备战蓝桥杯---二分(基础)

何为二分&#xff1f;形象的说&#xff0c;就是单调函数求零点。 我们先对二分查找简单的分析一下&#xff08;主要是模板及易错点&#xff09; 1.找>x的第一个位置&#xff1a; 2.找<x的第一个位置&#xff1a; …

勒索病毒如何预防?用什么工具

勒索病毒进入服务器加密文件&#xff0c;让文件变得不能访问&#xff0c;我们经常可以见到这样的新闻&#xff0c;被勒索后没什么好的办法&#xff0c;只能交钱。 碰到言而有信的黑客还好。有时候交钱了&#xff0c;坏人也未必给你解密文件。 有什么工具可以预防这样的勒索病…