数字图像处理实验报告.docx
《数字图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
数字图像处理实验报告
数字图像处理试验报告
实验二:
数字图像的空间滤波和频域滤波
姓名:
XX学号:
2XXXXXXX实验日期:
2017年4月26日
1.实验目的
1.掌握图像滤波的基本定义及目的。
2.理解空间域滤波的基本原理及方法。
3.掌握进行图像的空域滤波的方法。
4.掌握傅立叶变换及逆变换的基本原理方法。
5.理解频域滤波的基本原理及方法。
6.掌握进行图像的频域滤波的方法。
2.实验内容与要求
1.平滑空间滤波:
1)读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。
2)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
3)使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像。
4)运用for循环,将加有椒盐噪声的图像进行10次,20次均值滤波,查看其特点,显示均值处理后的图像(提示:
利用fspecial函数的’average’类型生成均值滤波器)。
5)对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
6)自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。
2.锐化空间滤波
1)读出一幅图像,采用3×3的拉普拉斯算子w=[1,1,1;1–81;1,1,1]
对其进行滤波。
2)编写函数w=genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5
×5的拉普拉斯算子
w=[11111
11111
11-2411
11111
11111]
3)分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对
进
行锐化滤波,并利用式g(x,y)?
f(x,y)?
?
2f(x,y)完成图像的锐化增强,观察其有何
不同,要求在同一窗口中显示。
4)采用不同的梯度算子对该幅图像进行锐化滤波,并比较其效果。
5)自己设计锐化空间滤波器,并将其对噪声图像进行处理,显示处理后的图像;
3.傅立叶变换
1)读出一幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位图像。
仅对相位部分进行傅立叶反变换后查看结果图像。
2)仅对幅度部分进行傅立叶反变换后查看结果图像。
3)将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成图像与原始图像的差异。
4.平滑频域滤波
1)设计理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器,截至频率自选,分别给出各种滤波器的透视图。
2)读出一幅图像,分别采用理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同低通滤波器得到的图像与原图像的区别,特别注意振铃效应。
(提示:
1)在频率域滤波同样要注意到填充问题;2)注意到(-1);)
5.锐化频域滤波
1)设计理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器,截至频率自选,分别给出各种滤波器的透视图。
2)读出一幅图像,分别采用理想高通滤波器、巴特沃斯高通滤波器和高斯高通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同高通滤波器得到的图像与原图像的区别。
3.实验具体实现
1.平滑空间滤波:
(1).读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。
img=imread('')figure,subplot(1,3,1);imshow(img);title('原始图像');img2=imnoise(img,'salt&pepper',;subplot(1,3,2);
imshow(img2);title('椒盐噪声图像');img3=imnoise(img,'gaussian',;subplot(1,3,3),imshow(img3);title('高斯噪声图像');
实验结果如下:
(2).对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
平滑滤波是低频增强的空间域滤波技术。
它的目的有两个,一是模糊,二是消除噪声。
将空间域低通滤波按线性和非线性特点有:
线性、非线性平滑滤波器,线性平滑滤波器包括均值滤波器,非线性的平滑滤波器有最大值滤波器,中值滤波器,最小值滤波器。
代码如下:
img=imread('')img=rgb2gray(img);figure,subplot(1,3,1);imshow(img);title('原始图像');img2=imnoise(img,'salt&pepper',;
subplot(1,3,2);imshow(img2);title('椒盐噪声图像');img3=imnoise(img,'gaussian',;subplot(1,3,3),imshow(img3);title('高斯噪声图像');
%对椒盐噪声图像进行滤波处理h=fspecial('average',3);I1=filter2(h,img2)/255;I2=medfilt2(img2,[33]);
figure,subplot(2,2,1),imshow(img),title('原图像');subplot(2,2,2),imshow(img2),title('椒盐噪声图');subplot(2,2,3),imshow(I1),title('3*3均值滤波图');subplot(2,2,4),imshow(I2),title('3*3中值滤波图');
%对高斯噪声图像进行滤波处理G1=filter2(h,img3)/255;G2=medfilt2(img3,[33]);
figure,subplot(2,2,1),imshow(img),title('原图像');subplot(2,2,2),imshow(img3),title('高斯噪声图');subplot(2,2,3),imshow(G1),title('3*3均值滤波图');subplot(2,2,4),imshow(G2),title('3*3中值滤波图');
实验结果如下:
(3).使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像。
h=fspecial('motion',50,45);%创建一个运动模糊滤波器filteredimg=imfilter(img,h);boundaryReplicate=imfilter(img,h,'replicate');boundary0=imfilter(img,h,0);boundarysymmetric=imfilter(img,h,'symmetric');boundarycircular=imfilter(img,h,'circular');figure,subplot(3,2,1),imshow(img),title('OriginalImage');subplot(3,2,2),imshow(filteredimg),title('MotionBlurredImage');subplot(3,2,3),imshow(boundaryReplicate),title('Replicate');subplot(3,2,4),imshow(boundary0),title('0-Padding');subplot(3,2,5),imshow(boundarysymmetric),title('symmetric');
subplot(3,2,6),imshow(boundarycircular),title('circular');
g=imfilter(f,w,filtering_mode,boundary_options,size_options),其中,f为输入图像,w为滤波掩模,g为滤波后图像。
实验结果如下:
(4).运用for循环,将加有椒盐噪声的图像进行10次,20次均值滤波,查看其特点,显示均值处理后的图像(提示:
利用fspecial函数的’average’类型生成均值滤波器)。
代码如下:
h=fspecial('average');
fori=1:
10
J1=imfilter(img2,h);end
forj=1:
20
J2=imfilter(img2,h);end
figure,subplot(1,3,1),imshow(img2),title('salt&pepperNoise');subplot(1,3,2),imshow(J1),title('10AverageFiltering');
subplot(1,3,3),imshow(J2),title('20AverageFiltering');
实验结果:
(5).对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
代码如下:
h1=fspecial('average');J=imfilter(img2,h1);J2=medfilt2(img2);
figure,subplot(1,3,1),imshow(img2),title('salt&pepperNoise');subplot(1,3,2),imshow(J),title('AveragingFiltering');
subplot(1,3,3),imshow(J2),title('MedianFiltering');
实验结果为:
(6).自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。
代码如下:
[mn]=size(img2);figure,subplot(1,2,1),imshow(img2);s=zeros(1,9);
fori=2:
1:
m-1
forj=2:
1:
n-1
h=1;
forp=i-1:
1:
i+1
forq=j-1:
1:
j+1
s(h)=img2(p,q);
h=h+1;
end
end
s=sort(s);
I(i,j)=s(5);
endend
subplot(1,2,2),imshow(I);
实验结果:
2.锐化空间滤波
(1)读出一幅图像,采用3×3的拉普拉斯算子w=[1,1,1;1–81;1,1,1]对其进行滤波。
代码如下:
img=imread('');img=rgb2gray(img);img=im2double(img);w=[1,1,1;
1,-8,1;
1,1,1]k=conv2(img,w,'same');imshow(k);
实验结果为:
(2)编写函数w=genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5×5的拉普拉斯算子
w=[11111
11111
11-2411
11111
11111]
代码如下:
num=input('pleaseenteranynum:
');n=num;
W=ones(n,n);fori=1:
n
forj=1:
n
if(i==fix(n/2)+1&&j==fix(n/2)+1)
W(i,j)=n*n-1;
end
endend
display(W);
代码运行结果为:
(3)分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对进
代码如下:
基于上一题要求形成一函数:
行锐化滤波,并利用式完成图像的锐化增强,观察其有何不同,要求在同一窗口中显示。
function[W]=lapulasi(num)n=num,W=ones(n),x=fix(n/2)+1;W(x,x)=-(n*n-1);
其他代码:
f=imread('');f=im2double(f);
figure,subplot(2,3,1),imshow(f),title('OriginalImage');w0=lapulasi(3),w1=lapulasi(5),w2=lapulasi(9);w3=lapulasi(15),w4=lapulasi(25);
f0=f-imfilter(f,w0,'replicate');subplot(2,3,2),imshow(f0),title('3*3lapulasi');f1=f-imfilter(f,w1,'replicate');subplot(2,3,3),imshow(f1),title('5*5lapulasi');f2=f-imfilter(f,w2,'replicate');subplot(2,3,4),imshow(f2),title('9*9lapulasi');f3=f-imfilter(f,w3,'replicate');subplot(2,3,5),imshow(f3),title('15*15lapulasi');f4=f-imfilter(f,w4,'replicate');subplot(2,3,6),imshow(f4),title('25*25lapulasi');
实验结果为:
代码如下:
[I,map]=imread('');I=double(I);
figure,subplot(2,3,1),imshow(I,map),title('OriginalImage');[Gx,Gy]=gradient(I);
G=sqrt(Gx.*Gx+Gy.*Gy),J1=G;subplot(2,3,2),imshow(J1,map),title('Operator1Image');J2=I;K=find(G>=7);
J2(K)=G(K);
subplot(2,3,3),imshow(J2,map);title('Operator2Image');J3=I;
K=find(G>=7);J3(K)=255;
subplot(2,3,4),imshow(J3,map),title('Operator3Image');J4=I;
K=find(G<=7);J4(K)=255;
subplot(2,3,5),imshow(J4,map),title('Operator4Image');J5=I;
K=find(G<=7);J5(K)=0;
Q=find(G>=7);J5(Q)=255;
subplot(2,3,6),imshow(J5,map),title('Operator5Image');
(4)采用不同的梯度算子对该幅图像进行锐化滤波,并比较其效果。
实验效果如下:
代码如下:
I=imread('');
I=rgb2gray(I);
h=fspecial('sobel');
h1=h'*;
h2=h';
h3=h'*;
z1=imfilter(I,h1);
z2=imfilter(I,h2);
z3=imfilter(I,h3);
figure,subplot(2,2,1),imshow(I),title('OriginalImage');
subplot(2,2,2),imshow(z1);title('Verticalfiltering1');
subplot(2,2,3),imshow(z2);title('Verticalfiltering2');
subplot(2,2,4),imshow(z3);title('Verticalfiltering3')
(5)自己设计锐化空间滤波器,并将其对噪声图像进行处理,显示处理后的图像;
运行结果如下:
3.傅立叶变换
(1).读出一幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位图像。
仅对相位部分进行傅立叶反变换后查看结果图像。
代码为:
img=imread('');img=rgb2gray(img);
f1=fft2(img);%快速傅里叶变换f2=log(1+abs(f1));%振幅谱f3=fftshift(f1);
f4=angle(f1);%相位谱figure,subplot(1,3,1),imshow(img),title('OriginalImage');subplot(1,3,2),imshow(log(1+abs(f3)),[]),title('amplitudespectrum');subplot(1,3,3),imshow(f4),title('phasespectrum');
实验结果为:
(2).仅对幅度部分进行傅立叶反变换后查看结果图像。
实验结果为:
(3).将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成图像与原始图像的差异。
代码
f1=fft2(img);f2=log(1+abs(f1));f3=fftshift(f1);f4=angle(f1);
f5=-f4;
f6=double(f3*exp(f4));%傅立叶变换的复共轭f7=ifft2(f6);%反傅立叶变换figure,subplot(1,2,1),imshow(img),title('OriginalImage');
subplot(1,2,2),imshow(real(f7),[]),title('inversefouriertransform');
实验效果:
4.平滑频域滤波
(1).设计理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器,截至频率自选,分别给出各种滤波器的透视图。
%%%%%%%%%%%%%%%%%%%理想低通滤波器的透视图%%%%%
a=100;
b=100;
U=0:
a;
V=0:
b;
M=length(U);N=length(V);
D0=10;%D0是频带的中心半径;
x1=50;y1=50;
x0=-50;y0=-50;
m=fix(M/2);n=fix(N/2);
H=zeros(M,N);
n=2;
foru=1:
M
forv=1:
N
a=sqrt((U(u)-50).*(U(u)-50)+(V(v)-50).*(V(v)-50));%D(u,v)的值
if(a<=D0)%理想滤波器
H(u,v)=1;
else
H(u,v)=0;
end
end
end
figure;subplot(1,3,1),
surf(U,V,H),title('理想低通滤波透视图');
%%%%%%%%%%%%2阶巴特沃斯低通滤波透视图%%%%%%%%%%%%%%%%55
a=100;
b=100;
U=0:
a;
V=0:
b;
M=length(U);N=length(V);
D0=10;%W=200;%D0是频带的中心半径;W是频带的宽度
x1=50;y1=50;
x0=-50;y0=-50;
m=fix(M/2);n=fix(N/2);
H=zeros(M,N);
n=2;
foru=1:
M
forv=1:
N
a=sqrt((U(u)-50).*(U(u)-50)+(V(v)-50).*(V(v)-50));%D(u,v)的值
b=1+(a/D0)^2*n;
H(u,v)=1/b;
end
end
subplot(1,3,2),surf(U,V,H);
title('n=2Butterworthlowessfilter')
%%%%%%%%%%%%%%%%%%%%%%高斯低通滤波%%%%%%%%%%%%%%%%%%%%%
a=100;
b=100;
U=0:
a;
V=0:
b;
M=length(U);N=length(V);
D0=10;%D0是频带的中心半径
x1=50;y1=50;
x0=-50;y0=-50;
m=fix(M/2);n=fix(N/2);
H=zeros(M,N);
foru=1:
M
forv=1:
N
D1=((u-m-x0)^2+(v-n-y0).^2)^;
D2=((u-m+x0)^2+(v-n+y0).^2)^;
D11=((u-m-x1)^2+(v-n-y1).^2)^;
D21=((u-m+x1)^2+(v-n+y1).^2)^;
H(u,v)=(U(u)-50).*(U(u)-50)+(V(v)-50).*(V(v)
-50);
end
end
%在绘制高斯曲面的时候,加上下述代码,显示得美观
S=50;
H=-H/(2*S);
H=exp(H)/(sqrt(2*pi)*sqrt(S));
subplot(1,3,3),surf(U,V,H),title('Gaussianlowessfilter');
实验结果:
由上图可知,当频带中心宽度相同时,理想低通滤波器为圆柱形图像,二阶巴特沃斯低通滤波器的面线比较紧凑,高斯滤波图像最为平滑。
(2)读出一幅图像,分别采用理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器对其进行滤波(截至频率自选),再做反变换,观察不同的截止频率下采用不同低通滤波器得到的图像与原图像的区别,特别注意振铃效应。
(提示:
1)在频率域滤波同样要注意到填充问题;2)注意到(-1)x+y;)
%理想低通滤波img=imread('');img=rgb2gray(img);f=double(img);
g=fft2(f);%傅立叶变换g=fftshift(g);[M,N]=size(g);
d0=15;
m=fix(M/2);n=fix(N/2);fori=1:
M
f