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

news2024/11/23 12:25:28

一、实验目的

        了解图像平滑滤波器(均值滤波和中值滤波)和图像锐化算子(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×3

L = filter2(ave2,J)/255;                 %均值滤波5×5

M = 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×3

L_gauss= filter2(ave2,J_gauss)/255;            %均值滤波5×5

M_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;         3

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

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

相关文章

[终端安全]-4 移动终端之硬件架构安全

1 移动终端硬件架构 上图图展示了典型移动终端硬件架构,包括应用处理器(AP)、基带处理器(BP)以及各类共享组件和外设,所有组件通过AXI总线(和APB桥)连接在一起。以下分别介绍基于整…

【Linux进阶】文件系统6——理解文件操作

目录 1.文件的读取 1.1.目录 1.2.文件 1.3.目录树读取 1.4.文件系统大小与磁盘读取性能 2.增添文件 2.1.数据的不一致(Inconsistent)状态 2.2.日志式文件系统(Journaling filesystem) 3.Linux文件系统的运行 4、文件的删…

69.WEB渗透测试-信息收集- WAF、框架组件识别(9)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:68.WEB渗透测试-信息收集- WAF、框架组件识别(8) 有无waf存在&am…

秋招提前批面试经验分享(下)

⭐️感谢点开文章👋,欢迎来到我的微信公众号!我是恒心😊 一位热爱技术分享的博主。如果觉得本文能帮到您,劳烦点个赞、在看支持一下哈👍! ⭐️我叫恒心,一名喜欢书写博客的研究生在读…

【MySQL】4.MySQL 的数据类型

MySQL 的数据类型 一.数据类型分类在这里插入图片描述二.注意点1.char VS varchar2.datetime VS timestamp3.enum 和 set 的使用方法 一.数据类型分类 二.注意点 1.char VS varchar char 的意义是直接开辟固定大小的空间,浪费磁盘空间,但是效率高varcha…

解决GPT-4o耗电难题!DeepMind新算法训练效率提升13倍,能耗降低10倍!

目录 01 有更好的解决方案吗? 02 从“超级batch”中筛选数据 03 技术介绍 04 实验结果 生成可学习batch 谷歌DeepMind推出的新算法JEST,将LLM训练的迭代次数减少了13倍,计算量降低了10倍,有望重塑AI未来。GPT-4o早已成为耗能…

下载,连接mysql数据库驱动(最详细)

前言 本篇博客,我讲讲如何连接数据库?我使用mysql数据库举例。 目录 下载对应的数据库jar 包 百度网盘 存有8.4.0版本压缩包:链接:https://pan.baidu.com/s/13uZtXRmuewHRbXaaCU0Xsw?pwduipy 提取码:uipy 复制这…

使用Ubuntu 22.04安装Frappe-Bench【二】

系列文章目录 第一章 使用VMware创建Ubuntu 22.04【一】 文章目录 系列文章目录前言什么是Frappe-Bench?使用安装ERPNext能实现什么效果? 官网给了一个说明 一、使用Ubuntu 22.04安装Frappe-Bench一、安装要求二、安装命令三、 可能出现问题 总结 前言 …

GESP C++一级真题

PDF图片1-7 点赞❤️关注😍收藏⭐️ 互粉必回🙏🙏🙏

对BSV区块链的曼达拉网络通俗易懂的解释

​​发表时间:2023年6月15日 BSV区块链正在引入“曼达拉”升级,使BSV区块链网络的拓扑结构能够适配Teranode,适配这个可以大幅扩容的节点软件。BSV区块链上曼达拉网络的概念并不会改变整个系统的核心规则;相反,它能够引…

基于SSM+JSP的KTV点歌系统(带1w+文档)

基于SSMJSP的KTV点歌系统(带1w文档) 开发一个KTV点歌系统可以解决不利于线下点歌的问题,同时管理员可以利用网络对KTV点歌系统信息进行管理,设计的网站保证信息的完整安全,这样才能提高工作效率,保证系统安全正常的运行。 项目简介…

公众号文章阅读20w+?你猜腾讯给了我多少钱?

前两天写的一篇文章, 《1000T的文件怎么能快速从南京传到北京?最佳方案你肯定想不到》 一不小心被平台推荐,阅读量居然达到了20w(这篇收益在文章底部!)。 留言也是相当精彩 说来惭愧,这篇文章我…

【网络安全】实验三(基于Windows部署CA)

一、配置环境 打开两台虚拟机,并参照下图,搭建网络拓扑环境,要求两台虚拟的IP地址要按照图中的标识进行设置,并根据搭建完成情况,勾选对应选项。注:此处的学号本人学号的最后两位数字,1学号100…

Nestjs基础

一、创建项目 1、创建 安装 Nest CLI(只需要安装一次) npm i -g nestjs/cli 进入要创建项目的目录,使用 Nest CLI 创建项目 nest new 项目名 运行项目 npm run start 开发环境下运行,自动刷新服务 npm run start:dev 2、…

【Unity】RPG2D龙城纷争(八)寻路系统

更新日期:2024年7月4日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、寻路系统二、寻路规则(角色移动)三、寻路规则(角色攻击)四、角色移动寻路1.自定义寻路规则2.寻…

基于ROS的智能网联车远程交互软件,全UI无需记忆指令,剑指核心原理。

基于ROS的智能网联车远程交互软件,全UI无需记忆指令,剑指核心原理。 服务于中汽恒泰,伟大的项目,希望看官点赞,谢谢~~ 进程(节点)列表化,参数面板化,实现快速机器人配置…

52-5 内网代理2 - LCX端口转发(不推荐使用LCX)

环境搭建: 本地开3台虚拟机:kali(必须)、windows2012与2008 (可换成其他windows虚拟机) kali - 网络配置成桥接模式 windows2012 - 设置两个网卡,NAT与桥接模式 注意:windows2012要关闭防火墙,要不然其他主机ping不通 关闭防火墙后再开启远程桌面连接 windwos20…

计算机网络体系结构详解:协议与分层

在学习计算机网络时,理解网络协议与分层体系结构是至关重要的。本文将详细介绍这些概念,帮助基础小白快速入门。 1. 什么是网络协议 网络协议是计算机网络中用于数据交换的规则和标准。这些规则规定了数据格式、时序以及发送和接收数据时的动作。网络协…

【2024_CUMCM】数据预处理、数据分析、数据可视化

目录 2023-c题-问题1 问题分析 偏度 峰度 箱线图 读图 重采样、降采样、升采样 重采样 降采样 升采样 解题代码 2023-c题-问题1 问题分析 问题说白了就是探究品类和销售量这两个数据他们各自内在联系,根据题意,我们先进行数 据预处理&#…

归并排序的实现(递归与非递归)

概念 基本思想:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使…