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

news/2024/7/21 4:09:59 标签: 图像处理

一.实验目的:

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.niftyadmin.cn/n/226387.html

相关文章

如何在Windows系统上制作U盘启动盘?

使用U盘重装Windows电脑系统,对于熟悉电脑的人来说十分常见,但是不少电脑小白并不会制作U盘启动盘。U盘启动盘是包含操作系统的外部硬盘驱动器,可用于启动计算机或笔记本电脑。下面我们就来了解一下如何制作U盘启动盘。 注意: U …

简单句区分判断

文章目录如何区分(主谓宾)和(主谓宾宾补)?如何区分(主谓宾宾补)和(主谓宾状)?不及物动词单及物动词双及物动词复杂及物动词如何区分(主谓宾&#…

SpringBoot使用Hbase

SpringBoot使用Hbase 文章目录SpringBoot使用Hbase一&#xff0c;引入依赖二&#xff0c;配置文件添加自己的属性三&#xff0c;配置类注入HBASE配置四&#xff0c;配置Hbase连接池五&#xff0c;配置操作服务类一&#xff0c;引入依赖 <dependency><groupId>org.a…

【react 全家桶】组合组件

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录09 【组合组件】1.包含关系2.特例关系问题…

WPFPasswordBox绑定问题

PassWordBox的Password属性为什么不能绑定 Introduction WPF中的PassWordBox是用于输入密码的控件&#xff0c;它的Password属性是用于获取或设置PassWordBox中的密码。但是&#xff0c;有很多开发者在使用WPF的时候发现&#xff0c;无法通过绑定的方式来设置或获取Password属…

Linux 提权学习

提权的目的是获取 root 权限 root 权限可获取 shadow 文件中的密码 Hash&#xff0c;若内网环境中存在「账户/密码复用」的情况&#xff0c;可用于横向扩展 暴力破解 suid 提权 内核漏洞提权 定时任务提权 sudo 提权 第三方服务提权&#xff08;docker、mysql、redis、NFS提权…

TGP 模板基础知识--04可变参数模板

可变参数模板 允许模板定义中包含0至任意多个模板参数 可变参函数模板 #include <iostream> // 可变参函数模板, // ...表示参数包&#xff0c;T可变参类型&#xff0c; // args&#xff1a;称为一包参数&#xff08;0~多个&#xff09;&#xff0c;每个参数的类型可以…

K-计算面积

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小w给你三种图形&#xff0c;可能是平行四边形&#xff0c;三角形&#xff0c;梯形&#xff0c;对于给定的TTT个图形&#xff0c;你需要依次回答每个图形的面积&#xff0c;保证答案…