数字图像处理实验一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验一
图像变换
一、实验目的
了解matlab有关图像的基本操作,如图像的读写,显示等。掌握二维DFT变换及其物理意义,掌握基本的灰度变换方法。
二、实验要求
1.在Matlab workspace中生成一幅大小为512×512像素的8位灰度图, 背景为黑色,中心有
一个宽40像素高20像素的白色矩形。如下图所示:
2.将这幅图像保存为文件test.bmp。
3.从文件test.bmp中读出图像到变量I。
4.在Matlab图形界面中显示变量I所代表的图像。
5.对I作二维DFT变换,结果保存到变量F。注意将频域原点调整至中心位置。
6.将傅立叶频谱,即|F|的取值范围调整为0-255并显示。
7.将上题结果作对数变换后再进行显示,结果应与课本Figure 4.3(b)一致。说明对数变换能使
频谱显示效果更好的原因。
8.对频谱图的物理意义作简要说明。
三、 实验流程
四、 理论知识
1. 在8位灰度图中,像素值大小为0-255。0代表黑色,255代表白色。
2. 二维DFT 计算公式为 ∑∑-=-=+-⨯=101
)]//(2exp[),(1),(M x N y N vy M ux j y x f MN v u F π。 由于二维DFT 是一种行列可分离的变换,其结果也可以由在两个方向上先后做一维DFT 得到。具体流程为:
(a ) 对图像每一行(即某个x 值),做一维DFT ,得到的结果保存为矩阵),(v x F 的一行。
∑-=-⨯=1
)]/2exp(),(1),(N y N vy j y x f N v x F π
(b ) 对矩阵),(v x F 的每一列(即某个v 值),做一维DFT ,得到的结果保存为矩阵
),(v u F 的一列。
)/2exp(),(1
),(10
M ux j v x F M
v u F M x π-⨯=
∑-=
3. 直接对图像),(y x f 做傅立叶变换,结果的原点处于图像左下角。将傅立叶变换结果的原点移到矩阵中心位置可利用公式。
4.傅立叶变换结果一般为复数,它的模的大小反映了图像在不同频率上能量的分布。一般用
u
F来显示和比较傅立叶变换的结果。
|v
(
,
|)
5.当用8位灰度来显示图像时,将图像灰度级调整至0-255范围内可以充分利用屏幕的显示
范围。这时可利用一个线性变换将图像最小值变换至0,将图像最大值变换至255,其余灰度值做相应平移和拉伸。其变换函数为:
[]255
r
=r
r
T
=
s
r
)
-
)
/)
max(
min(
(⨯
6.对数变换也是一种常用的灰度转换函数。其变换函数为
r
c
s
=r
T
)
)1
=
log(
(+
常数c用于调整s的动态范围,在本实验中为0-255。
7.从频谱图可以看出图像大致的方向性和灰度变化的快慢。
五、Matlab基础知识
Matlab中基本变量都是以矩阵的形式保存的。一幅图像即是一个二维的矩阵。变量名区分大小写,如a和A表示两个不同的变量。图像I中第i行第j列的像素用I(i,j)表示,其中行号和列号都从1开始计数。要了解更多关于Matlab的基本知识,可看Matlab help下的Matlab目录。
本实验可能用到的matlab函数有:zeros,imwrite,imread,imshow,FFT2,abs,log,min,max,查询具体的函数用法可以在Matlab help中查找,或在Matlab command window中打
help (空格) 函数名。
在Matlab command window中的命令在打回车后直接执行。也可以在m-file editor中编写程序,存盘为.m文件后,按Debug菜单下的Run,自动逐条执行命令。Debug菜单下还提供了设置断点,逐行执行等调试命令。做本实验时可先在command window中熟悉Matlab命令与函数,最后所有命令应保存在一个m文件中,便于检查和调试。
每次画图前可用figure命令新开一个图像窗口,否则前一次显示的图像会被新的图像覆盖。也可用figure(n)命令规定当前图像窗口序号。
用二维DFT公式直接计算图像的傅立叶变换要用到4重循环,在matlab中会比较慢。如果利用DFT的可分离性质,用两次一维DFT来实现,可减少循环次数,提高程序效率。Matlab 自带了FFT2函数,速度较快。可比较几种算法结果是否一致。
六、实验评分
1.当场检查程序内容及结果
2.实验报告,包括实验目的,算法流程,结果分析等。