数字图像处理课 程 设 计
题
目
图像的几何变换重建
系 (部)
信息工程系
班
姓
学
级
名
号
指导教师
2013 年 12 月 16 日至 12 月 27 日 共 2 周
2013 年 12 月 27 日
数字图像处理 课程设计任务书
一、设计题目、内容及要求
设计题目:图像的几何变换重建
1、设计内容:
(1)能够读取和存储图像。
(2)实现图像的平移、缩放、旋转几何变换。
(3)分别采用最近邻插值和双线性插值技术进行图像重建。
(4)编写代码实现上述功能。
2、设计要求:
(1)利用数字图像处理技术,以 MATLAB 为平台,建立一个实现设计主题的
简易处理系统。
(2)能显示输入图像、输出图像。
(3)不允许直接调用 MATLAB 工具箱中的几何变换函数。
(4)程序代码要有注释说明,调用 MATLAB 函数要清楚并理解函数的功能、
使用范围,在设计说明书中要写清楚函数的功能和参数意义。
(5)完成设计说明书一份。
二、设计原始资料
MATLAB 软件、原始图像。
三、要求的设计成果(课程设计说明书、设计实物、图纸等)
设计成果为课程设计说明书和程序源代码。
每人提交电子版和纸质打印版的设计说明书各一份,电子版以“班级_学号”为名建立
文件夹,其中存放电子版课程设计报告和程序源代码。以班为单位刻录光盘一张。
四、进程安排
第一周:周 1 布置设计任务,学生查阅相关资料。
周 2 熟悉编程语言、确定设计方案。
周 3-5 程序设计、编写代码、上机调试。
第二周:周 1-2 继续编写代码、调试程序,修改并完善设计。
周 2 下午验收程序。周 3 撰写设计说明书。
周 4 上午提交设计说明书,课程设计答辩。
五、主要参考资料
[1] 章毓晋.图像处理和分析教程.北京.人们邮电出版社,2009
[2] 龚声蓉.数字图像处理与分析. 北京.清华大学出版社,2006
[3] 余成波.数字图像处理及 MATLAB 实现.重庆.重庆大学出版社,2003
[4] 姚敏.数字图像处理. 北京 .机械工业出版社,2006
[5] 李显宏. MATLAB7.x 界面设计与编程技巧.北京. 电子工业出版社,2006
[6] Kenneth R.Castleman 著,朱志刚等译,数字图像处理,电子工业出版社,2006
指导教师(签名):
教研室主任(签名):
课程设计成绩评定表
出勤天数
缺勤天数
出勤情况及设计过程表现(20 分)
课设答辩(30 分)
说明书(20 分)
设计成果(30 分)
总成绩(100 分)
出勤
情况
成
绩
评
定
提问
(答
辩)
问题
情况
综
合
评
定
指导教师签名:
年 月 日
目 录
1 引言 ......................................................... 4
1.1 课程设计的目的 ........................... 错误!未定义书签。
1.2 课程设计的任务 ........................... 错误!未定义书签。
1.3 课程设计的要求 ........................... 错误!未定义书签。
1.4 开发工具 ................................. 错误!未定义书签。
2 设计内容 ...................................................... 4
2.1 设计内容 ................................................ 4
2.2 系统框图 ................................................ 4
3 设计方案 ..................................................... 5
3.1 功能模块的划分 ....................................... 5
3.2 算法描述 ............................................. 5
3.3 实现主要功能的原理和方法 ............................. 8
3.3.1 最近邻域插值法 ........................................ 8
3.3.2 双线性插值法 .......................................... 8
4 功能模块的具体实现 ........................................... 10
4.1 模块功能 ............................................... 10
4.2 流程图 ................................................. 11
4.3 程序清单及各模块的实现效果图 ........................... 11
4.4 系统仿真与调试 ......................................... 21
5 总结与体会 .................................................. 22
参考文献 ...................................................... 22
附录 .......................................................... 23
1 引言
2 设计内容
2.1 设计内容
我选取的是图像的几何变换,设计内容如下,
(1)能够读取和存储图像。
(2)实现图像的平移、缩放、旋转几何变换。
(3)分别采用最近邻插值和双线性插值技术进行图像重建。
(4)编写代码实现上述功能。
2.2 系统框图
图像几何处理系统
平移变换
缩放变换
旋转变换
存储
双
线
性
插
值
缩
放
最
邻
近
插
值
缩
放
双
线
性
插
值
旋
转
最
邻
近
插
值
旋
转
存储
存储
存储
存储
图 2-1 系统框图
本次课设所做的图像几何变换包括平移变换、缩放变换和旋转变换。缩放变
换和旋转变换均用双线性插值变换和最近邻插值变换两种方法来做,对图像进行
处理后再存储。
4
3 设计方案
3.1 功能模块的划分
本次设计整体分为四大模块:原图、平移、缩放和旋转。其中缩放和旋转又
分别有双线性插值和最近邻插值两模块。
3.2 算法描述
图像比例缩放是指将给定的图像在 x 轴方向按比例缩放 fx 倍,在 y 轴按比
例缩放 fy 倍,从而获得一幅新的图像。如果 fx=fy,即在 x 轴方向和 y 轴方向缩
放的比率相同,称这样的比例缩放为图像的全比例缩放。如果 fx≠fy,图像的比
例缩放会改变原始图象的像素间的相对位置,产生几何畸变。
设原图像中的点 P0(x0,y0)比例缩放后,在新图像中的对应点为 P(x,y),则比
例缩放前后两点 P0(x0,y0)、P(x,y)之间的关系用矩阵形式可以表示为
其逆运算为
即
x
y
1
fx
0
0
0
fy
0
0
0
1
0
x
y
0
1
0
x
y
0
1
1
fx
0
0
0
1
fy
0
0
0
1
x
y
1
x
0
y
0
x
fx
y
fy
(3-1)
(3-2)
(3-3)
比例缩放所产生的图像中的像素可能在原图像中找不到相应得像素点,这样
就必须进行插值处理。下面首先讨论图像的比例缩小。最简单的比例缩小时当
fx=fy=0.5 时,图像被缩到一半大小,此时缩小后图像中的(0,0)像素对应于原图
像中的(0,0)像素;(0,1)像素对应于原图像中的(0,2)像素;(1,0)像素对应于原图像
中的(2,0)像素,以此类推。图像缩小之后,因为承载的数据量小了,所以画布可
相应缩小。此时,只需在原图像基础上,每行隔一个像素取一点,每隔一行进行
操作,即取原图的偶奇数行和偶奇数列构成新的图像。如果图像按任意比例缩小,
5
则需要计算选择的行和列。
如果 M×N 大小的原图像 F(x,y)缩小为 kM×kN 大小的新图像 I(x,y)时,则
I(x,y)=F(int(c×x),int(c×y))
(3-4)
其中,c=1/k。由此公式可以构造出新图像。
当 fx≠fy 时,图像不按比例缩小,这种操作因为在 x 方向和 y 方向的缩小比
例不同,一定会带来图像的几何畸变。图像不按比例缩小的方法是:如果 M×N
大小的旧图 F(x,y)缩小为 k1M×k2N 大小的新图像 I(x,y)时,则
I(x,y)=F(int(c1×x),int(c2×y))
(3-5)
其中 c1=1/k1,c2=1/k2,由此公式可以构造出新图像。
图像的缩小操作中,是在现有的信息里如何挑选所需要的有用信息。而在图
像的放大操作中,则需要对尺寸放大后所多出来的空格填入适当的像素值,这是
信息的估计问题,所以较图像的缩小要难一些。当 fx=fy=2 时,图像被按全比例
放大二倍,放大后图像中的(0,0)像素对应于原图中的(0,0)像素;(0,1)像素对应于
原图中的(0,0.5)像素,该像素不存在,可以近似为(0,0)也可以近似为(0,1);(0,2)
像素对应于原图像中的(0,1)像素;(1,0)像素对应于原图中的(0.5,0),它的像素值
近似于(0,0)或(1,0)像素;(2,0)像素对应于原图中的(1,0)像素,依此类推。其实这
是将原图像每行中的像素重复取值一遍,然后每行重复一次。
按比例将原图像放大 k 倍时,如果按照最近邻域法则需要将一个像素值添在
新图像的 k×k 的子块中。显然,如果放大倍数太大,按照这种方法处理会出现马
时,图像在 x 方向和 y 方向不按比例放大,此时
赛克效应。当
这种操作由于 x 方向和 y 方向的放大倍数不同,一定会带来图像的几何畸变。放
1 k
k 的子块中去。为了提高
大的方法是将原图像的一个像素添到新图像的一个
几何变换后的图像质量,常采用线性插值法。该方法的原理是,当求出的分数地
fy
fx
)0
fy
fx
(
,
2
址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域
的像素灰度值进行线性插值。
旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将
图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即
可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的
逆时针旋转角后的对应点为
)
旋转变换也可以用矩阵变换来表示。设点
,(
yxP
。那么,旋转前后点
)
0
的坐标分别是:
(
,
yxP
0
0
)
,(
yxP
cos
cos
0
(
,
yxP
0
0
x
y
)
、
r
r
0
0
x
y
r
r
cos(
sin(
)
)
r
r
cos
sin
sin
r
cos
r
cos
cos
sin
sin
x
0
x
0
cos
sin
6
0
y
y
0
(3-6)
(3-7)
sin
cos
写成矩阵表达式为
其逆运算为
x
y
1
cos
sin
0
sin
cos
0
0
0
1
0
x
y
0
1
x
y
1
cos
sin
0
sin
cos
0
0
0
1
0
x
y
0
1
(3-8)
(3-9)
利用上述方法进行图像旋转时需要注意如下两点:
(1)图像旋转之前,为了避免信息的丢失,一定要有坐标平移。
(2)图像旋转之后,会出现许多空洞点。对这些空洞点必须进行填充处理,
否则画面效果不好,一般也称这种操作为插值处理。
以上所讨论的旋转是绕坐标轴原点(0,0)进行的。如果图像旋转是绕一个指定
点(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平
移回原来的坐标原点,这实际上是图像的复合变换。如将一幅图像绕点(a,b)逆时
针旋转度,首先将原点平移到(a,b),即
01
10
00
a
b
1
(3-10)
A
然后旋转
然后再平移回来
综上所述,变换矩阵为
B
cos
sin
0
sin
cos
0
0
0
0
C
01
a
10
b
100
(3-11)
(3-12)
ABCT
。
7