数学图像处理·实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一实验目的
1.了解图像变换的意义和手段;
2.熟悉傅立叶变换的基本性质;
3.熟练掌握FFT变换方法及应用;
4.通过实验了解二维频谱的分布特点;
5.通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。
6.评价人眼对图像幅频特性和相频特性的敏感度。
二实验要求
(一)请按以下操作步骤完成实验内容:
1.将图像内容读入内存;
2.用Fourier变换算法,对图像作二维Fourier变换;
3.将其幅度谱进行搬移,在图像中心显示;
4.用Fourier系数的幅度进行Fourier反变换;
5.用Fourier系数的相位进行Fourier反变换;
6.将原图像分别旋转45度和90度后重复步骤2-5
7.比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。
8.记录和整理实验报告。
(二)实验拓展
独立完成以下实验:创建一副图像,大小为 128*128,背景为黑色,中间开出一个 8×8 白色的窗口;运用 ff2 函数,对上面产生的图像做二维离散傅立叶变换。将图像旋转45度后重复一次实验。(此附加操作不用另写实验报告只把操作原始图和频谱图粘贴到上面实验报告的最后面就可以。)
(三)完成后请整理实验报告,实验报告要求如下:
在实验报告中写出实验目的实验原理,描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果和源代码,并进行必要的讨论,必须包括原始图像及其计算/处理后的图像。
三实验器材
1.计算机(windows10);
2.MATLAB 程序;
3.移动式存储器
4.记录用的笔、纸。
四 实验原理
1 应用傅立叶变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
2 傅立叶(Fourier )变换的定义
对于二维信号,二维Fourier 变换定义为:
2()(,)(,)j ux uy F u v f x y e dxdy π∞∞
−+−∞−∞=
⎰⎰
逆变换: 2()(,)(,)j ux uy f x y F u v e dudv π∞∞
+−∞−∞=
⎰⎰
二维离散傅立叶变换为: 11
2()00
1(,)(,)i k N N j m n N N i k F m n f i k e N π−−−+===∑∑ 逆变换:
112()001(,)(,)i k N N j m n N N m n f i k F m n e N π−−+===∑∑
图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。
五 实验步骤
1.下载实验图片,利用PS 将所下载图片格式转为tif ;
2.利用imread ()函数读入原图像.tif 格式;
3.利用傅里叶变换函数,对图像进行傅里叶变换;
4.利用fftshift()函数将其幅度谱进行搬移,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,在图像中心显示;
5.用Fourier系数的幅度进行Fourier反变换;
6.用Fourier系数的相位进行Fourier反变换;
7.利用imrotate()函数将原图像分别旋转45度和90度后重复步骤2-6
8.比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。
8.记录和整理实验报告。
六实验代码
%原图像
N=imread('number.tif'); %将图像内容读入内存
subplot(2,2,1);
imshow(N); %显示原图像
title('原图像');
fftN=fft2(N); %二维离散傅里叶变换
sfftN=fftshift(fftN); %直流分量移到频谱
RR=real(sfftN); %取傅里叶变换的实部
II=imag(sfftN); %取傅里叶变换的虚部
A=sqrt(RR.^2+II.^2); %计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225
%归一化
subplot(2,2,2);
imshow(A); %显示原图像的频谱
title('原图像频谱');
f1=ifft2(A); %用傅里叶系数的幅度进行傅里叶反变换
f2=ifft2(angle(fftN)); %用相位进行傅里叶反变换
subplot(2,2,3);
imshow(f1,[]);
title('幅度进行傅里叶反变换');
subplot(2,2,4);
imshow(f2,[]);
title('相位进行傅里叶反变换')
%旋转45度
M=imread('number.tif'); %将图像内容读入内存
N=imrotate(M,315); %将原图像顺时针旋转45度subplot(2,2,1);
imshow(N); %显示原图像
title('旋转45度图像');
fftN=fft2(N); %二维离散傅里叶变换sfftN=fftshift(fftN); %直流分量移到频谱
RR=real(sfftN); %取傅里叶变换的实部
II=imag(sfftN); %取傅里叶变换的虚部
A=sqrt(RR.^2+II.^2); %计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225 %归一化
subplot(2,2,2);
imshow(A); %显示原图像的频谱
title('旋转45度后图像频谱');
f1=ifft2(A); %用傅里叶系数的幅度进行傅里叶反变换f2=ifft2(angle(fftN)); %用相位进行傅里叶反变换subplot(2,2,3);
imshow(f1,[]);
title('幅度进行傅里叶反变换');
subplot(2,2,4);
imshow(f2,[]);
title('相位进行傅里叶反变换')