数字图像处理课 程 设 计
题 目 图像的几何变换重建
系 (部) 信息工程系
班 级
姓 名
学 号
指导教师
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 引言 1
1.1课程设计的目的 1
1.2课程设计的任务 2
1.3课程设计的要求 2
1.4开发工具 2
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
参考文献 23
附录 24
1 引言
2设计内容
2.1设计内容
我选取的是图像的几何变换,设计内容如下,
(1)能够读取和存储图像。
(2)实现图像的平移、缩放、旋转几何变换。
(3)分别采用最近邻插值和双线性插值技术进行图像重建。
(4)编写代码实现上述功能。
图像几何处理系统
2.2 系统框图
缩放变换
旋转变换
平移变换
存储
双线性插值旋转
最邻近插值旋转
最邻近插值缩放
双线性插值缩放
存储
存储
存储
存储
图2-1系统框图
本次课设所做的图像几何变换包括平移变换、缩放变换和旋转变换。缩放变换和旋转变换均用双线性插值变换和最近邻插值变换两种方法来做,对图像进行处理后再存储。
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)之间的关系用矩阵形式可以表示为
(3-1)其逆运算为
(3-2)即
(3-3)
比例缩放所产生的图像中的像素可能在原图像中找不到相应得像素点,这样就必须进行插值处理。下面首先讨论图像的比例缩小。最简单的比例缩小时当fx=fy=0.5时,图像被缩到一半大小,此时缩小后图像中的(0,0)像素对应于原图像中的(0,0)像素;(0,1)像素对应于原图像中的(0,2)像素;(1,0)像素对应于原图像中的(2,0)像素,以此类推。图像缩小之后,因为承载的数据量小了,所以画布可相应缩小。此时,只需在原图像基础上,每行隔一个像素取一点,每隔一行进行操作,即取原图的偶奇数行和偶奇数列构成新的图像。如果图像按任意比例缩小,则需要计算选择的行和列。
如果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时,图像不按比例缩小,这种操作因为在
方向和
方向的缩小比例不同,一定会带来图像的几何畸变。图像不按比例缩小的方法是:如果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的子块中。显然,如果放大倍数太大,按照这种方法处理会出现马赛克效应。当
时,图像在
方向和
方向不按比例放大,此时这种操作由于
方向和
方向的放大倍数不同,一定会带来图像的几何畸变。放大的方法是将原图像的一个像素添到新图像的一个
的子块中去。为了提高几何变换后的图像质量,常采用线性插值法。该方法的原理是,当求出的分数地址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值。
旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点
逆时针旋转
角后的对应点为
。那么,旋转前后点
、
的坐标分别是:
(3-6)
(3-7)写成矩阵表达式为
(3-8)其逆运算为
(3-9)
利用上述方法进行图像旋转时需要注意如下两点:
(1)图像旋转之前,为了避免信息的丢失,一定要有坐标平移。
(2)图像旋转之后,会出现许多空洞点。对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。
以上所讨论的旋转是绕坐标轴原点(0,0)进行的。如果图像旋转是绕一个指定点(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平移回原来的坐标原点,这实际上是图像的复合变换。如将一幅图像绕点(a,b)逆时针旋转
度,首先将原点平移到(a,b),即
(3-10)
然后旋转
(3-11)
然后再平移回来
(3-12)
综上所述,变换矩阵为
。
3.3实现主要功能的原理和方法
3.3.1最近邻域插值法
最近邻域插值法:它输出的像素灰度值就等于距离它映射到的位置最近的输入像素的灰度值,取离I(i/b,j/a,k)最近的整数点的灰度值为点I(i/b,j/a,k)的灰度值。取最近整数点用四舍五入。在许多情况下,最近邻插值的结果可以令人接受。
最邻近点插值取插值点的4个邻点中距离最近的邻点灰度值作为该点的灰度值。设插值点(i,j)到周边4个邻点fk(i,j)(k = 1,2,3,4)的距离为dk(k = 1,2,3,4),则:g(i,j)=fk(i,j),dl=min{d1,d2,d3,d4},l=1,2,3,4。