题目: 傅里叶变换及图像的频域处理
学院(系): 里仁学院电气工程系
年级专业: 生物医学工程10-1班
学 号: 101203041007
学生姓名: 赵 林 静
指导教师: 孟 辉
教师职称: 讲 师
燕山大学课程设计(论文)任务书
院(系):里仁学院电气工程系 基层教学单位:生物医学工程
学 号 | 101203041007 | 学生姓名 | 赵林静 | 专业(班级) | 生物医学工程10-1班 | ||
设计题目 | 傅立叶变换及图像的频域处理 | ||||||
设 计 技 术 参 数 | 在设计巴特沃思滤波器时满足的性能指标:通带截止频率1000rad/s,通带最大衰减3dB,阻带的截止频率40000rad/s阻带的最小衰减6dB | ||||||
设 计 要 求 | 理解离散傅立叶变换的基本原理; 掌握应用MATLAB语言进行FFT及逆变换的方法; 熟悉图像在频域中处理方法,应用MATLAB语言作简单的低通滤波器。
| ||||||
工 作 量 | 网上查阅相关资料 图书馆查阅有关资料 综合整理所学的知识 完成相关程序 | ||||||
工 作 计 划 | 第1-2天查找有关资料,开始准备; 第3-4天编写程序,进行运行以及改进 第5天整理程序,完成设计报告 | ||||||
参 考 资 料 | 百度文库 MATLAB数据库论坛 张德峰,《MATLAB数字图像处理》,机械工业出版社。2009,1
| ||||||
指导教师签字 | 孟 辉 | 基层教学单位主任签字 | 赵 勇 |
说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2013年12 月 5 日
目 录
一 绪论 …………………………………………………………………………………………………………………2
二 设计目的………………………………………………………………………………………………………………4
三 设计原理………………………………………………………………………………………………………………4
3.1傅里叶变换的基本知识…………………………………………………………………………………………4
3.2MATLAB提供的快速傅里叶变换……………………………………………………………………………6
3.3简单低通滤波器的设计…………………………………………………………………………………………7
四 设计要求………………………………………………………………………………………………………………10
4.1理想低通滤波器的设计 ……………………………………………………………………………………11
4.2理想高通滤波器的设计 ……………………………………………………………………………………13
五 总结 ……………………………………………………………………………………………………………………17
六 参考文献………………………………………………………………………………………………………………17
绪 论
MATLAB的英文全称Matrix Laboratory(矩阵实验室).一开始它是一种专门用于矩阵数值计算的软件。 从这一点可以看出,它在矩阵运算方面有自己的特点。实际上,MATLAB中的绝大多数运算都是通过矩阵这一形式完成的。从理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理时,首先必须对其在空间和亮度上进行数字化。
图像处理技术的发展大致经历了处创期,发展期,普及期和实用化期4个阶段。初创期开始于20世纪60年代,当时的图像采用像素型光栅进行扫描显示,大多采用中,大型机对其处理。20世纪90年代是图像处理技术的实用化时期,图像处理的信息量巨大,对处理器速度的要求极高。
傅立叶变换是数字信号处理领域一种很重要的算法。要知道傅立叶变换算法的意义,首先要了解傅立叶理的意义。
傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。和傅立叶变换算法对应的是反傅立叶变换算法。该反变换从本质上说也是一种累处理,这样就可以将单独改变的正弦波信号转换成一个信号。因此,可以说,傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅立叶反变换将这些频域信号转换成时域信号。从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换。它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。
傅立叶变换及图像的频域处理
一、设计目的
1、理解离散傅立叶变换的基本原理;
2、掌握应用MATLAB语言进行FFT及逆变换的方法;
3、熟悉图像在频域中处理方法,应用MATLAB语言作简单的低通滤波器。
二、设计原理
1、傅立叶变换的基本知识
在图像处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图像分析、图像增强及图像压缩等方面。
假设f(x, y)是一个离散空间中的二维函数,则该函数的二维傅立叶变换的定义如下:
p=0,1…M-1 q=0,1…N-1 (6.1)
或 p=0,1…M-1 q=0,1…N-1 (6.2)
离散傅立叶反变换的定义如下:
m=0,1…M-1 n=0,1…N-1 (6.3)
F(p, q)称为f(m, n)的离散傅立叶变换系数。这个式子表明,函数f(m, n)可以用无数个不同频率的复指数信号和表示,而在频率(w1,w2)处的复指数信号的幅度和相位是F(w1,w2)。
例如,函数f(m, n)在一个矩形区域内函数值为1,而在其他区域为0,如图所示。
了简便起见,假设f(m, n)为一个连续函数,则f(m, n)的傅立叶变换的幅度值(即)显示为网格图,如图所示。
将傅立叶变换的结果进行可视化的另一种方法是用图像的方式显示变换结果的对数幅值,如图所示。
几种简单函数的傅立叶变换的频谱可以直观的表示为图所示的样子。
2、MATLAB提供的快速傅立叶变换函数
(1) fft2
fft2函数用于计算二维快速傅立叶变换,其语法格式为:
B = fft2(I)
B = fft2(I)返回图像I的二维fft变换矩阵,输入图像I和输出图像B大小相同。
例如,计算图像的二维傅立叶变换,并显示其幅值的结果,如图所示,其命令格式如下
load imdemos saturn2
imshow(saturn2)
B = fftshift(fft2(saturn2));
imshow(log(abs(B)), [ ], ‘notruesize’)
(2) fftshift
MATLAB提供的fftshift函数用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:
B = fftshift(I)
对于矩阵I,B =fftshift(I)将I的一、三象限和二、四象限进行互换。
(3) ifft2
ifft2函数用于计算图像的二维傅立叶反变换,其语法格式为:
B = ifftn(I)
B = ifftn(I)返回图像I的二维傅立叶反变换矩阵,输入图像I和输出图像B大小相同。其语法格式含义与fft2函数的语法格式相同,可以参考fft2函数的说明。
3、简单低通滤波器的设计
一个图像经过傅立叶变换后,就从空域变到了频域,因此我们可以用信号处理中对于频域信号的处理方法对一幅图像进行处理。比如对图像进行低通滤波等。
一个二维的理想低通滤波器(ILPF),它的传递函数由下式确定:
(6.4)
式中D0是一个规定的非负的量,称为截止频率,虽然在计算机中必定能够模拟一个锐截止频率的理想低通滤波器,但它们不能用电子元件来实现。实际中比较常用的低通滤波器有:巴特沃思(Butterworth)滤波器、指数滤波器(ELPF)、梯形低通滤波器等。
在实验中我们设计一个理想的低通滤波器。
设计理想的低通滤波器由其定义可知只要设计一个与频域图像大小完全相同的矩阵。在某一个域值内该矩阵的值为1,其余为0即可。
例:若图像的大小为128*128,则可以这样设计一个低通滤波器:
H=zeros(128);
H(32:96, 32:96)=1; %此处的范围是人为取定的,可以根据需要更改。
若图像矩阵I的傅立叶变换是B(已经用fftshift将频谱中心移至矩阵的中心),则对这幅图像做低通滤波,再做傅立叶逆变换命令为
LOWPASS=B.* H; %此处变换后的矩阵为LOWPASS,另注意这儿是矩阵的点乘。
C=ifft2(LOWPASS);
imshow(abs(C))
参考代码实现:
I=imread(‘guzhe.jpg'’); %读入原图像文件
imshow(I); %显示原图像
fftI=fft2(I); %二维离散傅立叶变换
sfftI=fftshift(fftI); %直流分量移到频谱中心
RR=real(sfftI); %取傅立叶变换的实部
II=imag(sfftI); %取傅立叶变换的虚部
A=sqrt(RR.^2+II.^2); %计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225; %归一化
figure; %设定窗口
imshow(A); %显示原图像的频谱
2.理想低通滤波器参考代码实现:
I= imread(' guzhe.jpg'');
[f1,f2]= freqspace(size(I),'meshgrid');
Hd= ones(size(I));
r= sqrt(f1.^2 + f2.^2);
%0.1
Hd(r>0.1)= 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;¨
Ya=ifftshift(Ya);
Ia01=ifft2(Ya);
%0.2
Hd(r>0.2)= 0; ÷
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd; ¨
Ya=ifftshift(Ya);
Ia02=ifft2(Ya);
%0.5
Hd(r>0.5)= 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia05=ifft2(Ya);
subplot(2,2,1),imshow(I),title('原图像')
subplot(2,2,2),imshow(uint8(Ia01)),title('r=0.1')
subplot(2,2,3),imshow(uint8(Ia02)),title('r=0.2')
subplot(2,2,4),imshow(uint8(Ia05)),title('r=0.5')
3. 理想高通滤波器参考代码实现:
I= imread(' guzhe.jpg'');
[f1,f2]= freqspace(size(I),'meshgrid');
Hd= ones(size(I));
r= sqrt(f1.^2 + f2.^2);
%0.1
Hd(r<0.1)= 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia01=ifft2(Ya);
%0.2
Hd(r<0.2)= 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia02=ifft2(Ya);
%0.5
Hd(r<0.5)= 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia05=ifft2(Ya);
subplot(2,2,1),imshow(I),title('原图像')
subplot(2,2,2),imshow(uint8(Ia01)),title('r=0.1')
subplot(2,2,3),imshow(uint8(Ia02)),title('r=0.2')
subplot(2,2,4),imshow(uint8(Ia05)),title('r=0.5')
三、设计要求
1、读取图像guzhe.jpg,显示这幅图像,对图像作傅立叶变换,显示频域振幅图像。作傅立叶逆变换,显示图像,看是否与原图像相同。
A=imread(' guzhe.jpg');
subplot(1,3,1),imshow(A);title('原图像');
A=rgb2gray(A);
B=fftshift(fft2(A));
subplot(1,3,2),imshow(log(abs(B)),[ ], 'notruesize');title('二维傅立叶变换');
C= ifft2(B);
subplot(1,3,3),imshow(log(abs(C)),[ ], 'notruesize');title('逆变换后图像');
2、设计一个简单的理想低通滤波器(截止频率自选),对图像作频域低通滤波,再作反变换,观察不同的截止频率下反变换后的图像与原图像的区别。
A=imread(' guzhe.jpg ');
subplot(3,2,1),imshow(A);title('原图像');
A=rgb2gray(A);
B=fftshift(fft2(A));
E= ifft2(B);
subplot(3,2,2),imshow(log(abs(E)),[ ], 'notruesize');title('未滤波的逆变换图像');
[X,MAP]=imread(' guzhe.jpg ');
[m,n]=size(X);
H1=zeros(m,n);
H1(m/2:m, n/2:n)=1;
LOWPASS1=B’.* H1;
C=ifft2(LOWPASS1);
subplot(3,2,3),imshow(log(abs(LOWPASS1)),[ ], 'notruesize');title('低通1');
subplot(3,2,4),imshow(log(abs(C)),[ ], 'notruesize');title('低通1逆变换图像');
H2=zeros(m,n);
H2(m/10:m,n/10:n)=1;
LOWPASS2=B’.* H2;
D=ifft2(LOWPASS2);
subplot(3,2,5),imshow(log(abs(LOWPASS2)),[ ], 'notruesize');title('低通2');
subplot(3,2,6),imshow(log(abs(D)),[ ], 'notruesize');title('低通2逆变换图像');
3、设计一个简单的理想高通滤波器(截止频率自选),对图像作频域高通滤波,再作反变换,观察不同的截止频率下反变换后的图像与原图像的区别。
A=imread(' guzhe.jpg ');
subplot(3,2,1),imshow(A);title('原图像');
A=rgb2gray(A);
B=fftshift(fft2(A));
E= ifft2(B);
subplot(3,2,2),imshow(log(abs(E)),[ ], 'notruesize');title('未滤波的逆变换图像');
[X,MAP]=imread(' guzhe.jpg ');
[m,n]=size(X);
H1=ones(m,n);
H1(m/3:m*2/3,n/3:n*2/3)=0;
LOWPASS1=B’.*H1;
C=ifft2(LOWPASS1);
subplot(3,2,3),imshow(log(abs(LOWPASS1)),[ ], 'notruesize');title('高通1');
subplot(3,2,4),imshow(log(abs(C)),[ ], 'notruesize');title('高通1逆变换图像');
H2=ones(m,n);
H2(m*3/5:m, n*3/5:n)=0;
LOWPASS2=B’.*H2;
D=ifft2(LOWPASS2);
subplot(3,2,5),imshow(log(abs(LOWPASS2)),[ ], 'notruesize');title('高通2');
subplot(3,2,6),imshow(log(abs(D)),[ ], 'notruesize');title('高通2逆变换图像');
4、对一幅图像作傅立叶变换,显示一幅频域图像的振幅分布图和相位分布图,分别对振幅分布和相位分布作傅立叶逆变换,观察两幅逆变换后的图像,体会频域图像中振幅与位相的作用。
I=imread(' guzhe.jpg ');
A=fftshift(fft2(I));
A1=angle(A);
B=ifft2(A);
B1=ifft2(A1);
C=ifft2(abs(A));
figure;
subplot(2,3,1),imshow(I);title('原图像');
subplot(2,3,2),imshow(A1,[],'notruesize');title('相位谱');
subplot(2,3,3),imshow(log(abs(A)),[],'notruesize');title('傅立叶振幅频谱');
subplot(2,3,4),imshow(log(abs(B)),[],'notruesize');title('直接图像逆变换');
subplot(2,3,5),imshow(log(abs(B1)),[],'notruesize');title('相位逆变换');
subplot(2,3,6),imshow(log(abs(C)),[],'notruesize');title('傅立叶振幅逆变换');
5、设计一个其它类型(如巴特沃思、指数等)的低通滤波器,对图像作频域低通滤波,比较这一滤波器和理想滤波器滤波结果的差异。
频域低通滤波:
I=imread(' guzhe.jpg ');
I=rgb2gray(I);
A=fftshift(fft2(I));
d0=100;
N=8;
[m,n]=size(A);
h=zeros(m,n);
[a,b]=size(I);
H=zeros(a,b);
H(a/4:3*a/4,b/4:3*b/4)=1;
for i=1:m
for j=1:n
d(i,j)=sqrt(i^2+j^2);
h(i,j)=1/(1+(d(i,j)/d0)^(2*N));
end
end
low1=A.*H;
B=ifft2(low1);
low2=A.*h;
C=ifft2(low2);
figure;
subplot(2,3,4),imshow(I);title('原图像');
subplot(2,3,2),imshow(log(abs(low1)),[],'notruesize');title('理想低通滤波频谱');
subplot(2,3,3),imshow(log(abs(low2)),[],'notruesize');title('巴特沃思低通滤波频谱');
subplot(2,3,1),imshow(log(abs(A)),[],'notruesize');title('傅立叶振幅频谱');
subplot(2,3,5),imshow(uint8(abs(B)),[],'notruesize');title('理想低通滤波后图像');
subplot(2,3,6),imshow(uint8(abs(C)),[],'notruesize');title('巴特沃思低通滤波后图像');
四.总结
这次课程设计,我们使用了MATLAB进行频域低通滤波,对图像进行傅里叶变换,通过设计,我们学会了实现图像的傅里叶变换,同时也在频域中实现了低通滤波。在设计过程中,我们熟悉了各个模块的作用,了解它的基本职能以及操作,为今后的学习打下了基础。
五.参考文献
MATLAB数据库论坛
张德峰,《MATLAB数字图像处理》,机械工业出版社。2009,1
罗述谦,周国宏 图像处理与分析 北京,科学出版社,2003
燕山大学课程设计评审意见表
指导教师评语:
①该生学习态度 (认真 较认真 不认真) ②该生迟到、早退现象 (有 无) ③该生依赖他人进行设计情况 (有 无)
平时成绩: 指导教师签字:
2013 年 12 月 7 日 |
图面及其它成绩: |
答辩小组评语:
①设计巧妙,实现设计要求,并有所创新。 ②设计合理,实现设计要求。 ③实现了大部分设计要求。 ④没有完成设计要求,或者只实现了一小部分的设计要求。
答辩成绩: 组长签字:
2013 年 12 月 7 日 |
课程设计综合成绩: |
答辩小组成员签字:
2013年 12 月 7 日 |