实验五 图像增强—空域滤波

一、实验目的

        了解图像平滑滤波器(均值滤波和中值滤波)和图像锐化算子(Sobel算子、Prewitt算子、Laplacian算子)在工程领域中的应用;理解图像平滑滤波器和图像锐化算子的工程应用范围;掌握图像平滑滤波器和图像锐化算子的常用算法原理;熟悉图像中常见的几种噪声模型(高斯噪声、脉冲噪声、指数噪声、瑞利噪声);根据任务要求选择图像空域增强算法并编程实现。了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。

二、实验内容

(1) 学生应当完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行(平滑)滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。

利用MATLAB软件实现空域滤波的程序:

示例:

a) 调入并显示原始图像。

b) 利用imnoise 命令在图像上加入高斯(gaussian) 噪声

c)利用预定义函数fspecial 命令产生平均(average)滤波器

                     

d)分别采用3x35x5的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;

e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。

f)利用imnoise 命令在图像上加入椒盐噪声(salt & pepper)

g)重复c)~ e)的步骤

h)输出全部结果并进行讨论。

I=imread('Lenna.jpg');J = imnoise(I,'gauss',0.02);              %添加高斯噪声J = imnoise(I,'salt & pepper',0.02);        %添加椒盐噪声  ave1=fspecial('average',3);              %产生3×3的均值模版ave2=fspecial('average',5);              %产生5×5的均值模版K = filter2(ave1,J)/255;                 %均值滤波3×3L = filter2(ave2,J)/255;                 %均值滤波5×5M = medfilt2(J,[3 3]);                  %中值滤波3×3模板N = medfilt2(J,[4 4]);                   %中值滤波4×4模板figure,imshow(I);figure,imshow(J);figure,imshow(K);figure,imshow(L);figure,imshow(M);figure,imshow(N);

(2) 学生对于给定图像,可以采用一阶梯度算子(‘prewitt’、’sobel’),二阶拉普拉斯算子进行锐化滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。

(3) 自行设计滤波器算子,验证图像滤波结果。

(4) 对比采用imfilter函数或某种卷积运算时边界选项,如’replicate’,’symmetric’,’circular’的影响。

(5) 有余力的同学可根据指导书的知识点进行相关验证实验(非必须项)。

三.实验程序、实验结果与实验分析

1.实验程序

% 读取图像 I = imread('Lenna.jpg'); I = rgb2gray(I); % 转换为灰度图像以简化处理 figure;subplot(1, 3, 1);imshow(I);title('原始图像');% 添加高斯噪声 J_gauss = imnoise(I,'gaussian',0.02); % 第二个参数为均值,第三个参数为方差subplot(1, 3, 2);imshow(J_gauss);title('添加高斯噪声后的图像');% 添加椒盐噪声 J_saltpepper = imnoise(I,'salt & pepper',0.02); subplot(1, 3, 3);imshow(J_saltpepper);title('添加椒盐噪声后的图像');% 创建滤波器 ave1 = fspecial('average',3); ave2 = fspecial('average',5); % 对高斯噪声图像进行滤波 K_gauss = filter2(ave1,J_gauss)/255;           %均值滤波3×3L_gauss= filter2(ave2,J_gauss)/255;            %均值滤波5×5M_gauss = medfilt2(J_gauss,[3 3]);             %中值滤波3×3模板N_gauss = medfilt2(J_gauss,[5 5]);             %中值滤波5×5模板% 对椒盐噪声图像进行滤波 K_saltpepper = filter2(ave1,J_saltpepper)/255;   L_saltpepper = filter2(ave2,J_saltpepper)/255; M_saltpepper = medfilt2(J_saltpepper,[3 3]); N_saltpepper = medfilt2(J_saltpepper,[5 5]); figure;subplot(2, 4, 1);imshow(K_gauss);title('高斯噪声 - 3x3 平均滤波');subplot(2, 4, 2);imshow(L_gauss);title('高斯噪声 - 5x5 平均滤波');subplot(2, 4, 3);imshow(M_gauss);title('高斯噪声 - 3x3 中值滤波');subplot(2, 4, 4);imshow(N_gauss);title('高斯噪声 - 5x5 中值滤波');subplot(2, 4, 5);imshow(K_saltpepper);title('椒盐噪声 - 3x3 平均滤波');subplot(2, 4, 6);imshow(L_saltpepper);title('椒盐噪声 - 5x5 平均滤波');subplot(2, 4, 7);imshow(M_saltpepper);title('椒盐噪声 - 3x3 中值滤波');subplot(2, 4, 8);imshow(N_saltpepper);title('椒盐噪声 - 5x5 中值滤波');% 锐化滤波prewitt_x = fspecial('prewitt');prewitt_y = prewitt_x'; % Prewitt滤波器的y方向等于x方向的转置sobel_x = fspecial('sobel');sobel_y = sobel_x'; % Sobel滤波器的y方向等于x方向的转置laplacian = fspecial('laplacian', 0.5);% 应用锐化滤波器sharp_prewitt = imfilter(double(I), prewitt_x, 'replicate') + imfilter(double(I), prewitt_y, 'replicate');sharp_sobel = imfilter(double(I), sobel_x, 'replicate') + imfilter(double(I), sobel_y, 'replicate');sharp_laplacian = imfilter(double(I), laplacian, 'replicate');% 显示锐化结果figure;subplot(1, 3, 1);imshow(mat2gray(sharp_prewitt));title('Prewitt锐化');subplot(1, 3, 2);imshow(mat2gray(sharp_sobel));title('Sobel锐化');subplot(1, 3, 3);imshow(mat2gray(sharp_laplacian));title('Laplacian锐化');% 自定义滤波器custom_filter = ones(3, 3) / 9;sharp_custom = imfilter(double(I), custom_filter,'replicate');% 显示自定义滤波器结果figure;imshow(mat2gray(sharp_custom));title('自定义滤波器滤波结果');% 对高斯噪声图像进行滤波K_gauss_replicate = imfilter(J_gauss, ave1, 'replicate');   K_gauss_symmetric = imfilter(J_gauss, ave1, 'symmetric');K_gauss_circular = imfilter(J_gauss, ave1, 'circular');figure;subplot(1, 3, 1);imshow(K_gauss_replicate);title('高斯噪声 - 3x3 平均滤波 - replicate');subplot(1, 3, 2);imshow(K_gauss_symmetric);title('高斯噪声 - 3x3 平均滤波 - symmetric');subplot(1, 3, 3);imshow(K_gauss_circular);title('高斯噪声 - 3x3 平均滤波 - circular');

