matlab-光电图像处理实验(傅立叶变换)
- 格式:doc
- 大小:319.50 KB
- 文档页数:8
光学图像处理
实
验
报
告
学生姓名:
班级:
学号:
指导教师:
日期:
一、实验室名称:
二、实验项目名称: 图像变换
三、实验原理:
傅立叶变换是信号处理领域中一个重要的里程碑,它在图像处理技术中
同样起着十分重要的作用,被广泛的应用于图像特征提取、图像增强与恢复、噪声抑制、纹理分析等多个方面。
1、离散傅立叶变换(DFT ):
要把傅立叶变换应用到数字图像处理当中,就必须处理离散数据,离散傅
立叶变换的提出使得这种数学方法能够和计算机技术联系起来。
正变换:
逆变换:
幅度:
相位角:
功率谱:
2、快速傅立叶变换(FFT ): 离散傅立叶变换运算量巨大,计算时间长,其运算次数正比于N^2,当
N 比较大的时候,运算时间更是迅速增长。二快速傅立叶变换的提出将傅立叶变换的复杂度由N^2下降到了NlgN/lg2,当N 很大时计算量可大大减
少。
而快速傅立叶变换(FFT)需要进行基2或者基4的蝶形运算,算法上面
较离散傅立叶变换困难。
∑∑-=-=+-=1010)//(2),(1),(M x N y N vy M ux j e y x f MN v u F π∑∑-=-=+=1010)
//(2),(),(M x N y N vy M ux j e v u F y x f π
3、离散余弦变换(DCT):
为FT 的特殊形式,被展开的函数是实偶函数的傅氏变换,即只有余弦项。变换核固定,利于硬件实现。具有可分离特性,一次二维变换可分解为两次一维变换。
正变换:
逆变换:
其中:
四、实验目的:
1. 了解各种图像正交变换的作用和用途;
2. 掌握各种图像变换的方法和原理;
3. 熟练掌握离散傅立叶变换(DFT)、离散余弦变换(DCT)的原理、方法和实
现流程,熟悉两种变换的性质,并能对图像傅立叶变换的结果进行必要解释;
4. 熟悉和掌握利用Matlab 工具进行图像傅立叶变换及离散余弦变换的基本
步骤、MATLAB 函数使用及具体变换处理流程;
5. 能熟练应用Matlab 工具对图像进行FFT 及DCT 处理,并能根据需要进行
必要的频谱分析和可视化显示。
五、实验内容:
1、读取以下两幅图像,分别对其进行离散傅立叶变换(FFT)。变换处理中,要求进行频谱原点平移到(0,0),并能分别显示出其2D 频谱图。通过对变换结果的分析,可以看出变换结果满足傅立叶变换(FT )的什么性质。
2、任意读取一幅灰度图像,对其进行FFT 变换,变换结果要求分别展示其64×64、128×128、256×256 的频谱图(注:为便于分析,要求变换结果的频率原点移动到(0.0)),且对64×64 频谱图能进行3D 显示。
3、任意读取一幅灰度图像,对其进行DCT 变换。变换处理过程要求利用正交变换矩阵法及matlab 的dct2()函数两种方法分别进行,并对变换结果进行比较和分析。
六、实验器材(设备、元件):
()()()()⎪⎭⎫ ⎝⎛+⎪⎭⎫ ⎝⎛+=∑∑-=-=N y v N x u y x f v c u c v u F N x N y c 212cos 212cos ,)()(,1010ππ∑∑-=-=⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡+=101
02)12(cos 2)12(cos ),()()(),(N u N v c N v y N u x F y c x c y x f ππυμ⎪⎩⎪⎨⎧-≤≤==1
1201)(N k N k N k c
计算机,Matlab软件
七、实验步骤:
1、快速傅立叶变换(FFT):
⑴打开计算机,进入Matlab程序。
⑵画出程序设计流程图(图一),在Matlab中输入代码读取各图像。
⑶将两图分别转换成灰度图像。
⑷FFT变换,并将中心平移。
⑸将平移后矩阵取实部,归一化显示在同一窗口中。
⑹记录下图像,并对结果进行分析。
图一图二图三
2、64X64,128X128,256X256 FFT变换:
⑴接着上一实验,画出程序设计流程图(图二),在Matlab中输入代码。
⑵读取一幅大小合适的灰度图像。
⑶对图像分别经行64X64,128X128,256X256 FFT变换,并将中心平移。
⑷将平移后图像取实部,归一化之后显示在同一窗口中。
⑸显示64X64的3D FFT图像,记录图像,并对结果进行分析。
3、DCT离散余弦变换:
⑴画出程序设计流程图(图三),在Matlab中输入代码。
⑵读取一幅大小合适的灰度图像。
⑶对图像分别调用Matlab内函数进行DCT直接变换和用正交矩阵进行变换。
⑷分别显示变换后图像。
⑸记录图像,并对结果进行分析。
八、实验结果及分析
1、快速傅立叶变换FFT:
其源代码为:
clear;
>> oimg1=imread('cameraman.tif');
>> oimg2=imread('coins.png');
>> temp1=fft2(oimg1);
>> temp2=fft2(oimg2);
>> newimg1=fftshift(temp1);
>> newimg2=fftshift(temp2);
>> A1=double(real(newimg1));
>> B1=double(imag(newimg1));
>> A2=double(real(newimg2));
>> B2=double(imag(newimg2));
>> last1=sqrt(A1.^2+B1.^2);
>> last2=sqrt(A2.^2+B2.^2);
>> newimg1=(last1/max(max(last1)))*100;
>> newimg2=(last2/max(max(last2)))*100;
>> subplot(2,2,1)
>> imshow(oimg1)
>> subplot(2,2,2)
>> imshow(newimg1)
>> subplot(2,2,3)
>> imshow(oimg2)
>> subplot(2,2,4)
>> imshow(newimg2)
其显示的结果为:
分析:将两幅图先转化为灰度图像,然后将其进行FFT变换,中心平移,取