当前位置: 首页 > news >正文

实验三:图像的平滑滤波

目录

一、实验目的

二、实验原理

1. 空域平滑滤波

2. 椒盐噪声的处理

三、实验内容

四、源程序和结果

(1) 主程序(matlab)

(2) 函数GrayscaleFilter

(3) 函数MeanKernel

(4) 函数MedFilter

五、结果分析

1. 空域平滑滤波

2. 椒盐噪声的处理


 

一、实验目的

  1. 熟练掌握空域平滑滤波的原理、方法及其MATLAB实现。
  2. 分析模板大小对空域平滑滤波的影响,线性和非线性方法对空域平滑滤波增强效果的影响,比较不同滤波器的处理效果,分析其优缺点。

二、实验原理

1. 空域平滑滤波

        空域平滑滤波是一种基本的图像处理技术,旨在降低图像中的噪声并模糊图像细节。其原理是基于图像中像素值的局部平均化或加权平均化来实现。

        具体来说,平滑滤波器在图像上滑动,对每个像素周围邻域内的像素进行平均操作。这通常涉及将滤波器覆盖的像素值进行加权平均,得到一个新的像素值来代替原始像素值。平均操作有助于消除高频噪声,并使图像变得更加平滑。

        在该实验中,用到的平滑滤波器为均值滤波器。

        均值滤波器是一种常见的空域平滑滤波器,用于图像处理中的噪声抑制和平滑处理。其原理是在图像中滑动一个固定大小的滤波窗口,对窗口中的像素值进行平均操作,用平均值替代中心像素的值,适用于去除轻度噪声和平滑图像。

        一般来说,对同一幅图像进行均值滤波器处理,尺寸越大的均值滤波器处理后的图像越模糊,设置分辨不出图像内容。但是,对于包含大量噪声或细节的图像,均值滤波器可能会导致图像过度模糊,因为它平均化了整个邻域内的像素。

2. 椒盐噪声的处理

        对于包含大量噪声或细节的图像,比如含有“椒盐噪声”的图像,往往会采用中值滤波器。中值滤波器是一种非线性滤波器,在图像处理中常用于去除椒盐噪声或斑点噪声。与均值滤波器不同,中值滤波器不是对图像像素进行加权平均,而是将图像区域内像素值排序后选取中间值(中值)作为当前像素的新值。

        虽然中值滤波器在处理去除椒盐噪声上有优势,但是,中值滤波器的处理速度较慢,特别是在处理大尺寸窗口或高分辨率图像时。另外,对于高斯噪声等连续性噪声,中值滤波器的去噪效果可能不如均值滤波器等线性滤波器。

三、实验内容

  1. 选择一幅图像,分别选择两种尺寸的算术平均模板进行均值滤波模糊处理,并对不同尺寸的滤波器模板操作后的图像进行比较。
  2. 选择一幅图像,对图像加入椒盐噪声,检验两种滤波模板(3×3平均模板和3×3中值滤波器)对噪声的滤波效果。

四、源程序和结果

(1) 主程序(matlab)

clear;close;% 读取彩色图片
img = imread('lena.jpg');
grayscale = rgb2gray(img); % 读取灰度图% 显示原始图片
subplot(2, 2, 1);
imshow(grayscale);
title('原始图片');% 1) 分别选择 3×3,7×7,25×25 等平均模板进行均值滤波
filter_sizes = [3, 7, 25];
for i = 1:numel(filter_sizes)filter_size = MeanKernel(filter_sizes(i));filtered_grayscale = GrayscaleFilter(grayscale, filter_size);% 显示滤波后的图片subplot(2, 2, i+1);imshow(filtered_grayscale);title(['均值滤波 ',num2str(filter_sizes(i)), 'x', num2str(filter_sizes(i))]);
end% 2) 对图像加入椒盐噪声
noisy_grayscale = imnoise(grayscale, 'salt & pepper', 0.1);% 显示加入噪声的图片
figure;
subplot(2, 2, 1);
imshow(grayscale);
title('原始图片');% 显示加入噪声的图片
subplot(2, 2, 2);
imshow(noisy_grayscale);
title('添加椒盐噪声');% 使用3x3平均模板进行滤波
avg_filtered_grayscale = GrayscaleFilter(noisy_grayscale, MeanKernel(3));
subplot(2, 2, 3);
imshow(avg_filtered_grayscale);
title('图像 3x3 均值滤波');% 使用3x3中值滤波器进行滤波
med_filtered_grayscale = MedFilter(grayscale);subplot(2, 2, 4);
imshow(med_filtered_grayscale);
title('图像 3x3 中值滤波');

(2) 函数GrayscaleFilter