2.实验结果

(1)为图像分别加入高斯噪声、椒盐噪声

(2)分别采用3x35x5的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;

(3)一阶梯度算子(‘prewitt’、’sobel’),二阶拉普拉斯算子进行锐化滤波处理结果

(4)使用自定义滤波器算子进行滤波

(5)采用imfilter函时边界选项,’replicate’,’symmetric’,’circular’的影响。

3.实验分析

(1)读取名为"Lenna.jpg"的彩色图像,并将其转换为灰度图像

I = imread('Lenna.jpg'); I = rgb2gray(I); % 转换为灰度图像以简化处理

(2)添加高斯噪声和添加椒盐噪声。

J_gauss = imnoise(I,'gaussian',0.02);J_saltpepper = imnoise(I,'salt & pepper',0.02);

(3)创建了两个平均滤波器(3x3和5x5)

ave1 = fspecial('average',3); ave2 = fspecial('average',5); 

(4)对添加了高斯噪声的图像和添加了椒盐噪声的图像分别应用了这些滤波器

% 对高斯噪声图像进行滤波 K_gauss = filter2(ave1,J_gauss)/255;         3L_gauss= filter2(ave2,J_gauss)/255;          M_gauss = medfilt2(J_gauss,[3 3]);            N_gauss = medfilt2(J_gauss,[5 5]);            % 对椒盐噪声图像进行滤波 K_saltpepper = filter2(ave1,J_saltpepper)/255;   L_saltpepper = filter2(ave2,J_saltpepper)/255; M_saltpepper = medfilt2(J_saltpepper,[3 3]); N_saltpepper = medfilt2(J_saltpepper,[5 5]); 

(5)使用Prewitt、Sobel和Laplacian滤波器进行图像的锐化

% 锐化滤波prewitt_x = fspecial('prewitt');prewitt_y = prewitt_x';sobel_x = fspecial('sobel');sobel_y = sobel_x';laplacian = fspecial('laplacian', 0.5);% 应用锐化滤波器sharp_prewitt = imfilter(double(I), prewitt_x, 'replicate') + imfilter(double(I), prewitt_y, 'replicate');sharp_sobel = imfilter(double(I), sobel_x, 'replicate') + imfilter(double(I), sobel_y, 'replicate');sharp_laplacian = imfilter(double(I), laplacian, 'replicate');

(6)自定义一个3x3的均值滤波器对图像进行滤波

custom_filter = ones(3, 3) / 9;sharp_custom = imfilter(double(I), custom_filter,'replicate');% 显示自定义滤波器结果figure;imshow(mat2gray(sharp_custom));title('自定义滤波器滤波结果');

