【实验报告】实验二 图像空间域频率域滤波

news2024/9/25 7:23:17

一.实验目的:

1. 模板运算是空间域图象增强的方法,也叫模板卷积。

(1)平滑:平滑的目的是模糊和消除噪声。平滑是用低通滤波器来完成,在空域中全是正值。

(2)锐化:锐化的目的是增强被模糊的细节。锐化是用高通滤波器来完成,在空域中,接近原点处为正,在远离原点处为负。

2.掌握二维快速傅里叶变换(FFT)的实现,对频谱图像可视化操作。

3.了解频域滤波的内容,学会如何在频域中直接生成滤波器,包括平滑频域滤波器——低通滤波器、锐化频域滤波器——高通滤波器,并利用生成的滤波器对输入图像进行频域处理。

4.掌握绘制三维可视化滤波器图形的方法。

二.实验内容:

(1)利用线性空间滤波(均值滤波)对一幅图象进行平滑,验证模板尺寸和滤波参数对图象的模糊效果的影响。

(2)利用非线性空间滤波器(中值滤波)对一幅噪声图象(椒盐噪声)进行平滑去噪,同时检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×3中值滤波器)对噪声的滤波效果。

(3)利用线性空间滤波器,对灰度图象分别利用二阶标准Laplacian算子和对角线Laplacian算子对其进行锐化操作,增强图像边缘,验证检测效果。

(4)实现二维快速傅里叶变换,以图像形式显示傅里叶频谱。

(5)利用已给出的自定义的M函数,建立频域滤波器的传递函数H(u, v)

(6)绘制滤波器传递函数H(u, v)三维图形,并以图像形式显示滤波器。

(7)对输入图像进行频域滤波处理。

三.实验原理:

1.线性空间滤波

函数imfilter来实现线性空间滤波,语法为:

            g = imfilter(f, w, filtering_mode, boundary_options, size_options)

其中,f是输入图像,w为滤波模板,g为滤波结果

filtering_mode用于指定在滤波过程中是使用相关运算(‘corr’)还是卷积运算(‘conv’),相关就是按模板在图像上逐步移动运算的过程,卷积则是先将模板旋转180度,再在图像上逐步移动的过程,显然,若模板中心对称,则相关和卷积运算是相同操作,默认为相关运算;

boundary_options用于处理边界充零问题,默认为赋零,若该参数为’replicate’表示输出图像边界通过复制原图像边界的值来扩展;

size_options可以是’full’或’same’,默认为’same’,表示输出图像与输入图像的大小相同。

 

均值滤波

>>w = ones(31)/(31*31)  %建立一个31×31大小的均值滤波器

>>g1 = imfilter(f, w)  %相关运算,默认边界充零

>>imshow(g1)

>>g2 = imfilter(f, w, ‘replicate’)  

>>figure, imshow(g2)

实验报告

131×31均值滤波模板并分别采用参数boundary_options默认值和‘replicate’对图像test_pattern进行平滑处理观察不同参数对滤波效果的影响。

 

>> f=imread('D:\ALLDOWNLOAD\实验二图像\实验二图像\test_pattern.bmp');

%将图像读入MATLAB环境

w = ones(31)/(31*31)  %建立一个31×31大小的均值滤波器

g1 = imfilter(f, w)  %相关运算,默认边界充零

imshow(g1)

g2 = imfilter(f, w, 'replicate') %采用参数replicate进行平滑处理 

figure, imshow(g2)

3×35×57×7均值滤波模板对图像lena平滑处理观察不同模板尺寸对滤波效果的影响。

3×3

>> f=imread('D:\ALLDOWNLOAD\实验二图像\实验二图像\lena.bmp');

w = ones(3)/(3*3)  %建立一个3×3大小的均值滤波器

g1 = imfilter(f, w)  %相关运算,默认边界充零

imshow(g1)

g2 = imfilter(f, w, 'replicate')  

figure, imshow(g2)

 

5×5

>> f=imread('D:\ALLDOWNLOAD\实验二图像\实验二图像\lena.bmp');

w = ones(5)/(5*5)  %建立一个5×5大小的均值滤波器

g1 = imfilter(f, w)  %相关运算,默认边界充零

imshow(g1)

g2 = imfilter(f, w, 'replicate')  

figure, imshow(g2)

 

7×7

>> f=imread('D:\ALLDOWNLOAD\实验二图像\实验二图像\lena.bmp');

w = ones(7)/(7*7)  %建立一个7×7大小的均值滤波器

g1 = imfilter(f, w)  %相关运算,默认边界充零

imshow(g1)

g2 = imfilter(f, w, 'replicate')  

figure, imshow(g2)

 

实验报告

  1. 3×35×57×7邻域大小的中值滤波对椒盐噪声污染的图像board进行去噪平滑处理。观察不同邻域大小对中值滤波效果的影响。