% 功能:输入灰度图和滤波核,输出滤波图像
function filtered_image = GrayscaleFilter(gray_image, filter_kernel)% 读取行列值[rows, cols] = size(gray_image);[krows, kcols] = size(filter_kernel);% 计算边界填充(零填充)pad_rows = floor(krows/2);pad_cols = floor(kcols/2);padded_image = zeros(rows + 2*pad_rows, cols + 2*pad_cols);padded_image(pad_rows+1:end-pad_rows, pad_cols+1:end-pad_cols) = gray_image;% 对图像进行滤波filtered_image = zeros(rows, cols);for i = 1:rowsfor j = 1:colspatch = padded_image(i:i+krows-1, j:j+kcols-1);filtered_image(i, j) = sum(patch(:) .* filter_kernel(:)); % 卷积运算endend% 还原到0~255的灰度像素范围filtered_image = uint8(filtered_image);
end

(3) 函数MeanKernel

function mean_filter = MeanKernel(x)% 定义均值滤波器mean_filter = 1/(x*x) * ones(x, x);
end

(4) 函数MedFilter

% 功能:3*3中值滤波器滤波
function filtered_image = MedFilter(gray_image)
[m, n] = size(gray_image);
filtered_image = gray_image;
for i = 2:m-1for j = 2:n-1% 获取3x3邻域内的像素值neighborhood = gray_image(i-1:i+1, j-1:j+1);% 计算邻域内像素值的中值作为当前像素值filtered_image(i, j) = median(neighborhood(:));end
end

五、结果分析

1. 空域平滑滤波

        如图一所示,均值滤波器滤波后的图像会变模糊,且会滤波核的大小的增大而变得更模糊。

6db1412e857a43cda01cc4459c4dacdf.jpeg

图一 均值滤波

2. 椒盐噪声的处理

        如图二所示,布满椒盐噪声的图片整幅图像充满了黑白点。对于这类噪声的处理,使用均值滤波器滤波后的图像,得益于均值滤波器的模糊效果,黑白点确实没那么明显突出了,但是效果还是不尽人意,一方面噪声又没完全剔除,另一方面原本图像的细节也被模糊了。而观察中值滤波后的图像,可以惊讶的发现,滤波后的图像基本上和原图一样,看不出什么差别出来。由此空间,中值滤波器对椒盐噪声的剔除有奇效,十分适合这种场景。

2db3cdbc3ac642c29189e82a884e5e98.jpeg

图二 椒盐噪声处理

 

相关文章:

实验三:图像的平滑滤波

目录 一、实验目的 二、实验原理 1. 空域平滑滤波 2. 椒盐噪声的处理 三、实验内容 四、源程序和结果 (1) 主程序(matlab) (2) 函数GrayscaleFilter (3) 函数MeanKernel (4) 函数MedFilter 五、结果分析 1. 空域平滑滤波 2. 椒盐噪声的处理…...

VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案

前言 在做打印功能的时候,以前大部分客户端都是用C#做的,静默打印(也就是不弹出打印对话框)比较简单。 但是使用浏览器作为客户端,静默打印(也就是不弹出打印对话框)做起来就比较困难。困难的…...

大数据hive表和iceberg表格式

iceberg: https://iceberg.apache.org/ iceberg表,是一种面向大型分析数据集的开放表格式,旨在提供可扩展、高效、安全的数据存储和查询解决方案。它支持多种存储后端上的数据操作,并提供 ACID 事务、多版本控制和模式演化等特性&#xff0c…...

flutter 手写 TabBar

前言: 这几天在使用 flutter TabBar 的时候 我们的设计给我提了一个需求: 如下 Tabbar 第一个元素 左对齐,试了下TabBar 的配置,无法实现这个需求,他的 配置是针对所有元素的。而且 这个 TabBar 下面的 滑块在移动的时…...

一个引发openssl崩溃问题案例

1 背景 最近用libevent写了一个https代理功能,在调研的时候,遇到了一个项目用到了本地多个openssl库引发的ssl握手崩溃问题。 2 开发环境 项目库版本号依赖项libeventlibevent-2.1.8-stableopenssl 1.1openssl1.0u / 1.1.1w / 3.3.1...... 3 问题现象…...

如何申请抖音本地生活服务商?3种方式优劣势分析!

随着多家互联网大厂在本地生活板块的布局力度不断加大,以抖音为代表的头部互联网平台的本地生活服务商成为了创业赛道中的大热门,与抖音本地生活服务商怎么申请等相关的帖子,更是多次登顶创业者社群的话题榜单。 就目前的市场情况来看&#x…...

【项目-轻量级Web Server lock类】

信号同步机制封装 Lock类信号量——sem类初始化信号量sem_init()销毁信号量sem_destory()对信号量进行P操作sem_wait()对信号进行V操作sem_post() 互斥锁——locker类初始化互斥量pthread_mutex_init()销毁互斥量pthread_mutex_destroy()给互斥锁加锁pthread_mutex_lock()解锁互…...

