MATLAB实现图像的平移缩放和旋转要点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理课程设计
题目图像的几何变换重建
系 (部) 信息工程系
班级
姓名
学号
指导教师
2013 年 12 月 16 日至 12 月 27 日共 2 周
2013年 12 月 27 日
数字图像处理课程设计任务书
课程设计成绩评定表
目录
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-1系统框图
本次课设所做的图像几何变换包括平移变换、缩放变换和旋转变换。缩放变换和旋转变换均用双线性插值变换和最近邻插值变换两种方法来做,对图像进行处理后再存储。
3 设计方案
3.1功能模块的划分
本次设计整体分为四大模块:原图、平移、缩放和旋转。其中缩放和旋转又分别有双线性插值和最近邻插值两模块。
3.2算法描述
图像比例缩放是指将给定的图像在x 轴方向按比例缩放fx 倍,在y 轴按比例缩放fy 倍,从而获得一幅新的图像。如果fx=fy ,即在x 轴方向和y 轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx ≠fy ,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。
设原图像中的点P 0(x 0,y 0)比例缩放后,在新图像中的对应点为P(x,y),则比例缩放前后两点P 0(x 0,y 0)、P(x,y)之间的关系用矩阵形式可以表示为
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11000000
100y x fy fx y x (3-1)其逆运算为
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⋅⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡110001000
1100y x fy fx
y x (3-2)即
⎪⎪⎩
⎪⎪⎨⎧==fy y
y fx x x 00 (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 时,图像不按比例缩小,这种操作因为在x 方向和y 方向的缩小比例不同,一定会带来图像的几何畸变。图像不按比例缩小的方法是:如果M×N 大小的旧图F(x,y)缩小为k 1M×k 2N 大小的新图像I(x,y)时,则
I(x,y)=F(int(c 1×x),int(c 2×y)) (3-5)
其中c 1=1/k 1,c 2=1/k 2,由此公式可以构造出新图像。
图像的缩小操作中,是在现有的信息里如何挑选所需要的有用信息。而在图像的放大操作中,则需要对尺寸放大后所多出来的空格填入适当的像素值,这是信息的估计问题,所以较图像的缩小要难一些。当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 的子块中。显然,如果放大倍数太大,按照这种方法处理会出现马赛克效应。当fy fx ≠)0,(>fy fx 时,图像在x 方向和y 方向不按比例放大,此时这种操作由于x 方向和y 方向的放大倍数不同,一定会带来图像的几何畸变。放大的方法是将原图像的一个像素添到新图像的一个21k k ⨯的子块中去。为了提高几何变换后的图像质量,常采用线性插值法。该方法的原理是,当求出的分数地址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值。
旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点),(000y x P 逆时针旋转θ角后的对应点为),(y x P 。那么,旋转前后点),(000y x P 、),(y x P 的坐标分别是:
⎩⎨⎧==ααcos cos 0
0r y r x (3-6) ⎩
⎨⎧+=+=+=-=-=+=θθθαθαθαθθθαθαθαcos sin sin cos cos sin )sin(sin cos sin sin cos cos )cos(0000y x r r r y y x r r r x (3-7)