3×3

>> g=imread('D:\ALLDOWNLOAD\实验一图像\实验一图像\board.bmp');

fn = imnoise(g, 'salt & pepper', 0.2)

 %对图像f加入椒盐噪声,其中黑点和白%点出现的概率为0.2

imshow(fn)

gm = medfilt2(fn)  %默认使用一个大小为3×3的邻域来计算中值,并用0来

填充图像的边界

figure, imshow(gm)

gms = medfilt2(fn, 'symmetric')%按照镜像反射方式对称地沿延其边界扩展

figure, imshow(gms)

 

5×5

>> g=imread('D:\ALLDOWNLOAD\实验一图像\实验一图像\board.bmp');

fn = imnoise(g, 'salt & pepper', 0.2)

 %对图像f加入椒盐噪声,其中黑点和白%点出现的概率为0.2

imshow(fn)

gm = medfilt2(fn,[5 5])  

%默认使用一个大小为5×5的邻域来计算中值,并用0来

%填充图像的边界

figure, imshow(gm)

gms = medfilt2(fn, [5 5],'symmetric')%按照镜像反射方式对称地沿延其边界扩展

figure, imshow(gms)

 

7×7

>> g=imread('D:\ALLDOWNLOAD\实验一图像\实验一图像\board.bmp');

fn = imnoise(g, 'salt & pepper', 0.2)

 %对图像f加入椒盐噪声,其中黑点和白%点出现的概率为0.2

imshow(fn)

gm = medfilt2(fn,[7 7])  

%默认使用一个大小为7×7的邻域来计算中值,并用0来

%填充图像的边界

figure, imshow(gm)

gms = medfilt2(fn, [7 7],'symmetric')%按照镜像反射方式对称地沿延其边界扩展

figure, imshow(gms)

 

实验报告

  1. 分别用标准拉普拉斯模板和对角线拉普拉斯模板对图像moon进行边缘增强,并与原图像叠加运算,观察并对比增强后的效果。

f=imread('D:\ALLDOWNLOAD\实验一图像\实验一图像\moon.bmp');

w4 = fspecial('laplacian', 0) %建立一个标准拉普拉斯模板

w8 = [1 1 1; 1 -8 1; 1 1 1]  %手工指定滤波器,建立一个对角线拉普拉斯

%模板

g4 = imfilter(f, w4, 'replicate')

figure, imshow(g4)

g4g = f - g4

figure, imshow(g4g)

g8 = imfilter(f, w8, 'replicate')

figure, imshow(g8)

g8g = f - g8

figure, imshow(g8g)

 

实验报告

4. 对图像image2.bmp, image3.bmp二选一和house四选一进行傅里叶变换

 

 

>> f=imread('D:\ALLDOWNLOAD\实验二图像\实验二图像\image2.bmp');

y=imread('D:\ALLDOWNLOAD\实验二图像\实验二图像\house3.bmp');

%读取两个图像

F = fft2(f);

S = abs(F);%使用fft2函数对这两个图像执行傅立叶变换

figure,imshow(S, [ ]);%使用imshow将生成的傅立叶变换显示为图像

Fc = fftshift(F);%对傅立叶变换进行移位,使低频分量居中并且所得到的傅立叶

%变换被存储在Fc中

Sc = abs(Fc);%计算Fc的绝对值并将其存储在Sc中

figure, imshow(Sc, [ ]);%使用[]设置显示范围。

ScL = log(1 + Sc);%计算1+Sc的对数并将其存储在ScL中

figure, imshow(ScL, [ ]);

g=im2gray(y);%若imread为三维图像,用im2gray处理第二个图像

G = fft2(g);

S1 = abs(G);

figure,imshow(S1, [ ]);

Gc = fftshift(G);

Sc1 = abs(Gc);

figure, imshow(Sc1, [ ]);

ScL1 = log(1 + Sc1);

figure, imshow(ScL1, [ ]);

>>

实验报告

5. 生成高斯低通滤波器高通滤波器,绘制其三维透视图生成拉普拉斯滤波器,并尝试绘制其三维透视图

>> H1 = fspecial('gaussian',[500 500],50);%生成标准偏差为50的500x500高斯滤波器。

mesh(H1);

figure, mesh(H1);%生成高斯低通滤波器的网格图。

H2=1-H1;%将H1高斯核心转换为高斯高通滤波器

mesh(H2);

figure, mesh(H2);%生成高斯高通滤波器的网格图。

H3 = fspecial('laplacian',0.5); %生成具有0.5的比例的拉普拉斯滤波器。

mesh(H3);

figure, mesh(H3);%生成拉普拉斯滤波器的网格图。

 

高斯低通滤波器

>> H1 = fspecial('gaussian',[500 500],50);%生成标准偏差为50的500x500高斯滤波器。

