实验四 傅立叶变换及图象的频域处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档