数字图像的基本变换程序设计 几何变换_第1页
数字图像的基本变换程序设计 几何变换_第2页
数字图像的基本变换程序设计 几何变换_第3页
数字图像的基本变换程序设计 几何变换_第4页
数字图像的基本变换程序设计 几何变换_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学数字图像处理课程设计摘 要数字图像几何变换是计算机图像处理领域中的一个重要组成部分,也是值得探讨的一个重要课题在图像几何变换中主要包括图像的缩放、图像的旋转、图像的移动、图像的剪取等内容。文章主要探讨了数字图像的几何变换(包括图像的平移、图像的裁剪、图像的缩放、图像的旋转以及扭曲变换和镜像变换)理论,并在此基础上以MATLAB为工具,以最近邻插法、双线性插值法和双三次插值法三种常用数字图像差值算法为基础,实现了数字图像的一系列几何变换。关键词:图像几何变换;缩放;旋转;扭曲变换;镜像变换目 录1 引言11.1 课程设计的目的11.2 课程设计的任务11.3 课程设计的要求与内容22

2、 系统总体设计32.1 数字图像几何变换及原理32.2 设计方案73 系统设计与实现83.1 设计内容83.2 系统模块流程图83.2.1 平移和裁剪变换83.2.2 扭曲变换93.2.3 镜像变换10 3.2.4 缩放和旋转变换103.3 Matlab程序实现代码113.3.1 平移和裁剪变换113.3.2 扭曲变换113.3.3 镜像变换123.3.4 缩放和旋转变换124 系统仿真与结果分析144.1 系统仿真144.2 结果分析205 结论226 参考文献2311 引言近几年来,由于大规模集成电路技术和计算机技术的迅猛发展、离散数学理论的创立和完善,数字图像处理技术正逐渐成为其他科学技

3、术领域中不可缺少的一项重要工具。数字图像技术也从空间探索到微观研究、从军事领域到农业生产、从科学教育到娱乐游戏等越来越多的领域得到广泛应用。无形之中成为了现代不可或缺的处理技术。通过课程设计实现对其的认知度以及更深入的学习和运用它。1.1 课程设计的目的数字图像处理课程设计作为独立的教学环节,是通信技术及相关专业的集中实践环节之一,是学习完数字图像处理课程后,进行的一次综合练习。数字图像处理课程设计过程中,通过查阅资料、总体设计、模块设计、程序设计、集成调试等环节,完成一个基于Matlab编程语言,涉及多种典型应用,并具有综合功能的数字图像处理系统设计。使学生能够将课堂上学到的理论知识与实践应

4、用结合起来,对数字图像处理基础理论、程序逻辑分析、算法设计等方面的知识进一步加深认识,同时在软件编程、调试、工程合作开发等方面得到较全的锻炼和提高。使学生增进对数字图像处理技术的感性认识,加深对相关理论的理解,牢固掌握数字图像处理的重要应用,如对比度扩展、直方图处理、二维傅里叶变换、滤波增强、图像分割、压缩编码等等。通过实际设计和开发促进学生了解和掌握数字图像处理应用系统的设计过程、方法及实现,提高学生在数字图像处理应用方面的实践技能和科学作风,培育学生综合运用理论知识解决实际问题的能力。1.2 课程设计的任务利用Matlab软件对图像进行不同的效果处理,查阅相关资料并自主调试相关的程序,反复

5、调试并达到数字图像的比例缩放、旋转、剪取、镜像、扭曲、平移等一系列几何变换要求的图像效果,使其达到简单美观及实用的效果,能过正常演示并能实现其图像处理的要求,最后完成实验设计的相关报告,总结实验心得体会。1.3 课程设计的要求与内容课程设计应以学生认知为主体,充分调动学生的积极性和能动性,重视学生自学能力的培养。根据课程设计具体课题安排时间,确定课题的设计、编程和调试内容,开展课程设计活动,按时完成每部分工作。课程设计集中在实验室进行。在课程设计过程中,坚持独立完成,实现课题规定的各项要求,并写出设计报告。具体要求如下:使用Matlab编程环境进行程序设计;每人自主调研、完成总体设计、划分各模