H2 = fspecial('laplacian',0.5); %生成具有0.5的比例的拉普拉斯滤波器。

mesh(H1);  

figure, mesh(H1(1:10:500, 1:10:500));%生成高斯滤波器的网格图。

axis([0 50 0 50 0 1]);%生成高斯滤波器的新网格图,但分辨率降低(仅每10点绘制一次)。

%轴限制也设置为仅显示过滤器的中心区域。

figure, imshow(H1); %使用“imshow”函数将高斯滤波器显示为图像。

GLPFc = fftshift(H1); %通过进行傅立叶变换并将低频移到频谱的中心来将GLPF应用于图像。

mesh(GLPFc);  

figure, mesh(GLPFc(1:10:500, 1:10:500));%生成移位滤波器的网格图。

axis([0 50 0 50 0 1]);%生成分辨率降低的移位滤波器的新网格图。

figure, imshow(GLPFc);  %使用“imshow”将移位后的滤波器显示为图像。

 

斯高通滤波器

>> H1 = fspecial('gaussian',[500 500],50);%生成标准偏差为50的500x500高斯滤波器。

H2=1-H1;%将H1高斯核心转换为高斯高通滤波器

mesh(H2);  %滤波器的三维透视图

figure, mesh(H2(1:10:500, 1:10:500));%生成高斯滤波器的网格图。

axis([0 50 0 50 0 1]);%生成高斯滤波器的新网格图,但分辨率降低(仅每10点绘制一次)。

%轴限制也设置为仅显示过滤器的中心区域。

figure, imshow(H2);  %以图像形式显示滤波器

GHPFc = fftshift(H2);  %频率矩形中心化将GHPF应用于图像。

mesh(GHPFc);  

figure, mesh(GHPFc(1:10:500, 1:10:500));%生成移位滤波器的网格图。

axis([0 50 0 50 0 1]);%生成分辨率降低的移位滤波器的新网格图。

figure, imshow(GHPFc);  %使用“imshow”将移位后的滤波器显示为图像。

 

拉普拉斯滤波器

>> H2 = fspecial('laplacian',0.5); %生成具有0.5的比例的拉普拉斯滤波器。

mesh(H2);

figure, mesh(H2);%生成拉普拉斯滤波器的网格图。

axis([0 50 0 50 0 1]);%生成拉普拉斯滤波器的新网格图,但分辨率降低(仅每10点绘制一次)。

%轴限制也设置为仅显示过滤器的中心区域。

figure, imshow(H2);  %以图像形式显示滤波器

LAPFc = fftshift(H2);  %频率矩形中心化将LAPF应用于图像。

mesh(LAPFc);  

figure, mesh(LAPFc);%生成移位滤波器的网格图

axis([0 50 0 50 0 1]);%生成分辨率降低的移位滤波器的新网格图。

figure, imshow(LAPFc);  %使用“imshow”将移位后的滤波器显示为图像。

 

实验报告

6. 针对lena或test_pattern,用gaussianlaplacian分别进行滤波,设置不同滤波器大小和截止频率,比较滤波图像外观。

>> f=imread('D:\ALLDOWNLOAD\实验二图像\实验二图像\lena.bmp');

H1=fspecial('gaussian',[50 50],50);

g1=imfilter(f,H1);

imshow(g1);

H2=fspecial('laplacian',0.5);

g2=imfilter(f,H2);

figure,imshow(g2);

 

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

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

相关文章

【超全总结】集成环信消息推送注意事项(华为、oppo、vivo等)

环信即时通讯 IM 支持集成第三方厂商的消息推送服务,为 Android 开发者提供低延时、高送达、高并发、不侵犯用户个人数据的离线消息推送服务。 当客户端应用进程被关闭等原因导致用户离线,环信即时通讯 IM 服务会通过第三方厂商的消息推送服务向该离线用…

鸿蒙Service Ability的前世今生--进阶篇

二、SA的配置 ​ SA的运行需要配合多个配置项,此节专门对此进行说明。 ​ OpenHarmony中SA一般由两个配置文件和一个so组成。上一章节已介绍了生成so中代码。此节描述下另外两个配置文件(.cfg或.rc、xml)。 ​ SA的启动一般采用.cfg或.rc .xml libxxx.z.so方式…

Python 编程必不可少的unittest测试框架

一段表面看起来平平无常的代码,很可能暗藏很多bug无法一眼看透,没有经过测试的代码是不可靠的代码。上一篇讲过pytest测试框架这次我们换个框架。 unittest 是一个单元测试框架,单元测试完成对一个模块、一个类或一个函数的运行结果进行检验…

SpringSecurity之注销与自动登录

前言 前面我们讲解了用户的登录以及用户授权的过程。今天我们看一下,系统中常用的注销与自动登录各功能! 注销操作 注销操作,首先需要在我们的配置类中添加上我们的注销路径。主要配置详见下方标红处代码,标记了退出的路径以及…

