《太原理工大学 matlab课程设计 图像的傅里叶变换及其应用 doc.doc》由会员分享,可在线阅读,更多相关《太原理工大学 matlab课程设计 图像的傅里叶变换及其应用 doc.doc(7页珍藏版)》请在金锄头文库上搜索。
1、课程名称: MATLAB及在电子信息课程中的应用 实验名称: 图像的傅里叶变换及其应用 设计四 图像的傅里叶变换及其应用一、设计目的通过该设计,掌握傅里叶变换的定义及含义。二、设计内容及主要的MATLAB函数1、图像的离散傅里叶变换假设是一个离散空间中的二维函数,则该函数的二维傅里叶变换定义为其中是频域变量,单位是弧度/采样单元。函数为函数 的频谱。二维傅里叶反变换的定义为因此,函数可以用无数个不同频率的复指数信号的和表示,在频率处复指数信号的幅度和相位为MATLAB提供的快速傅里叶变换函数1)fft2:用于计算二维快速傅里叶变换,其语法格式为b=fft2(I),返回图像I的二维傅里叶变换矩阵
2、,输入图像I和输出图像B大小相同;b=fft2(I,m,n),通过对图像I剪切或补零,按用户指定的点数计算二维傅里叶变换,返回矩阵B的大小为mn。很多MATLAB图像显示函数无法显示复数图像,为了观察图像傅里叶变换后的结果,应对变换后的结果求模,方法是对变换结果使用abs函数。2)fftn:用于计算n维快速傅里叶变换,其语法格式为b=fftn(I),计算图像的n维傅里叶变换,输出图像B和输入图像I大小相同;b=fftn(I, size),通过对图像I剪切或补零,按size指定的点数计算n维傅里叶变换,返回矩阵B的大小为size。3) fftshift:用于将变换后的图像频谱中心从矩阵的原点移到
3、矩阵的中心,其语法格式为b=fftshift(I),将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。2、快速傅里叶变换的应用1)滤波器频率响应滤波器冲击响应的傅里叶变换就是该滤波器的频率响应MATLAB提供的freqz2函数可以同时计算和显示滤波器的频率响应,其语法格式为freqz2(h),可同时计算和显示滤波器的频率响应。2)快速卷积傅里叶变换的另一个重要特性是能够实现快速卷积。由线性系统理论可知,两个系统卷积的傅里叶变换等于两个函数的傅里叶变换的乘积。该特性与快速傅里叶变换一起,可以快速计算函数的卷积。假设A为MN矩阵,B为PQ矩阵,则快速计算卷积的方法如下对A和B补0,使其大小都为(M
4、+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 加载文
5、件命令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
6、(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(sa
7、turn2); b=fftshift(a);c=abs(b);imshow(log(c),) plot(c)2、对矩阵A=magic(3)和B=ones(3)按照快速计算卷积的方法计算两个矩阵的卷积,并用卷积函数conv2验证结果给出源程序及结果。源程序如下:方法一 A=magic(3)A = 8 1 6 3 5 7 4 9 2 B=ones(3)B = 1 1 1 1 1 1 1 1 1 A(5,5)=0,B(5,5)=0A = 8 1 6 0 0 3 5 7 0 0 4 9 2 0 0 0 0 0 0 0 0 0 0 0 0B = 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0
8、 0 0 0 0 0 0 0 0 0 0 c=ifft2(fft2(A).*fft2(B)c = 8.0000 9.0000 15.0000 7.0000 6.0000 11.0000 17.0000 30.0000 19.0000 13.0000 15.0000 30.0000 45.0000 30.0000 15.0000 7.0000 21.0000 30.0000 23.0000 9.0000 4.0000 13.0000 15.0000 11.0000 2.0000方法二A=magic(3),B=ones(3)A = 8 1 6 3 5 7 4 9 2B = 1 1 1 1 1 1 1 1 1 d=conv2(A,B)d = 8 9 15 7 6 11 17 30 19 13 15 30 45 30 15 7 21 30 23 9 4 13 15 11 2七、设计总结