6、块功能,严禁同学之间相互抄袭;课程设计作品及报告必须在规定的时间内完成并提交;提交的数字图像处理系统软件程序必须调试通过,能够正常运行演示,至少达到课题基本要求;提交的设计报告必须按规定格式编写。设计一个具有几何变换功能的数字图像处理系统。具体要求如下:(1)实现图像的平移和裁剪;(2)实现图像的扭曲变换;(3)实现图像的水平镜像、垂直镜像及对角镜像变换;(4)实现图像的放大、缩小和旋转,放大采用不少于两种灰度插值方法分别进行处理;2 系统总体设计2.1 数字图像几何变换及原理图像的几何变换不改变图像的像素值,而是改变像素所在的几何位置。从变换的性质分,图像的几何变换有图像的位置变换(平移、镜

7、像、旋转)、图像的形状变换(放大、缩小、错切)等基本变换以及图像的复合变换等。其中使用最频繁的是图像的缩放和旋转,不论照片、图画、书报,还是医学X光和卫星遥感图像都会用到这两项技术。图像比例缩放是指将给定的图像在轴方向按比例缩放倍,在轴按比例缩放倍,从而获得一幅新的图像。如果,即在轴方向和轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。设原图像中的点比例缩放后,在新图像中的对应点为,则比例缩放前后两点、之间的关系用矩阵形式可以表示为 = (2.1) = 其逆运算为 (2.2)即 (2.3) 比例缩放所产生的图像中的像

8、素可能在原图像中找不到相应得像素点,这样就必须进行插值处理。有关插值的内容在后面我们会讨论。下面首先讨论图像的比例缩小。最简单的比例缩小时当时,图像被缩到一半大小,此时缩小后图像中的(0,0)像素对应于原图像中的(0,0)像素;(0,1)像素对应于原图像中的(0,2)像素;(1,0)像素对应于原图像中的(2,0)像素,以此类推。图像缩小之后,因为承载的数据量小了,所以画布可相应缩小。此时,只需在原图像基础上,每行隔一个像素取一点,每隔一行进行操作,即取原图的偶(奇)数行和偶(奇)数列构成新的图像。如果图像按任意比例缩小,则需要计算选择的行和列。如果大小的原图像缩小为大小的新图像时,则 (2.4

9、)其中,。由此公式可以构造出新图像。当时,图像不按比例缩小,这种操作因为在方向和方向的缩小比例不同,一定会带来图像的几何畸变。图像不按比例缩小的方法是:如果大小的旧图缩小为大小的新图像时,则 (2.5)其中,由此公式可以构造出新图像。图像的缩小操作中,是在现有的信息里如何挑选所需要的有用信息。而在图像的放大操作中,则需要对尺寸放大后所多出来的空格填入适当的像素值,这是信息的估计问题,所以较图像的缩小要难一些。当时,图像被按全比例放大二倍,放大后图像中的(0,0)像素对应于原图中的(0,0)像素;(0,1)像素对应于原图中的(0,0.5)像素,该像素不存在,可以近似为(0,0)也可以近似为(0,

10、1);(0,2)像素对应于原图像中的(0,1)像素;(1,0)像素对应于原图中的(0.5,0),它的像素值近似于(0,0)或(1,0)像素;(2,0)像素对应于原图中的(1,0)像素,依此类推。其实这是将原图像每行中的像素重复取值一遍,然后每行重复一次。按比例将原图像放大k倍时,如果按照最近邻域法则需要将一个像素值添在新图像的的子块中。显然,如果放大倍数太大,按照这种方法处理会出现马赛克效应。当时,图像在方向和方向不按比例放大,此时这种操作由于方向和方向的放大倍数不同,一定会带来图像的几何畸变。放大的方法是将原图像的一个像素添到新图像的一个的子块中去。为了提高几何变换后的图像质量,常采用线性插

11、值法。该方法的原理是,当求出的分数地址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值。一般图像的旋转是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。图像的旋转变换时图像的位置变换,但旋转后,图像的大小一般会改变。在图像旋转变换中既可以把转出显示区域的图像截去,也可以扩大图像范围以显示所有的图像。同样,图像的旋转变换也可以用矩阵变换来表示。设点逆时针旋转角后的对应点为。那么,旋转前后点、的坐标分别是: (2.6) (2.7)写成矩阵表达式为 = (2.8)其逆运算为 = (2.9)利用上述方法进行图像旋转时需要注意如下两点:(1)图像旋