数据分析_计划

我做大数据的有6年了,以前都是用sql,或者spark,java,scala,python去做。现在这些平台搭建、维护、大多数都是搭建一次就完了,而且维护大多是大厂直接用云平台去做。ETL也是就做一次就够了,我们公…...

LDAPWordlistHarvester:基于LDAP数据的字典生成工具

关于LDAPWordlistHarvester LDAPWordlistHarvester是一款功能强大的字典列表生成工具,该工具可以根据LDAP中的详细信息生成字典列表文件,广大研究人员随后可以利用生成的字典文件测试目标域账号的非随机密码安全性。 工具特征 1、支持根据LDAP中的详细信…...

dhtmlx-gantt甘特图数据展示

官网文档&#xff1a;甘特图文档 实现效果&#xff1a; 首先需要下载 dhtmlx-gantt组件 npm i dhtmlx-gantt //我项目中使用的是"dhtmlx-gantt": "^8.0.6" 这个版本&#xff0c;不同的版本api或是文档中存在的方法稍有差异 界面引用 <template>&l…...

《云原生安全攻防》-- 容器攻击案例:Docker容器逃逸

当攻击者获得一个容器环境的shell权限时&#xff0c;攻击者往往会尝试进行容器逃逸&#xff0c;利用容器环境中的错误配置或是漏洞问题&#xff0c;从容器成功逃逸到宿主机&#xff0c;从而获取到更高的访问权限。 在本节课程中&#xff0c;我们将详细介绍一些常见的容器逃逸方…...

初学者指南:如何搭建和配置 Nginx 服务器

初学者指南&#xff1a;如何搭建和配置 Nginx 服务器 Nginx 是一个高性能的 HTTP 和反向代理服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。本文将详细介绍如何在 Linux 上安装、配置和管理 Nginx 服务器。 一、安装 Nginx Nginx 可以安装在多种操作系统上&#x…...

[AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性

目录 背景描述 用浏览器访问&#xff0c;正常返回 ​编辑 AHK v2官方示例源代码 AHK v2运行结果报错(0x80092004) 找不到对象或属性 用thqby大佬的WinHttpRequest.ahk库测试报错 0x80092004 找不到对象或属性 附&#xff1a; 用Apifox访问&#xff0c;也正常返回 AHK v1 …...

`speech_recognition` 是一个流行的库

在Python中&#xff0c;speech_recognition 是一个流行的库&#xff0c;用于从各种来源&#xff08;如麦克风、文件等&#xff09;进行语音识别。以下是您提到的技术名称和相应的Python代码示例。 技术名称 语音识别&#xff08;Speech Recognition&#xff09;&#xff1a;这…...

MFC Ribbon菜单 - 中英文实时切换方法

简介 最近在搞一个老外的项目&#xff0c;本来谈的好好的&#xff0c;纯英文界面。项目接近尾声了&#xff0c;又提出了中英文实时切换的新需求&#xff0c;没办法就只能想办法&#xff0c;毕竟客户最大嘛。 实现方法 还好本来的ribbon英文菜单不复杂&#xff0c;就用纯C编码…...

MFC程序创建word,创建表格,写入数据

文章目录 1、MFC程序功能&#xff1a;2、MFC程序实现2.1 创建项目2.2 添加word操作类2.3 添加word资源2.4 编写代码&#xff0c;实现将数据写入到word2.5 运行程序、验证功能3、工程代码下载 1、MFC程序功能&#xff1a; 创建word文档&#xff1b;向文档中写入字符串&#xff…...

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板

复旦微电子是国内集成电路设计行业的领军企业之一&#xff0c;早在2000年就在香港创业板上市&#xff0c;成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…...

centos下使用yum安装keepalived工具

1、安装如下rpm包&#xff0c;不安装此包在装keepalived时会报错 mkdir keepalived_rpm cd keepalived_rpm/ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-libs-compat-8.0.36-1.el7.x86_64.rpm 2、使用yum进行keepalived的安装 yum -y install keepal…...

无人机图像目标检测

本仓库是人工智能课程的课程作业仓库&#xff0c;主要是完成无人机图像目标检测的任务&#xff0c;我们对visdrone数据集进行了处理&#xff0c;在yolo和ssd两种框架下进行了训练和测试&#xff0c;并编写demo用于实时的无人机图像目标检测。 requirements依赖&#xff1a; ss…...

JSqlParser 解析 sql

目录 前言一、Maven依赖二、获取sql中的表名三、获取sql中的具体信息 前言 JSqlParser是一个 SQL 语句解析器。它将 SQL 语句转换为可遍历的 Java 类层次结构&#xff0c;可以方便的用代码对 SQL 语句进行解析&#xff0c;修改等操作。 官网 api 文档和 github 地址如下&…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...