matlab课设.docx
《matlab课设.docx》由会员分享,可在线阅读,更多相关《matlab课设.docx(9页珍藏版)》请在冰豆网上搜索。
![matlab课设.docx](https://file1.bdocx.com/fileroot1/2023-2/5/0e3dceee-7497-4c31-a4f4-a860787b095a/0e3dceee-7497-4c31-a4f4-a860787b095a1.gif)
matlab课设
《matlab》课程设计告
专业电子信息工程班级0901
设计题目图像的傅里叶变换及应用
设计人姓名杨亚娟学号2009001244
同组人杨鸿琼杨雪余道军吴书侃吴宗江
2011/6/25
设计四:
图像的傅立叶变换及其应用
一、设计目的:
通过该设计,掌握傅立叶变换的定义和含义
二、设计内容:
1.图像的离散傅立叶变换
2.快速傅立叶变换的应用
三、总体方案设计:
1.图像的离散傅里叶变换:
假设
是一个离散空间的二维函数,则该函数的二维傅里叶变换定义为
其中
是频域变量,单位是弧度/采样单元。
函数
)为函数
的频谱
二维傅里叶反变换的定义为
因此,函数
可以用无数个不同频率的复指数信号的和表示,在频率
处复指数信号的幅度和相位为
MATLAB提供的快速傅里叶变换函数:
1)fft2:
用于计算机二维快速傅里叶变换,其语法格式为
b=fft2(Ι),返回图像Ι的二维傅里叶变换矩阵,输入图像Ι和输出图像B大小相同;
b=fft2(Ι,m,n),通过对图形Ι剪贴或补零,按用户指定的点数计算二维傅里叶变换,返回矩阵B的大小为m×n。
很多MATLAB图像显示函数无法显示复数图像,为了观察图像傅里叶变换后的结果,应对变换后的结果求模,方法是对变换结果使用abs函数。
2)fftn:
用于计算n维快速傅里叶变换,其语法格式为fftn:
b=fftn(I),计算图像的n维傅里叶变换,输出图像B和输入图像I大小相同;
B=FFTN(I,size),通过对图像I剪贴过补零,按size指定的点数计算n维傅里叶变换,返回矩阵B的大小为size。
3)fftshift:
用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:
b=fftshift(Ι),将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。
2、快速傅里叶变换的应用
1)滤波器频率响应
滤波器冲激响应的傅里叶变换就是该滤波器的频率响应。
MATLAB提供的freqz2函数可以同时计算和现示滤波器的频率响应,其语法格式为:
freqz2(h),可同时计算和现示滤波器的频率响应。
2)快速卷积
傅里叶变换的另一个重要特性是能够实现快速卷积,由线性系统理论可知,两个系统卷积的傅里叶变换等于两个函数的傅里叶变换的乘积。
该特性与快速傅里叶变换一起,可以快速计算函数的卷积。
假设A为M×N矩阵,B为P×Q矩阵,则快速卷积方法如下
(1)对A和B补0,使其大小都为(M+P-1)×(N+Q-1)
(2)利用函数fft2对矩阵进行二维FFT变换;
(3)将两个FFT结果相乘,利用函数ifft2对得到的乘积进行傅里叶反变换
另外,利用MATLAB提供的卷积函数conv2可以直接对两个函数进行卷积,其语法格式为:
C=conv2(A,B),计算A和B的二维卷积。
四、设计报告要求
(1)加载imdemossaturn2文件,显示文件中的图像saturn2,并对其进行傅里叶变换,给出源程序及结果,并显示其幅值的结果
(2)对矩阵A=magic(3)和B=ones(3)按照快速计算卷积的方法计算两个矩阵的卷积,并用卷积函数conv2验证结果,给出源程序及结果。
五、源程序
(1)
>>y=imread('saturn.png');
>>image(y)
>>b=fft2(y);
Warning:
FFTonvaluesofclassUINT8isobsolete.
UseFFT(DOUBLE(X))orFFT(SINGLE(X))instead.
>Inuint8.fftat10
Infft2at25
>>x=abs(b);
>>c=uint8(x);
>>imshow(c)
Warning:
Imageistoobigtofitonscreen;displayingat33%
>Inimuitools\private\initSizeat86
Inimshowat196
(2)
>>A=magic(3)
A=
816
357
492
>>B=ones(3)
B=
111
111
111
>>A(5,5)=0
A=
81600
35700
49200
00000
00000
>>B(5,5)=0
B=
11100
11100
11100
00000
00000
>>x=fft2(A)
x=
Columns1through3
45.00007.5000-23.0826i7.5000+5.4491i
7.5000-23.0826i-15.2254-1.3143i13.0902+9.5106i
7.5000+5.4491i10.0000+5.2573i12.7254-2.1266i
7.5000-5.4491i1.9098-5.8779i1.9098+4.2533i
7.5000+23.0826i13.0902+2.6287i10.0000+8.5065i
Columns4through5
7.5000-5.4491i7.5000+23.0826i
10.0000-8.5065i13.0902-2.6287i
1.9098-4.2533i1.9098+5.8779i
12.7254+2.1266i10.0000-5.2573i
13.0902-9.5106i-15.2254+1.3143i
>>y=fft2(B)
y=
Columns1through3
9.00001.5000-4.6165i1.5000+1.0898i
1.5000-4.6165i-2.1180-1.5388i0.8090-0.5878i
1.5000+1.0898i0.8090-0.5878i0.1180+0.3633i
1.5000-1.0898i-0.3090-0.9511i0.3820
1.5000+4.6165i2.6180-0.3090+0.9511i
Columns4through5
1.5000-1.0898i1.5000+4.6165i
-0.3090-0.9511i2.6180
0.3820-0.3090+0.9511i
0.1180-0.3633i0.8090+0.5878i
0.8090+0.5878i-2.1180+1.5388i
>>z=x.*y
z=
1.0e+002*
Columns1through3
4.0500-0.9531-0.6925i0.0531+0.1635i
-0.9531-0.6925i0.3023+0.2621i0.1618+0.0000i
0.0531+0.1635i0.1118-0.0162i0.0227+0.0437i
0.0531-0.1635i-0.0618-0.0000i0.0073+0.0162i
-0.9531+0.6925i0.3427+0.0688i-0.1118+0.0688i
Columns4through5
0.0531-0.1635i-0.9531+0.6925i
-0.1118-0.0688i0.3427-0.0688i
0.0073-0.0162i-0.0618+0.0000i
0.0227-0.0437i0.1118+0.0162i
0.1618-0.0000i0.3023-0.2621i
>>D=ifft2(z)
D=
8.00009.000015.00007.00006.0000
11.000017.000030.000019.000013.0000
15.000030.000045.000030.000015.0000
7.000021.000030.000023.00009.0000
4.000013.000015.000011.00002.0000
>>C=conv2(A,B)
C=
8915760000
11173019130000
15304530150000
721302390000
413151120000
000000000
000000000
000000000
000000000
subplot(1,2,1);plot(C);title('MatrixC');
subplot(1,2,2);plot(D);title('MatrixC')
六、仿真结果
(1)
(2)
七.课程设计总结
我通过该设计,熟练掌握傅立叶变换的定义及含义,理解对图像的离散傅立叶变换。
更进一步了解MATLAB的语法规则与编辑方法。
学会快速傅立叶变换的应用:
滤波器频率响应和快速卷积。
等很多光看书学不到的东西。
更加加深了我对MATLAB这门课程的兴趣与理解。
八.课程设计心得体会
经过了一个学期的MATLAB的学习,我们掌握了很多关于MATLAB操作方面,编程方面的知识。
这个学期末,我们小组在一起研究了关于“图像的傅里叶变换及其应用”方面的课程设计。
每一天过得比以前更加紧张而充实,实验室里,图书馆里,留下了我们忙碌的身影。
虽然到现在只有短短不到两周的时间,但是通过实验所获得了不少阶段性成果,从中学到了许多重要的东西,不仅仅是在编程设计方面,也有许多人生成功方面的体会。