12、转之前,为了避免信息的丢失,一定要有坐标平移。(2)图像旋转之后,会出现许多空洞点。对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。以上所讨论的旋转是绕坐标轴原点(0,0)进行的。如果图像旋转是绕一个指定点(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平移回原来的坐标原点,这实际上是图像的复合变换。如将一幅图像绕点(a,b)逆时针旋转度,首先将原点平移到(a,b),即A= (2.10)然后旋转B= (2.11)然后再平移回来C= (2.12)综上所述,变换矩阵为。有些时候我们为了减少图像所占存储空间,舍弃图像的无用部分,只保留感兴趣的部分,

13、这就需要用到图像的剪取。在本文中,我们只讨论对原图像剪取一个形状为矩形的部分的操作。对一幅图像进行剪取操作前,首先初始化该图像,这样图像上每个点,就对应了一个二维坐标,即。首先,我们先取二维坐标系上的一点,这点就作为要截取的矩形的左上角的起始坐标。然后我们定义一两个常量、,其中,代表矩形的长素,代表矩形的宽度,然后舍弃掉在矩形外的点,这样,在整个坐标系上,由、和四个点所围成的矩形部分便被保留下来。2.2 设计方案综合运用MATLAB实现图像处理的程序设计,根据需求进行程序的功能分析和界面设计,并实现对图像的平移,裁剪,扭曲,镜像,缩放,旋转等变换,按照要求增加变换的效果与其他的几何变换。变换的

14、操作直接调用Matlab中自带的函数,部分模块采用用户提示对话框,用来提示用户输入参数,以实现模块的动态操作,另外,需要同一模块需要将不同结果进行比对。整个系统系统框图如下:数字图像处理几何变换系统 平移和裁剪 缩放变换缩放变换 扭曲变换 旋转变换 镜像变换 图2.1 系统框图3 系统设计与实现3.1 设计内容 图像的几何变换:平移,裁剪,扭曲,镜像,缩放,旋转以及提高内容。1)平移和裁剪:平移是日常生活中最普遍的运动方式,而图像的平移是几何变换这中最简单的变换之一。菜单中使用 translate函数对图像进行平移,通过改变程序中的参数可以控制平移的方式,视需求而定。在实际应用或科研领域,很多

15、时候要对图像进行裁剪操作。图像裁剪就是在原图像或者大图中裁剪出图像块来,这个图像一般是多边形形状的。图像裁剪是几何处理中的一种基本操作。利用imcrop函数调用可以是现期裁剪功能,格式为imcrop(I,rect);其中rect是一个四元向量xmin ymin width height,分别表示矩形的左上角的坐标,宽度和高度;2)扭曲变换:MATLAB使用imtransform函数来实现图像空间变换,imtransform函数的调用格式为imtransform(I,T),其中I是要变换的图像,T是maketform函数产生的变换结果。Maketform函数就是利用给定的参量建立变换结构,然后把