java轻量级框架MiniDao的详解

MiniDao是一款基于Java语言开发的轻量级持久层框架,它的目标是简化数据库操作流程,提高开发效率,减少代码量。MiniDao采用简单的注解配置方式,可以很容易地与Spring等常用框架集成使用。 MiniDao的主要特点包括: 简单…

浙大数据结构网课第一周入门

题目详情 Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continuous subsequence is defined to be { Ni​, Ni1​, ..., Nj​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For …

RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)RBF神经网络训练部分

1.清空变量 close all clear,clc 2.导入数据用以RBF神经网络训练,一共14组,训练数据P(第一列为电压值,第二列为SOC值,第三列为电流值。),并将所有数据存储在变量PP中,所有电压数据…

蓝桥杯:优秀的拆分

蓝桥杯:优秀的拆分https://www.lanqiao.cn/problems/801/learning/ 目录 题目描述 输入描述 输出描述 输入输出样例 输入 输出 输入 输出 题目分析(位运算) AC代码(Java) 题目描述 一般来说,一个正整数可以拆…

【】:addService 和 getService

一次完整的 Binder IPC 通信过程通常是这样: 首先 Binder 驱动在内核空间创建一个数据接收缓存区; 接着在内核空间开辟一块内核缓存区,建立内核缓存区和内核中数据接收缓存区之间的映射关系,以及内核中数据接收缓存区和接收进程用…

无线传感器网络硬件设计简介

无线传感器网络硬件设计简介 无线传感器网络因其巨大的应用前景越来越受到学术界和工业界的广泛关注。本文介绍了无线传感器网络节点的体系结构,分析比较了国内外当前典型的硬件平台,重点讨论了目前无线传感器网络节点常用的处理器、射频芯片、电源和传…

孩子为什么不能玩抖音精彩回答,共勉

2 可是,为什么我的同学、哥哥姐姐…… 反正身边好多人都在玩? 我不知道你父母有没有告诉你这个道理: 你把时间花在哪儿, 你就会成为什么样的人。 他们爱玩,是因为两个字: 空虚。 想象一下&#xff…

02、Cadence使用记录之创建元器件---原理图和封装(OrCAD Capture CIS)

02、Cadence使用记录之创建元器件—器件原理图符号和封装(OrCAD Capture CIS) 参考的教程是B站的视频:allegro软件入门视频教程全集100讲 前置教程: ## 01、Cadence使用记录之新建工程与基础操作(原理图绘制&#xf…

新闻文本分类任务:使用Transformer实现

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

13.网络爬虫—多进程详讲(实战演示)

网络爬虫—多进程详讲 一进程的概念二创建多进程三进程池四线程池五多进程和多线程的区别六实战演示北京新发地线程池实战 前言: 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者&#xff0c…

Spark SQL实战(07)-Data Sources

1 概述 Spark SQL通过DataFrame接口支持对多种数据源进行操作。 DataFrame可使用关系型变换进行操作,也可用于创建临时视图。将DataFrame注册为临时视图可以让你对其数据运行SQL查询。 本节介绍使用Spark数据源加载和保存数据的一般方法,并进一步介绍…

node安装

一、下载nodejs的安装包: 下载地址:https://nodejs.org/zh-cn/download 根据自己电脑系统及位数选择,一般都选择windows64位.msi格式安装包 二、改变nodejs的下载依赖包路径 安装完nodejs后,也同时安装了npm, npm是…

半监督语义分割_paper reading part1

Assignment 要解决的问题思路方法结果自己的想法 01 A Survey on Semi-Supervised Semantic Segmentation University of Granada, 18071, Granada, Spain 2023.02出版 problem to solve ss先前的(19年)不适用先前的调研包含弱监督,ss不…

Docker Desktop使用PostgreSql配合PGAdmin的使用

在看此教程之前,请先下载安装Docker Desktop 安装成功可以查看版本 然后拉取postgresql的镜像:docker pull postgres:14.2 版本可以网上找一个版本,我的不是最新的 发现会报一个问题 no matching manifest for windows/amd64 10.0.19045 i…

小心,丢失的消息!RocketMQ投递策略帮你解决问题!博学谷狂野架构师

RocketMQ消息投递策略 作者: 博学谷狂野架构师GitHub:GitHub地址 (有我精心准备的130本电子书PDF)只分享干货、不吹水,让我们一起加油!😄 前言 RocketMQ的消息投递分分为两种:一种是生产者往MQ …

java中级面试题

1.假如有两个线程共同操作数据库,以乐观锁的角度考虑,怎么确保不会发生并发问题? PS:考点是CAS,比较并替换。CAS中有三个值,内存中的值,新值,旧值。 假如内存中的值是2000&#xf…