数字图像处理空间域滤波实验报告.docx
《数字图像处理空间域滤波实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理空间域滤波实验报告.docx(44页珍藏版)》请在冰点文库上搜索。
实验二
数字图像的空间域滤波和频域滤波
word可复制编辑
一.实验目的
1.掌握图像滤波的基本定义及目的;
2.理解空间域滤波的基本原理及方法;
3.掌握进行图像的空域滤波的方法。
4.掌握傅立叶变换及逆变换的基本原理方法;
5.理解频域滤波的基本原理及方法;
6.掌握进行图像的频域滤波的方法。
二.实验结果与分析
1.平滑空间滤波:
a)读出eight.tif这幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中;(提示:
imnoise)
b)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示;(提示:
fspecial、imfilter或filter2)
c)使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像
采用不同的填充方式,效果略有不同。
d)运用for循环,将加有椒盐噪声的图像进行10次,20次均值滤波,查看其特点,显示均值处理后的图像;(提示:
利用fspecial函数的’average’类型生成均值滤波器)
e)对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
(提示:
medfilt2)
中值滤波后的图像比均值滤波后的图像更加平滑。
f)自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像;
滤波后图像变得平滑。
2.锐化空间滤波
a)读出blurry_moon.tif这幅图像,采用3×3的拉普拉斯算子w
=[1,1,1;1–81;1,1,1]对其进行滤波;
观察原图与拉普拉斯掩模滤波后的图像,滤波后的图像不再那么平滑,使图像产生锐化效果。
b)编写函数w=genlaplacian(n),自动产生任一奇数尺寸n的拉
普拉斯算子,如5×5的拉普拉斯算子
w=
[1
1
1
1
1
1
1
1
1
1
1
1
-24
1
1
1
1
1
1
1
1
1
1
1
1]
本函数见文件夹下genlaplacian.m文件。
c) 分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对blurry_moon.tif进行锐化滤波,并利用式
g(x,y)=
f(x,y)-Ñ2f(x,y)完成图像的锐化增强,观察其
有何不同,要求在同一窗口中显示;
观察采用不同拉普拉斯算子对图像的锐化效果,发现掩模尺寸越大,锐化效果越明显,锐化轮廓线更粗。
d) 采用不同的梯度算子对blurry_moon.tif进行锐化滤波,并比较
其效果
3.傅立叶变换
a)读出woman.tif这幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位图像(提示:
fft2,abs,angle)
前者是傅里叶变换后的相位图,后者是频率谱图。
b)仅对相位部分进行傅立叶反变换后查看结果图像(提示:
记傅立叶变换的相位a,利用ifft2对exp(a*i)进行反变换)
c)仅对幅度部分进行傅立叶反变换后查看结果图像
仅对相位部分反傅里叶变换,图像全部成黑色,仅对幅度部分反傅里叶变换,图像极为模糊。
d)将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成
图像与原始图像的差异(提示:
复数F(u)=|F(u)|ejf(u)的共轭为F(u)=|F(u)|e-jf(u))
对F进行共轭后再反变换,图像反转180度。
4.平滑频域滤波
a)设计理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器,截至频率自选,分别给出各种滤波器的透视图;
理想低通滤波器表明在在截止频率的圆内所有频率无衰减地通过滤波器,而在这个圆外的所有频率完全被衰减掉。
高斯低通滤波器则是非常尖锐。
其中第3个图和第4个图都是巴特沃斯低通滤波器的透视图,前者参数为1,后者参数为10,比较可知,巴特沃斯滤波器可看成是理想低通滤波器和高斯低通滤波器的过渡,当参数值较大时接近理想低通滤波器,参数值较小时,接近高斯滤波器。
b)读出test_pattern.tif这幅图像,分别采用理想低通滤波器、巴
特沃斯低通滤波器和高斯低通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同低通滤波器得到的图像与原图像的区别,特别注意振铃效应。
(提示:
1)在频率域滤波同样要注意到填充问题;2)注意到(-1)x+y;)
以上三图中的截止频率分别取10,50,100,可以看到滤波后的图像与原图相比更加平滑,当截止频率取10时,图像非常模糊。
这是由于10以外频率的都被滤波器过滤掉了,滤掉的频率很大。
结果图频率范围很低,所以会产生非常模糊的效果。
5.锐化频域滤波
a)设计理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器,截至频率自选,分别给出各种滤波器的透视图;
高通滤波器的透视图相当于
b)读出test_pattern.tif这幅图像,分别采用理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同高通滤波器得到的图像与原图像的区别。
提示:
设图像大小为M×N(M行N列),下列代码可实现矩阵X和Yx=0:
M-1;
y=0:
N-1;
X=x'*ones(1,N);Y=ones(M,1)*y;
此时(f(x,y)(-1)x+y)可以采用如下代码实现
f(x,y).*(-1)^(X+Y)
一般频域滤波器的原点在矩形中心,即[floor(M/2),floor(N/2)],此时平方距离D的计算可以由下列代码实现
D=sqrt((U-floor(M/2)).^2+(V-floor(N/2)).^2);%这里将X,Y用U
和V代替
附录(源代码):
实验2源代码:
(其中要用到自定义函数,在文件夹中)
第1题.
a)
clear;clc;figure
(1)
I=imread('eight.tif');subplot(1,3,1);imshow(I);
title('(a)原图');
J = imnoise(I,'salt &
pepper',0.02);
subplot(1,3,2);imshow(J);
title('加入椒盐噪声');
subplot(1,3,3);
K=imnoise(I,'gaussian');imshow(K);
title('加入高斯噪声');
b)clear;clc;
I=imread('cameraman.tif');subplot(2,2,1);
imshow(I); title('OriginalImage');
H=fspecial('motion',20,45);MotionBlur =
imfilter(I,H,'replicate');subplot(2,2,2);imshow(MotionBlur);title('MotionBlurredImage');
H=fspecial('disk',10);
blurred =
imfilter(I,H,'replicate');subplot(2,2,3);imshow(blurred); title('BlurredImage');
H=fspecial('unsharp');sharpened =
imfilter(I,H,'replicate');subplot(2,2,4);imshow(sharpened);title('SharpenedImage');c)
clc;clearall;closeall;figure
I=imread('eight.tif');
J = imnoise(I,'salt &pepper',0.02);
subplot(2,2,1);imshow(J);title('
加有椒盐噪声的图像');
H=fspecial('motion',20,45);
MotionBlur =
imfilter(J,H,'replicate');subplot(2,2,2);imshow(MotionBlur);title('replicate');
MotionBlur =
imfilter(J,H,'symmetric');subplot(2,2,3);imshow(MotionBlur);title('symmetric');
MotionBlur =
imfilter(J,H,'circular');subplot(2,2,4);
imshow(MotionBlur);title('circular');
d)
clc;clearall;closeall;figure
(2);
I=imread('eight.tif');
J = imnoise(I,'salt &pepper',0.02);
Aver=J;
H=fspecial('average');fori=1:
10
Aver =
imfilter(Aver,H,'replicate');endsubplot(1,3,1);imshow(J);title('
加有椒盐噪声的图像');
subplot(1,3,2);imshow(Aver);title('10次均值滤波');
fori=1:
10
Aver =
imfilter(Aver,H,'replicate');endsubplot(1,3,3);imshow(Aver);tit
le('20次均值滤波');
e)
clc;clearall;closeall;figure(3);
I=imread('eight.tif');
J = imnoise(I,'salt &pepper',0.02);subplot(1,3,1);imshow(J);title('
加有椒盐噪声的图像');
H=fspecial('average');
Aver=imfilter(J,H,'replicate');subplot(1,3,2);imshow(Aver);tit
le('均值滤波处理后的图像');
Med=medfilt2(J);
subplot(1,3,3);imshow(Med);title('中值滤波处理后的图像');
f)clc;clear;
f=imread('eight.tif');subplot(1,2,1);imshow(f);title('
原图像');
w=(1/16)*[121;242;121];
f=im2double(f);
g=imfilter(f,w,'replicate');subplot(1,2,2);imshow(g);title('
滤波后的图像');
第2题.a)
clc;clear;
f=imread('blurry_moon.tif');w8=[111;1-81;111];
f=im2double(f);
g8 = f-imfilter(f,w8,'replicate');%使用拉普拉斯算子w8对f进行滤波
figure;
subplot(1,2,1);imshow(f);title('月球北极的图像');subplot(1,2,2);imshow(g8);title(
'使用拉普拉斯算子滤波增强后的图像');
b)
function [varargout] =genlaplacian(varargin)
%GENLAPLACIAN 产生一个
奇数尺寸的拉普拉斯算子
n=cell2mat(varargin);if(~mod(n,2))
error('输入参数必须为一个奇数');
end
W=ones(n);mid=(n+1)/2;
W(mid,mid)=-(n*n-1);[varargout]={W};
c)
clc;clear;
f=imread('blurry_moon.tif');w5=genlaplacian(5);
f=im2double(f);
g5=f-imfilter(f,w5,'replicate');w9=genlaplacian(9);
g9=f-imfilter(f,w9,'replicate');w15=genlaplacian(15);
g15 = f -imfilter(f,w15,'replicate');
w25=genlaplacian(25);
g25 = f -imfilter(f,w25,'replicate');
figure
(1);imshow(f);title('月球北极的图像');
figure
(2);subplot(2,2,1);
imshow(g5);title('采用5x5的拉普拉斯算子锐化增强');subplot(2,2,2);
imshow(g9);title('采用9x9的拉普拉斯算子锐化增强');subplot(2,2,3);
imshow(g15);title('采用15x15的拉普拉斯算子锐化增强');subplot(2,2,4);
imshow(g25);title('采用25x25
的拉普拉斯算子锐化增强');
d)
clc;clear;
[I,map] =
imread('blurry_moon.tif');I=double(I);
[Gx,Gy]=gradient(I);
G=sqrt(Gx.*Gx+Gy.*Gy);J1=G;
subplot(2,2,1);imshow(J1,map);J2=I;
K=find(G>=7);J2(K)=G(K);
subplot(2,2,2);imshow(J2,map);J3=I;
K=find(G>=7);J3(K)=255;
subplot(2,2,3);
imshow(J3,map);J4=I;
K=find(G<=7);J4(K)=255;
subplot(2,2,4);imshow(J4,map);
第3题.a)
clc;clear;
f=imread('woman.tif');Y=fft2(double(f));
F=[0:
256];
xp=angle(Y);%相位谱gl=abs(Y);%频率谱subplot(1,2,1);
plot(F,xp(1:
257));
subplot(1,2,2);
plot(F,gl(1:
257));
bc)clc;clear;
f=imread('woman.tif');subplot(2,2,1);imshow(f);title('originalimage');f=double(f);
Fu=fft2(f);
a=angle(Fu);
fi=real(ifft2(exp(a*i)));subplot(2,2,2);
imshow(uint8(fi));title('仅相位部分反DFT');
b=abs(Fu);
ff=real(ifft2(b));subplot(2,2,3);
imshow(uint8(ff));title('仅幅度部分反DFT');
d)clc;clear;
f=imread('woman.tif');subplot(1,2,1);
imshow(f);title('原图');
F=fft2(double(f));
F_abs=abs(F);
F2=F_abs.*F_abs./F;F2=ifft2(F2);
subplot(1,2,2);imshow(uint8(F2));title('变换后的图');
第4题.
a)
%理想低通滤波器透视图
H =
fftshift(lpfilter('ideal',500,500,50));
subplot(2,2,1);
mesh(H(1:
10:
500,
1:
10:
500));title('理想低通滤波器透视图,截止频率50')
axis([05005001])
colormap([000])axisoff
gridoff
%巴特沃斯低通滤波器透视图
H =
fftshift(lpfilter('btw',500,500,50,1));
subplot(2,2,3);
mesh(H(1:
10:
500,
1:
10:
500));title('巴特沃斯低通滤波器透视图,截止频率50')
axis([05005001]);
colormap([000]);axisoff;
gridoff;
%高斯低通滤波器透视图
H =
fftshift(lpfilter('gaussian',500,500,50));
subplot(2,2,2);
mesh(H(1:
10:
500,
1:
10:
500));title('高斯低通滤波
器透视图,截止频率50');
axis([05005001]);
colormap([000]);axisoff;
gridoff;
%巴特沃斯低通滤波器透视图H =
fftshift(lpfilter('btw',500,500,50,10));
subplot(2,2,4);
mesh(H(1:
10:
500,
1:
10:
500));title('巴特沃斯低通滤波器透视图,截止频率50')
axis([05005001]);
colormap([000]);axisoff;
gridoff;b)
%高斯高通滤波器滤波
f=imread('test_pattern.tif');
subplot(2,2,1);imshow(f,[]);title('原图');PQ=paddedsize(size(f));
H =
lpfilter('gaussian',PQ
(1),PQ
(2),100);
g=dftfilt(f,H);subplot(2,2,3);
imshow(g,[]);title('高斯低通滤波后的结果');
%巴特沃斯高通滤波器滤波
f=imread('test_pattern.tif');
PQ=paddedsize(size(f));
H =
lpfilter('gaussian',PQ
(1),PQ
(2),100);
g=dftfilt(f,H);subplot(2,2,4);
imshow(g,[]);title('巴特沃斯低通滤波后的结果');
%理想高通滤波器滤波
f=imread('test_pattern.tif');
PQ=paddedsize(size(f));
H =
lpfilter('gaussian',PQ
(1),PQ
(2),100);
g=dftfilt(f,H);subplot(2,2,2);
imshow(g,[]);title('理想低通滤波后的结果');
第5题.
a)
%理想高通滤波器透视图
H =
fftshift(hpfilter('ideal',500,500,50));
subplot(2,2,1);
mesh(H(1:
10:
500,
1:
10:
500));title('理想高通滤波器透视图,截止频率50')
axis([05005001])
colormap([000])axisoff
gridoff
%巴特沃斯高通滤波器透视图H =
fftshift(hpfilter('btw',500,500,50,1
));
subplot(2,2,3);
mesh(H(1:
10:
500,
1:
10:
500));title('巴特沃斯高通滤波器透视图,截止频率50')
axis([05005001]);
colormap([000]);axisoff;
gridoff;
%巴特沃斯高通滤波器透视图H =
fftshift(hpfilter('btw',500,500,50,10));
subplot(2,2,3);
mesh(H(1:
10:
500,
1:
10:
500));title('巴特沃斯高通滤波器透视图,截止频率50')
axis([05005001]);
colormap([000]);axisoff;
gridoff;
%高斯高通滤波器透视图
H =
fftshift(hpfilter('gaussian',500,500,50));
subplot(2,2,2);
mesh(H(1:
10:
500,
1:
10:
500));title('高斯高通滤波器透视图,截止频率50');
axis([05005001]);
colormap([000]);axisoff;
gridoff;b)
%高斯高通滤波器滤波
f=imread('test_pattern.tif');
subplot(2,2,1);imshow(f,[]);title('原图');PQ=paddedsize(size(f));
H =
hpfilter('gaussian',PQ
(1),PQ
(2),50);
g=dftfilt(f,H);subplot(2,2,3);
imshow(g,[]);title('高斯高通滤波后的结果');
%巴特沃斯高通滤波器滤波
f=imread('test_pattern.tif');
PQ=paddedsize(size(f));
H =
hpfilter('gaussian',PQ
(1),PQ
(2),50);
g=dftfilt(f,H);subplot(2,2,4);
imshow(g,[]);t