实验四 傅立叶变换及图象的频域处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广西工学院信计系上机实验报告
课程:数字图像处理第 1 页 / 共 8 页
专业班级:电科091 实验日期:2012 年 06 月 12日
姓名:学号:
实验四傅立叶变换及图象的频域处理
一、实验目的
1、了解离散傅立叶变换的基本原理及其性质;
2、了解离散余弦变换的基本原理及其性质;
3、掌握应用MATLAB语言进行FFT及逆变换的方法;
4、掌握应用MATLAB语言进行DCT及逆变换的方法;
5、了解图象在频域中处理方法,应用MATLAB语言作简单的低通滤波器。
二.实验要求
1.读取一幅灰度图像,对该图像作傅立叶变换,显示频域频谱图像。查看其数值及其特点。作傅立叶逆变换,显示图象,看是否与原图象相同。
2.读取一幅灰度图像,对该图像作傅立叶变换,显示频域频谱图像。查看其数值及其特点。作傅立叶逆变换,显示图象,看是否与原图象相同。
3.自行设计一个256*256的图像,要求该图像中心处有白色长方形,对其做傅立叶变换,将该图像做30度旋转,再做傅立叶变换,查看两次频谱结果的差异。
4.设计一个低通滤波器,截止频率自选,对图像作低通滤波,再作反变换,观察不同的截止频率下反变换后的图像与原图像的区别。
5.利用理想低通滤波器与高斯滤波器分别对一受噪声污染图像做处理,自设定截止频率,查看处理后的结果差异。
三. 程序源代码:
1.读取图像进行傅里叶和逆傅立叶变换并显示图像:
> X=imread('lena.bmp'); %打开图像
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.设计256*256图像,进行傅里叶变换;旋转30度,在进行傅里叶变换:
>> f1=zeros(256,256); %创建256*256的二值图像f1(124:130,117:137)=1;
f2=imrotate(f1,30,'crop'); %二值图像旋转30度后的图像
F1=log(1+abs(fftshift(fft2(f1)))); %频谱中心化
F2=log(1+abs(fftshift(fft2(f2))));
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('lena.bmp '); %打开图像
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 %分别求5个不同滤波半径的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;
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('lena.bmp '); %打开图像
J=imnoise(I,'gaussian'); %添加高斯噪声
J=double(J); %转化J为double数据类型D1=15; %分别设计4种不同的滤波半径D2=30;