广西工学院信计系 上机实验报告
课 程:数字图像处理 第 1 页 / 共 8 页
专业班级:电科082 实验日期:2011年 6 月 17 日
姓 名:梁芳梅 学号:200800902044
实验四 傅立叶变换及图象的频域处理
一、实验目的
1、了解离散傅立叶变换的基本原理及其性质;
2、了解离散余弦变换的基本原理及其性质;
3、掌握应用MATLAB语言进行FFT及逆变换的方法;
4、掌握应用MATLAB语言进行DCT及逆变换的方法;
5、了解图象在频域中处理方法,应用MATLAB语言作简单的低通滤波器。
二.实验要求
1.读取一幅灰度图像,对该图像作傅立叶变换,显示频域频谱图像。查看其数值及其特点。作傅立叶逆变换,显示图象,看是否与原图象相同。
2.读取一幅灰度图像,对该图像作傅立叶变换,显示频域频谱图像。查看其数值及其特点。作傅立叶逆变换,显示图象,看是否与原图象相同。
3.自行设计一个256*256的图像,要求该图像中心处有白色长方形,对其做傅立叶变换,将该图像做30度旋转,再做傅立叶变换,查看两次频谱结果的差异。
4.设计一个低通滤波器,截止频率自选,对图像作低通滤波,再作反变换,观察不同的截止频率下反变换后的图像与原图像的区别。
5.利用理想低通滤波器与高斯滤波器分别对一受噪声污染图像做处理,自设定截止频率,查看处理后的结果差异。
三. 程序源代码:
1、
X=imread('cameraman.tif'); %打开图像
subplot(3,3,1);
imshow(X);
title('原始图像');
F=fft2(X); %傅里叶变换并显示
F1=abs(fftshift(F));
subplot(3,3,2);
imshow(log(F1),[]),colorbar;
title('傅里叶变换结果');
M=ifft2(F); M1=abs(fftshift(M));
subplot(3,3,3);
imshow(log(M1),[]),colorbar;
title('傅里叶逆变换结果');
2、
f1=zeros(256,256); f1(124:130,117:137)=1;
f2=imrotate(f1,30,'crop'); F1=log(1+abs(fftshift(fft2(f1)))); F2=log(1+abs(fftshift(fft2(f2))));
%逆傅里叶变换并显示
%创建256*256的二值图像
%二值图像旋转30度后的图像 %频谱中心化
subplot(2,2,1); %显示图像
imshow(f1);
title('原始图像');
subplot(2,2,2);
imshow(f2,[]);
title('傅里叶变换的图像');
subplot(2,2,3);
imshow(F1,[]);
title('原始图像旋转30度后的图像');
subplot(2,2,4);
imshow(F2,[]);
title('原始图像旋转30度后的傅里叶变换图像');
3、理想低通滤波器对图像反变换作低通滤波的源代码
I=imread(' cameraman.tif '); %打开图像
D1=15; %分别设计5种不同的滤波半径
D2=30;
D3=50;
D4=60;
D5=80;
F=fftshift(fft2(I)); [M N]=size(F);
m1=fix(M/2);n1=fix(N/2); for u=1:M for v=1:N
D=sqrt((u-m1)^2+(v-n1)^2);
if(D>=D1)
h1(u,v)=0;
else
%傅里叶变换并中心化
%确定傅里叶变换的原点
%分别求5个不同滤波半径的ILPF
h1(u,v)=1;
end
if(D>=D2)
h2(u,v)=0;
else
h2(u,v)=1;
end
if(D>=D1)
h3(u,v)=0;
else
h3(u,v)=1;
end
if(D>=D1)
h4(u,v)=0;
else
h4(u,v)=1;
end
if(D>=D1)
h5(u,v)=0;
else
h5(u,v)=1;
end
end
end
F1=h1.*F; F2=h2.*F;
F3=h3.*F;
F4=h4.*F;
%滤波矩阵点乘
F5=h5.*F;
f1=ifftshift(F1); %傅里叶逆变换
f2=ifftshift(F2);
f3=ifftshift(F3);
f4=ifftshift(F4);
f5=ifftshift(F5)
G1=abs(ifft2(f1));
G2=abs(ifft2(f2));
G3=abs(ifft2(f3));
G4=abs(ifft2(f4));
G5=abs(ifft2(f5));
subplot(3,3,1); imshow(I);
title('原始图像');
%分别显示各个图像
subplot(3,3,2);
imshow(G1,[]);
title('截止半径D=15的滤波图像');
subplot(3,3,3);
imshow(G2,[]);
title('截止半径D=30的滤波图像');
subplot(3,3,4);
imshow(G3,[]);
title('截止半径D=50的滤波图像');
subplot(3,3,5);
imshow(G4,[]);
title('截止半径D=60的滤波图像');
subplot(3,3,6);
imshow(G5,[]);
title('截止半径D=80的滤波图像');
4、理想低通滤波器对添加了高斯噪声的图像反变换作低通滤波的源代码
I=imread(' cameraman.tif '); %打开图像
J=imnoise(I,'gaussian'); J=double(J); D1=15; D2=30;
D3=50;
D4=80;
F=fftshift(fft2(J)); [M N]=size(F);
m1=fix(M/2);n1=fix(N/2); for u=1:M for v=1:N
%添加高斯噪声
%转化J为double数据类型
%分别设计4种不同的滤波半径
%傅里叶变换并中心化
%确定傅里叶变换的原点
%分别求4个不同滤波半径的ILPF
D=sqrt((u-m1)^2+(v-n1)^2);
if(D>=D1)
h1(u,v)=0;
else
h1(u,v)=1;
end
if(D>=D2)
h2(u,v)=0;
else
h2(u,v)=1;
end
if(D>=D1)
h3(u,v)=0;
else
h3(u,v)=1;
end
if(D>=D1)
h4(u,v)=0;
else
h4(u,v)=1;
end
if(D>=D1)
h5(u,v)=0;
else
h5(u,v)=1;
end
end
end
F1=h1.*F; %滤波矩阵点乘
F2=h2.*F;
F3=h3.*F;
F4=h4.*F;
f1=ifftshift(F1); f2=ifftshift(F2);
f3=ifftshift(F3);
f4=ifftshift(F4);
G1=abs(ifft2(f1));
G2=abs(ifft2(f2));
G3=abs(ifft2(f3));
G4=abs(ifft2(f4));
subplot(3,3,1); imshow(I);
%傅里叶逆变换
%分别显示各个图像
title('原始图像');
subplot(3,3,2);
imshow(J,[]);
title('添加高斯噪声图像');
subplot(3,3,3);
imshow(G1,[]);
title('截止半径D=15的滤波图像');
subplot(3,3,4);
imshow(G2,[]);
title('截止半径D=30的滤波图像');
subplot(3,3,5);
imshow(G3,[]);
title('截止半径D=50的滤波图像');
subplot(3,3,6);
imshow(G4,[]);
title('截止频率D=80的反变换图像');
5、理想高通滤波器对添加了高斯噪声的图像反变换作低通滤波的源代码
I=imread(' cameraman.tif '); J=imnoise(I,'gaussian'); J=double(J); D1=15; D2=30;
D3=50;
D4=80;
F=fftshift(fft2(J)); [M N]=size(F); m1=fix(M/2);n1=fix(N/2); for u=1:M %打开图像
%添加高斯噪声
%转化J为double数据类型
%分别设计4种不同的滤波半径
%傅里叶变换并中心化
%确定傅里叶变换的原点
%分别求4个不同滤波半径的ILPF
for v=1:N
D=sqrt((u-m1)^2+(v-n1)^2);
if(D>=D1)
h1(u,v)=0;
else
h1(u,v)=1;
end
if(D>=D2)
h2(u,v)=0;
else
h2(u,v)=1;
end
if(D>=D1)
h3(u,v)=0;
else
h3(u,v)=1;
end
if(D>=D1)
h4(u,v)=0;
else
h4(u,v)=1;
end
if(D>=D1)
h5(u,v)=0;
else
h5(u,v)=1;
end
end
end
F1=h1.*F; %滤波矩阵点乘
F2=h2.*F;
F3=h3.*F;
F4=h4.*F;
f1=ifftshift(F1); f2=ifftshift(F2);
f3=ifftshift(F3);
f4=ifftshift(F4);
G1=abs(ifft2(f1));
G2=abs(ifft2(f2));
G3=abs(ifft2(f3));
G4=abs(ifft2(f4));
subplot(3,3,1); %傅里叶逆变换
%分别显示各个图像
imshow(I);
title('原始图像');
subplot(3,3,2);
imshow(J,[]);
title('添加高斯噪声图像');
subplot(3,3,3);
imshow(G1,[]);
title('截止半径D=15的滤波图像');
subplot(3,3,4);
imshow(G2,[]);
title('截止半径D=30的滤波图像');
subplot(3,3,5);
imshow(G3,[]);
title('截止半径D=50的滤波图像');
subplot(3,3,6);
imshow(G4,[]);
title('截止半径D=80的滤波图像');
四.实验结果分析与实验总结:
1、
2、
3、
4、
5、
总结:
1、 经过傅里叶逆变换后的图像不同像素区域的位置与原图像的像素区域的位置发生了改变,逆变换后的图像的灰度级有了明显的压缩。
2、 如果原图像在空域旋转一定角度,则其相应的傅里叶变换在频域上也旋转了一定角度。
3、 理想低通滤波器对于不同的滤波半径,滤波效果不同,对于滤波半径越小,图像越模糊;而对于滤波半径较大时,滤波效果有不是很好。
4、 理想低通滤波器对添加了高斯噪声的图像进行滤波处理时,对于不同的滤波半径,滤波效果不同,对于滤波半径越小,图像越模糊;而对于滤波半径较大时,滤波效果有不是很好。
5、 理想高通滤波器对添加了高斯噪声的图像进行滤波处理时,通过采用不同的高通滤波半径让高频分量顺利通过,使图像的边缘或线条等细节变得清晰,并可以实现图像的锐化。
因篇幅问题不能全部显示,请点此查看更多更全内容