16、该变换结构赋给结构体变换,根据得到的结构体变量T,调用imtransform函数进行变换;3)镜像变换:实现水平,垂直,对角镜像处理,双精度取点后调用函数实现。4) 缩放与旋转变换:利用'nearest' 'bilinear' 'bicubic'三个函数实现图片的三种缩放与旋转处理。利用imresize和imrotate两个函数实现缩放及旋转功能 。3.2 系统模块流程图 3.2.1 平移和裁剪变换开始获取图片路径,打开所需图片i对i进行平移或裁剪变换translate(strel(2),p),imdilate(i,se)or imcrop(i,

17、)处理完成,得到新图结束 N Y 图3.1 平移和裁剪流程图3.2.2 扭曲变换开始获取图片路径,打开所需图片i对i进行扭曲变换maketform('affine',)imtransform(i,T1)处理完成,得到新图结束 N图3.2 扭曲变换流程图 3.2.3 镜像变换开始获取图片路径,打开所需图片i对i进行镜像变换,double(i)A2(1:H(1),1:H(2),1:H(3)=A1(1:H(1),H(2):-1:1,1:H(3);A3(1:H(1),1:H(2),1:H(3)=A1(H(1):-1:1,1:H(2),1:H(3); A4(1:H(1),1:H(2),1

18、:H(3)=A1(H(1):-1:1,H(2):-1:1,1:H(3);处理完成,得到新图结束 N图3.3 镜像变换流程图开始获取图片路径,打开所需图片i对i进行缩放或旋转变换imresize(i,a,'nearest')orimrotate (i,a,'nearest')处理完成,得到新图结束imresize(i,a,'bilinear')orimrotate (i,a,'bilinear')imresize(i,a,'bicubic')orimrotate(i,a,'bicubic') 3.2.

19、4 缩放和旋转变换 N Y图3.4 缩放与旋转流程图3.3 Matlab程序实现代码 3.3.1 平移和裁剪变换 1)平移: i=imread('D:1.jpg');%读取图片信息prompt='输入参数:'defans='2'%获取图像信息p=inputdlg(prompt,'input',1,defans); %创建数据输入窗口p1=str2num(p1);se = translate(strel(2), p1);%对图像进行平移J = imdilate(i,se);subplot(1,2,1),imshow(i),title

20、('原图')subplot(1,2,2),imshow(J),title('平移后图像')%显示操作结果 2)裁剪: i=imread('D:1.jpg'); %读取图片信息 %从坐标(0,0)开始,从原图上剪取一个长度为200,宽度为200的矩形部分j=imcrop(i,0 0 200 200);figure,subplot(1,2,1),imshow(i),title('原图')subplot(1,2,2),imshow(j),title('截取后图像') %以坐标(50,50)开始,剪取长度为200,宽度为2

21、00的矩形部分,并与以坐标(0,0)开始,剪取同样大小的图像相比较k=imcrop(i,50 50 200 200);figure,subplot(1,2,1),imshow(j),title('以坐标(0,0)开始')subplot(1,2,2),imshow(k),title('以坐标(50,50)开始') 3.3.2 扭曲变换 i=imread('D:1.jpg') %扭曲一T1=maketform('affine',0.5 0 0;0.5 1 0;0 0 1);I1=imtransform(i,T1);%二维变换%扭曲二T

22、2=maketform('affine',0.5 1;0 1;1 0,0.2 0.6;0.5 0.3;0.5 0.9);I2=imtransform(i,T2); %二维变换%原图,扭曲一,扭曲二显示比较figure,subplot(1,3,1),imshow(i),title('原图')subplot(1,3,2),imshow(I1),title('扭曲1')subplot(1,3,3),imshow(I2),title('扭曲2') 3.3.3 镜像变换 i=imread('D:1.jpg');figure,

23、subplot(2,2,1),imshow(i),title('原图')A1=double(i); %定义为双精度型H=size(A1); %定义尺寸%水平镜像A2(1:H(1),1:H(2),1:H(3)=A1(1:H(1),H(2):-1:1,1:H(3);%显示结果subplot(2,2,2),imshow(uint8(A2),title('水平镜像'); %垂直镜像A3(1:H(1),1:H(2),1:H(3)=A1(H(1):-1:1,1:H(2),1:H(3); subplot(2,2,3),imshow(uint8(A3),title('垂

24、直镜像'); %对角镜像A4(1:H(1),1:H(2),1:H(3)=A1(H(1):-1:1,H(2):-1:1,1:H(3);subplot(2,2,4),imshow(uint8(A4),title('对角镜像'); 3.3.4 缩放和旋转变换 1)缩放: %用最近邻插法将图像按原比例放大1.5倍,语句如下:i=imread('D:1.jpg');a=1.5j=imresize(i,a);imshow(i),title('原图')figure,imshow(j),title('近邻插法放大1.5倍')%用双线性插值

25、法和双三次插值法将图像按原比例放大1.5倍k=imresize(i,a, 'bilinear');l=imresize(i,a, 'bicubic');figure,imshow(k),title('双线性插值法放大1.5倍') figure,imshow(l),title('双三次插值法放大1.5倍') %用双线性插值法将图像按原比例缩小为0.1倍m=imresize(i,0.1,'bilinear');figure,imshow(m),title('双线性插值法放大0.1倍') 2)旋转: %用

26、双线性插值法将原图像旋转45度,不裁去超出原图的部分 i=imread('D:1.jpg');a=45j=imrotate(i,a,'bilinear');figure,subplot(1,3,1),imshow(i),title('原图')subplot(1,3,2),imshow(j),title('双线性插值旋转45度,不裁')prompt='输入参数:'%提示对话框defans='2'p=inputdlg(prompt,'input',1,defans); %创建数据输入窗口

27、 p1=str2num(p1);%读取输入值 k=imrotate(i,p1,'bilinear'); subplot(1,3,3),imshow(k),title('自定义度数,不裁去超出部分')%用双线性插值法将原图像旋转45度,裁去超出原图的部分,并与未裁去超出部分的做比较j=imrotate(i,a,'bilinear');% 未裁去超出部分k=imrotate(i,a, 'bilinear', 'crop');% 裁去超出原图的部分figure,subplot(1,2,1),imshow(j),title

28、('双线性插值法旋转45度,不裁去超出部分')subplot(1,2,2),imshow(k),title('双线性插值法旋转45度,裁去超出部分')4 系统仿真与结果分析4.1 系统仿真平移变换输入参数:图4.1 平移变换输入参数平移变换结果:图4.2 平移变换结果 裁剪变换结果:图4.3 裁剪变换结果一图4.4 裁剪变换结果二 扭曲变换结果:图4.5 扭曲变换结果 镜像变换结果:图4.6 镜像变换结果缩放变换结果图4.7 缩放变换结果一图4.8 缩放变换结果二图4.9 缩放变换结果三图4.10 缩放变换结果四图4.11 缩放变换结果五旋转变换输入参数:图4.12 旋转变换输入参数 旋转变换结果:图4.13 旋转变换结果一图4.14 旋转变换结果二4.2 结果分析从结果图可以看出,预期的功能基本实现,并且比较全面,符合设计要求。平移变换中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论