(7)对添加了高斯噪声的图像分别应用3种不同的边界填充方式(replicate、symmetric、circular)的3x3平均滤波器

K_gauss_replicate = imfilter(J_gauss, ave1, 'replicate');   K_gauss_symmetric = imfilter(J_gauss, ave1, 'symmetric');K_gauss_circular = imfilter(J_gauss, ave1, 'circular');

四.思考题

1. 简述高斯噪声和椒盐噪声的特点。

答:(1)高斯噪声(Gaussian Noise):

高斯噪声是一种概率密度函数服从高斯分布(即正态分布)的噪声。在时域和频域中,高斯噪声都有均匀的分布特性。高斯噪声在图像上表现为像素值随机波动,但波动范围通常较小,且在整个图像上分布较为均匀。

(2)椒盐噪声(Salt and Pepper Noise):

椒盐噪声也称为脉冲噪声,它随机改变一些像素值。椒盐噪声由两种噪声组成,一种是盐噪声(salt noise),即图像中随机出现的白色点;另一种是椒噪声(pepper noise),即图像中随机出现的黑色点。椒盐噪声通常是由图像传感器、传输信道或解码处理等过程中产生的错误或损坏引起的。在视觉上,椒盐噪声表现为图像上的黑白亮点,这些点随机分布在图像中,可能破坏图像的细节信息。

2. 结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?

答:(1)平均滤波器对高斯噪声的去噪效果评价:

平均滤波器的基本原理是对图像中每个像素周围的邻域进行均值计算,对于轻度的高斯噪声,平均滤波器可以有效地模糊图像并减少噪声。然而,对于较强的高斯噪声,平均滤波器可能导致图像细节的丢失和模糊。

(2)中值滤波器对高斯噪声的去噪效果评价:

中值滤波器采用每个像素周围邻域的中值来替代像素值,这使得它对高斯噪声有很好的去噪效果,中值滤波器能够在保留图像边缘和细节的同时有效地去除高斯噪声。它对于不同尺度和强度的高斯噪声都能提供相对较好的去噪效果。

(3)平均滤波器对椒盐噪声的去噪效果评价:

平均滤波器在处理椒盐噪声时表现一般。由于椒盐噪声将一些像素值替换为最大或最小值,平均滤波器导致图像中出现模糊和残留的噪点。

(4)中值滤波器对椒盐噪声的去噪效果评价:

中值滤波器对椒盐噪声有较好的去噪效果。通过取邻域中像素的中值,中值滤波器可以有效地去除椒盐噪声,而不会对图像边缘和细节产生明显的影响。

3. 结合实验内容,定性评价滤波窗口对去噪效果的影响?

        对于平均滤波器和中值滤波器,滤波窗口的大小会直接影响去噪效果。较小的滤波窗口适用于轻度噪声和保留图像细节,但可能不能完全去除强烈的噪声。较大的滤波窗口能够更有效地去除强烈的噪声,但可能会导致图像模糊和细节丢失。

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

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

相关文章

Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例

场景 Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类: Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类_winform解析json-CSDN博客 上面使用HttpClient调用post接口时使用的HttpCon…

SQL-DCL(三)

一.DCL介绍 DCL英文全称是Data Control Language(数据库控制语言),用来管理数据库 用户,控制数据库的访问权限。 二.两个方面 1.数据库可以由那些用户访问 2.可以访问那些内容 三.DCL-管理用户 1.查询用户 USE mysql SELECT * FROM user 2.创建用户 CREATE USER…

k8s 部署 springboot 项目内存持续增长问题分析解决

写在前面 工作中遇到,请教公司前辈解决,简单整理记忆博文内容涉及一次 GC 问题的分析以及解决理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完…

Appium adb 获取appActivity

方法一(最简单有效的方法) 通过cmd命令,前提是先打开手机中你要获取包名的APP adb devices -l 获取连接设备详细信息 adb shell dumpsys activity | grep mFocusedActivity 有时获取到的不是真实的Activity 方法二 adb shell monkey -p …

从0-1实现一个前端脚手架

https://gitee.com/childe-jia/kfc-cli.git gitee完整地址 介绍 为什么需要脚手架? 脚手架本质就是一个工具,作用是能够让使用者专注于写代码,它可以让我们只用一个命令就生成一个已经配置好的项目,而不用我们再花时间去配置和安…

【排序算法】—— 快速排序

快速排序的原理是交换排序,其中qsort函数用的排序原理就是快速排序,它是一种效率较高的不稳定函数,时间复杂度为O(N*longN),接下来就来学习一下快速排序。 一、快速排序思路 1.整体思路 以升序排序为例: (1)、首先随…

CC工具箱使用指南:【相交占比分析】

