太原理工大学matlab课程设计图像的傅里叶变换及其应用doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:MATLAB及在电子信息课程中的应用实验名称:图像的傅里叶变换及其应用

设计四图像的傅里叶变换及其应用

一、设计目的

通过该设计,掌握傅里叶变换的定义及含义。

二、设计内容及主要的MATLAB 函数

1、图像的离散傅里叶变换

假设),(n m f 是一个离散空间中的二维函数,则该函数的二维傅里叶变换定义为

n

j m j e e n m f f 21),()2,1(ωωωω--∞

∞-∞

∞-∑∑=

其中21ωω和是频域变量,单位是弧度/采样单元。函数),(21ωωf 为函数),(n m f 的频谱。

二维傅里叶反变换的定义为212

1

2121),(),(ωωωωωωπ

π

ωπ

πωd d e e f n m f n j m j ⎰⎰-

=-

==

因此,函数),(n m f 可以用无数个不同频率的复指数信号的和表示,在频率

),(21ωω处复指数信号的幅度和相位为),(21ωωf

MATLAB 提供的快速傅里叶变换函数

1)fft2:用于计算二维快速傅里叶变换,其语法格式为

b=fft2(I),返回图像I 的二维傅里叶变换矩阵,输入图像I 和输出图像B 大小相同;

b=fft2(I,m,n),通过对图像I 剪切或补零,按用户指定的点数计算二维傅里叶变换,返回矩阵B 的大小为m ⨯n 。

很多MATLAB 图像显示函数无法显示复数图像,为了观察图像傅里叶变换后的结果,应对变换后的结果求模,方法是对变换结果使用abs 函数。

2)fftn :用于计算n 维快速傅里叶变换,其语法格式为

b=fftn(I),计算图像的n 维傅里叶变换,输出图像B 和输入图像I 大小相同; b=fftn(I, size),通过对图像I 剪切或补零,按size 指定的点数计算n 维傅里叶变换,返回矩阵B 的大小为size 。

3) fftshift :用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,其语法格式为

b=fftshift(I),将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。

2、快速傅里叶变换的应用

1)滤波器频率响应

滤波器冲击响应的傅里叶变换就是该滤波器的频率响应

MATLAB提供的freqz2函数可以同时计算和显示滤波器的频率响应,其语法格式为

freqz2(h),可同时计算和显示滤波器的频率响应。

2)快速卷积

傅里叶变换的另一个重要特性是能够实现快速卷积。由线性系统理论可知,两个系统卷积的傅里叶变换等于两个函数的傅里叶变换的乘积。该特性与快速傅里叶变换一起,可以快速计算函数的卷积。

假设A为M⨯N矩阵,B为P⨯Q矩阵,则快速计算卷积的方法如下

①对A和B补0,使其大小都为(M+P-1)⨯(N+Q-1);

②利用函数fft2对矩阵进行二维FFT变换;

③将两个FFT结果相乘,利用函数ifft2对得到的乘积进行傅里叶反变换

另外,利用MATLAB 提供的卷积函数conv2可以直接对两个函数进行卷积,其语法格式为

C=conv2(A,B),计算矩阵A和B的二维卷积。

三、总体方案设计

1、加载imdemos saturn2文件,显示文件中的图像saturn2, 并对其进行傅里叶变换,给出源程序及结果,并显示其幅值的结果。

2、对矩阵A=magic(3)和B=ones(3)按照快速计算卷积的方法计算两个矩阵的卷积,并用卷积函数conv2验证结果给出源程序及结果。

四、主要参数

load 加载文件命令

fft2 用于计算二维快速傅里叶变换

fftshift 用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心

imshow 显示图像命令

abs 求幅度命令

plot 是绘制二维图形的最基本函数

ifft2 傅里叶反变换

conv2 卷积函数

五、源程序

1、加载imdemos saturn2文件,显示文件中的图像saturn2, 并对其进行傅里叶变换,给出源程序及结果,并显示其幅值的结果。

源程序如下:

>> load imdemos saturn2

>> imshow (saturn2)

>> a=fft2(saturn2);

>> b=fftshift(a);

>> c=abs(b);

>> imshow(log(c),[])

>> plot(c)

2、对矩阵A=magic(3)和B=ones(3)按照快速计算卷积的方法计算两个矩阵的卷积,并用卷积函数conv2验证结果给出源程序及结果。

源程序如下:

>> A=magic(3);

>> B=ones(3);

>> A(5,5)=0;

>> B(5,5)=0;

>> ifft2(fft2(A).*fft2(B))

>> A=magic(3);

>> B=ones(3);

>> conv2(A,B)

六、仿真结果

1、加载imdemos saturn2文件,显示文件中的图像saturn2, 并对其进行傅里叶变换,给出源程序及结果,并显示其幅值的结果。

>> load imdemos saturn2

>> imshow(saturn2)

a=fft2(saturn2);

b=fftshift(a);

c=abs(b);

相关文档
最新文档