一、简介 需求场景如下,有【待分析地块】和【面积占比参考】2个图层。2个图层之间存在空间上的重叠。工具的目的是为了分析出【待分析地块】的每1个图斑中,和【面积占比参考】相交的面积,以及和总面积的占比。 举一个应用场景为例&#xff0…

Idea新增Module报错:sdk ‘1.8‘ type ‘JavaSDK‘ is not registered in ProjectJdkTable

文章目录 一,创建Module报错二,原因分析三,解决方案1,点击上图的加号,把JDK8添加进来即可2,点击左侧[Project],直接设置SDK为JDK8 四,配置检查与验证 一,创建Module报错 …

【Linux】:程序地址空间

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从…

PingCAP 成为全球数据库管理系统市场增速最快的厂商

近日,Gartner 发布的《Market Share Analysis: Database Management Systems, Worldwide, 2023》(2024 年 6 月)报告显示:“2023 年全球数据库管理系统(DBMS)市场的增长率为 13.4%,略低于去年的…

LLM4Decompile——专门用于反编译的大规模语言模型

概述 论文地址:https://arxiv.org/abs/2403.05286 反编译是一种将已编译的机器语言或字节码转换回原始高级编程语言的技术。该技术用于分析软件的内部工作原理,尤其是在没有源代码的情况下;Ghidra 和 IDA Pro 等专用工具已经开发出来&#…

学习笔记——动态路由——OSPF聚合(汇总)

十一、OSPF聚合(汇总) 1、路由聚合(汇总) 路由汇总是一种重要的思想,在大型的项目中是必须考虑的一个重点事项。随着网络的规模越来越大,网络中的设备所需维护的路由表项也就会越来越多,路由表的规模也就会逐渐变大,而路由表是需…

【TB作品】51单片机 Proteus仿真 超声波LCD1602ADC0832 身高体重测量仪

00024 超声波LCD1602ADC0832 实验报告:基于51单片机的身高体重测量仪设计 背景介绍 本实验设计并实现了一个基于51单片机的身高体重测量仪。该系统利用超声波传感器测量高度,通过ADC0832模数转换芯片获取重量数据,并使用LCD1602显示屏显示…

系统测试-测试方法学习

目录 (1)等价类 (2)边界值 (3)正交:(只用于确定排列组合,不确定具体内容) (4)判定表法 (5)流程分析法 (6&#xff0…

Day05-04-持续集成总结

Day05-04-持续集成总结 1. 持续集成2. 代码上线目标项目 1. 持续集成 git 基本使用, 拉取代码,上传代码,分支操作,tag标签 gitlab 用户 用户组 项目 , 备份,https,优化. jenkins 工具平台,运维核心, 自由风格工程,maven风格项目,流水线项目, 流水线(pipeline) mavenpom.xmlta…

uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据@getIndex点击事件获取点击的地区下标和地区名

项目场景: uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据getIndex点击事件获取点击的地区下标和地区名 例如: 问题描述 官方给的文档有限,需要自己下载地图json数据然后自己渲染和编写鼠标悬浮显示内容以及获取点击地址…

在DevEco运行typeScript代码,全网详细解决执行Set-ExecutionPolicy RemoteSigned报出的错

目录 基本思路 网络推荐 本人实践 如下操作,报错: 基本思路 //在DevEco运行typeScript代码 /** * 1.保证node -v出现版本,若没有,配置环境变量(此电脑-属性-高级系统变量配置-path-粘贴路径);DevEco在local.properties中可看到当前nodejs的路径 * 2.npm install …

【Transformer】transformer模型结构学习笔记

文章目录 1. transformer架构2. transformer子层解析3. transformer注意力机制4. transformer部分释疑 图1 transformer模型架构 图2 transformer主要模块简介 图3 encoder-decoder示意图N6 图4 encoder-decoder子层示意图 1. transformer架构 encoder-decoder框架是一种处理NL…

strcpy,srtcmp,strlen函数漏洞利用

strcpy,srtcmp,strlen函数漏洞利用 strcpy strcpy函数用于将字符串复制到另一个指针指向的空间中,遇到空字符 **b’x\00’**时停止,: 所以可以利用 strcpy不检查缓冲区 的漏洞(构造的字符串要以\0结尾),…

Android平台崩溃和 ANR 问题进行符号化解析、解析崩溃日志的内存地址

使用Android Logcat Stacktrace Utility | Android Logcat | 1.2.3 1.设置so库路径 2.打开Stacktrace Utility工具 3.在Original粘贴报错内存地址 4.点击Resolve Stacktraces,就会解析出内存地址 如果是红色,解析失败了,缺少原生so库,可以在第一步添加so库文件再次尝试…