图像几何变换GUI设计_第1页
图像几何变换GUI设计_第2页
图像几何变换GUI设计_第3页
图像几何变换GUI设计_第4页
图像几何变换GUI设计_第5页
已阅读5页,还剩8页未读, 继续免费阅读

下载本文档

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

文档简介

学号 11780122天津城建大学信息处理系统综合设计设计说明书图像几何变换软件的GUI设计起止日期:2023年12月29日至2023年1月23日学生姓名XXX班级成绩指导教师(签字)计算机与信息工程学院2023年1月23日天津城建大学课程设计任务书2023—2023学年第一学期计算机与信息工程学院电子信息科学与技术专业11电信科1班班级课程设计名称:信息处理系统综合设计设计题目:图像几何变换软件的GUI设计完成期限:自2023年12月29日至2023年1月23日共4周设计依据、要求及主要内容〔可另加附页〕:利用Matlab软件进行GUI设计,实现图像几何变换软件的设计集成不同参数的不同图像几何变换方法〔至少4种以上平移/旋转/缩放/镜像/错切〕,实现不同几何变换效果的比照 指导教师〔签字〕:系主任〔签字〕:批准日期:2023年12月18日目录TOC\o"1-3"\u第1章图像几何变换设计原理11.1引言11.2程序设计框图11.3原理介绍21.3.1平移原理21.3.2缩放原理21.3.3旋转原理21.3.4镜像原理31.3.5错切原理4第2章图像几何设计实现52.1MATLABGUI设计界面介绍52.1.1MATLABGUI介绍5本次研究中所使用的GUI设计界面本52.2图像几何变换核心程序简介6图像平移6图像缩放6图像旋转7图像镜像7图像错切72.3GUI界面之间的转换8第3章设计的结果与分析93.1图像平移效果及分析93.2图像缩放效果及分析93.3图像旋转效果及分析103.4图像镜像效果及分析103.5图像错切效果及分析11第4章总结12参考文献13附录14第1章图像几何变换设计原理1.1引言在现实生活中,几何变换对于图像编辑来说具有很大的作用,例如对采集的的照片位置,大小不满意时,都可以借助图像的几何变换来实现改变图像的空间位置的操作[1]。几何变换又称空间变换,是将原图像的位置坐标映射到新坐标上,但并不改变其图像的像素值,仅仅只是对图像的像素重排,其中由于坐标变换后,某些位置上出现了空洞点,需要通过插值处理,使得图像完整[2]。本次设计使用MATLABGUI为载体进行软件设计,程序中所采用的插值均为最近邻插值,所涉及到的图像几何变换有平移、缩放、旋转、镜像和错切。1.2程序设计框图开始开始主界面设计平移缩放旋转镜像错切实现相应地各种操作结束图1程序设计框图1.3原理介绍1.3.1平移原理将图像中所有的点都按照指定的平移量水平、垂直移动。设(x0,y0)是原图像上的一点,图像水平平移量为tx,垂直平移量为ty,那么平移后点(x0,y0)的坐标变为(x1,y1)。(x0,y0)与(x1,y1)之间的关系为:以矩阵的形式表示为:它的逆变换:平移后的图像中每个像素的颜色是由原图像中的对应点颜色确定[3]。1.3.2缩放原理假设x轴放大因子为c,y轴放大因子为d,缩放的变换矩阵为[4]:1.3.3旋转原理通常是以图像的中心为圆心旋转,按顺时针方向旋转。旋转前:旋转a角度后:以矩阵的形式表示为:rrrab(x0,y0)(x1,y1)yⅡxⅡO图2旋转示意图式中,坐标系是以图像的中心为原点,向右为x轴正方向,向上为y轴正方向。它和以图像左上角为原点,向右为x轴正方向,向下为y轴正方向的坐标系之间的转换关系如图3所示[5]。((x,y)yⅡxⅡOⅡxⅠyⅠOⅠ图3两种坐标系间的转换关系图设图像的宽度为w,高度为h,容易得到:逆变换为:有了以上公式,可以把变换分成三步:第一步,将坐标系Ⅰ变成Ⅱ;第二步,将该点顺时针旋转a角度;第三步,将坐标系Ⅱ变回Ⅰ。这样,我们就得到了变换矩阵,它是上面三个矩阵的级联。那么对于新图像中的每一点,就可以根据对应原图中的点,得到它的灰度。如果超出原图范围,那么填成白色。要注意的是,由于有浮点运算,计算出来点的坐标可能不是整数,采用取整处理或插值来处理[6]。1.3.4镜像原理图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为[7]:1.3.5错切原理变换前和变换后y坐标不变,而x坐标根据y坐标值作线性变换,变换前后点的坐标之间的关系为:式中为变换系数。假设,沿X正方向错切;假设,那么沿着X负方向错切。所以,错切矩阵为:在X、Y平面上不考虑Z轴方向[8]。第2章图像几何设计实现2.1MATLABGUI设计界面介绍2.1.1MATLABGUI介绍在Matlab中,图形用户界面(graphicaluserinterface,GUI)是Matlab中一个专用于GUI程序设计的向导设计器,而GUI是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交互的有效工具和方法。通过GUIDE可以很方便地设计出各种符合要求的图形用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比方实现计算、绘图等。GUI设计既能以根本的Matlab程序设计为主,也能以鼠标为主,利用GUIDE工具进行设计,也可综合以上两种方法进行设计。GUIDE主要是一个界面设计工具集。Matlab将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为相应方式的设置方法。GUIDE将用户保存设计好的图形用户界面保存在一个FIG资源文件中,同时自动生成包含图形用户界面初始化和组件界面布局控制代码的M文件,这个M文件为实现回调函数的编写提供了一个参考框架。FIG文件是一个二进制文件,包含系列化的图形窗口对象。所有对象的属性都是用户创立图形窗口时保存的属性。该文件最主要的功能是对象句柄的保存。M文件包含GUI设计、控制函数及控件的回调函数,主要用来控制GUI展开时的各种特征。该文件根本上可以分为GUI初始化和回调函数2个局部,控件的回调函数可根据用户与GUI的具体交互行为分别调用[9]。2.1.2本次研究中所使用的GUI设计界面本下面我们以图4为例,说明界面设计的功能[10]。图4GUI设计界面实例通过上图,我们看到本次设计根本上采用静态文本框、按钮、坐标轴和复选按钮。其功能介绍如下:静态文本框:输入文字,将标注的信息显示出来。按钮与复选按钮:通过点击,完成一次命令,可以使载入图像,也可以是返回主界面或者完成命令。坐标轴:也是可视化窗口,将原图和所变换的图像通过两个坐标轴显示出来,以供比拟。2.2图像几何变换核心程序简介2.2.1图像平移核心程序:se=translate(strel(1),[40-40]);b=imdilate(dai,se);功能:使用translate函数将图像进行搬移,其中第一个函数参数表示只对图像进行搬移而不改变图像本身,第二个参数那么是平移的坐标,然后再通过imdilate函数将图像展现出来。2.2.2图像缩放核心程序〔方法一〕:g=imresize(dai,1);//此函数为放大一倍,假设将1改为0.5,那么表示缩小一倍axes(handles.axes2);set(handles.axes2,'Units','pixels');[x,y]=size(g);set(gca,'position',[350237yx])功能:imresize函数作为图像缩放的主要函数,函数第一个参数为图像文件名,第二个参数为缩放倍数。缩放完成后设置坐标轴2。假设不设置坐标轴,那么图像的大小将自动适应于新坐标,本程序为了比拟明显的看出图像的缩放,那么设置了坐标,用size函数测量了图像的宽和高,然后使得坐标的宽和高与图像相适应,而其他两个位置变量那么固定不变。这样显示出来的图像就有了可比拟的特点。核心程序〔方法二〕:prompt=('缩放度数');p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imresize(dai,p1,'nearest');set(handles.axes2,'Units','pixels');[x,y]=size(f);set(gca,'position',[350277yx])功能:Inputdlg函数是用对话框的格式输入缩放的参数,prompt是对话框的文字提示,提示出要输入的参数是什么,input指的是输入参数,1是指对话框的行数,defans是默认的初始值。同时用字符转换成数字来改变缩放参数,因为输入的只是一个字符型的参数要将其转换成数字才能应用,其余同方法一,坐标也要相应的适应新的图像。2.2.3图像旋转核心程序〔方法一〕:dai=imrotate(dai,45);//第二个参数那么是旋转的度数功能:旋转的函数通过imrotate函数就能完成,第一个变量为图像名称,第二个变量那么是旋转的度数。核心程序〔方法二〕:prompt=('旋转角度');defans={'0'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imrotate(dai,p1,'nearest');功能:Inputdlg函数是用对话框的格式输入缩放的参数,prompt是对话框的文字提示,提示出要输入的参数是什么,input指的是输入参数,1是指对话框的行数,defans是默认的初始值。同时用字符转换成数字来改变缩放参数,因为输入的只是一个字符型的参数要将其转换成数字才能应用,其余同方法一。此方法默认是最近邻方法,同时也可用双线性和双立方插值的方式对次图像进行处理。2.2.4图像镜像核心程序:k=fliplr(dai);k=flipud(dai);功能:上述函数分别为水平镜像和垂直镜像,水平镜像是以y轴为对称轴,而垂直镜像那么以x为对称轴。在函数中直接写入图像名称即可。2.2.5图像错切核心程序:s=maketform('affine',[10.50;010;001]);j=imtransform(dai,s);功能:通过使用maketform函数构造矩阵,affine表示为仿射变换,后面的参数表示的是位置矩阵,再由imtransformn函数进行数据传递转换,到达错切的效果。2.3GUI界面之间的转换1、GUI界面之间的转换靠回调函数来实现:h=gcf;//返回当前句柄值main;//主函数名close(h);2、文件输入:filename,pathname]=...uigetfile({'*.bmp';'*.jpg';'*.gif'},'选择图片');//创立文件对话框str=[pathname,filename];3、退出软件:Closeall;第3章设计的结果与分析3.1图像平移效果及分析图5平移左下位置效果图结果分析:平移的效果就是以图像中心为原点坐标,输入两个参数,分别为x,y。由二维平面的坐标值改变图像的原始位置。本实验采用的是定向的编写程序,通过指令来完成平移后的图像显示。也可以采用灵活的方式,使用对话框来输入需要的参数,图片的坐标是固定的,所以产生的效果就是移出去的局部不显示,空缺的位置为黑色,表达出需要的效果,同时还应该注意要使用灰度图像,假设非灰度图像,那么程序不能别识,应该使用a=rgb2gary〔文件名〕类似的函数来转换彩色图像为灰度图像,这样才能更好地对图像进行平移变换。3.2图像缩放效果及分析图6图像缩小效果图结果分析:缩放变换的效果是使图片的大小发生改变,本实验采用两种方法来实现,一种是固定参数的方法,其优点是简便操作,直接对命令按钮点击既能出现效果,另一种是通过对话框的形式输入参数,这种方法的好处是灵活性比拟高。图像的缩放一种是按比例进行的,一种是非比例缩放的,本次实验使用的是比例缩放。在放大缩小的过程中,图像的像素也会随之放大缩小。这就使得图像的像素位置会发生改变,有可能会涉及到非整数点,那么就会遇到一个问题,图像会出现空洞,这些空洞需要被填补以完善图像的整体,其中使用的方法有插值处理。插值处理又分为最近邻插值,双线性插值和双立方插值。本次实验默认使用最近邻插值,但其实最近邻插值的效果会随着图像的放大而出现块状效应,也就是俗称的马赛克。而是用双线性和双立方插值的方法就会使得这种效应减弱,但是后两种方法的过程在计算方面会很繁琐。在不影响图像质量的前提下,采用最近邻的方法处理图像可以得到所需的效果。3.3图像旋转效果及分析图7图像旋转45°效果图结果分析:旋转角度的不同使得图像有不同的效果,但是在类似45°的角度中,图像的坐标会发生改变,为了适应这种改变,可以通过坐标随着变换的改变而改变。本实验也采用两种方法实现。用内置函数就可以完成效果。3.4图像镜像效果及分析图8图像水平镜像效果图结果分析:镜像分为水平镜像和垂直镜像,镜像的判断是根据以什么作为对称轴,以x为对称的那么是垂直镜像,以y轴为对称的那么水平镜像。镜像的函数也可用内置函数来实现。3.5图像错切效果及分析图9图像垂直错切效果图结果分析:图像错切,是一种仿射变换。类似于投影。我们知道直接投影就是垂直地去看图像的影子,而错切那么是在水平和竖直方向分别以一定的角度来看投影,这样就出现图像斜着的感觉。图像错切的实现是通过一个错切矩阵来实现的,改变一定的参数,就会使得错切的角度有很大的变化。第4章总结通过这次综合课设,我学到了数字图像处理的几何变换方面的知识。通过自己制作MATLABGUI图像几何变换软件,熟悉了GUI设计界面,同时也了解到图像几何变换的原理。在制作软件中,通过查找资料,再到学习其中的重点知识,最后学以致用,将别人的知识加以改良作为自己的知识输出,在这个过程中我体会到了学习的乐趣。同时也借这次时机锻炼了自己编程的能力,为了毕业设计的学习打下良好的根底。课设中,我还遇到了一些问题,刚开始做缩放的时候总是把坐标轴的更改弄错,经过查书和网上搜索,最终将结果做出来了,我觉得至少这一点是我以前没有做好的一局部,还有就是在做平移的时候总是想不出用什么函数来表示,通过认真反复看书和思考,我最后也攻克难题,实现了所有的功能。通过这次可是也使我对数字图像处理这门课程有了更深的了解,我从中悟到只有踏实的去一步步地做才能解决矛盾,困难,但是只是一味的想象困难是没有任何帮助的。在这次综合设计中我受益匪浅。参考文献[1]章毓晋.图像工程上册——图像处理和分析[M].北京:清华大学出版社,1999.3[2]章毓晋.图像工程下册——图像理解与计算机视觉[M].北京:清华大学出版社,2000.8[3]张兆礼,赵春晖,梅晓丹.现代图像处理技术[M].北京:人民邮电出版社,2001.1l[4]陈桂明,张明照,戚红雨.应用MATLAB语言处理数字信号与数字图像[M].北京:科学出版社,2000.1[5]朱振武.例谈几何变换的应用[J].安庆师范学院学报(自然科学版).2023(03)[6]谢荷芳.二维图形的几种几何变换[J].中南民族学院学报(自然科学版).1998(03)[7]王昕娅,侯萌萌.平面图形的几何变换[J].大学数学.2003(05)[8]刘越.img图像的读取及其几何变换处理[J].佳木斯大学学报(自然科学版).2023(04)[9]杜廷娜.图像空间变换及MATLAB实现[J].鞍山科技大学学报.2007(04)[10]李迎春,曾峦,丁向丽.图像的几何运算方法[J].指挥技术学院学报.2000(01)附录1、平移程序:[filename,pathname]=...uigetfile({'*.bmp';'*jpg';'*.gif'},'图像选择');str=[pathname,filename];globalimage;globaldai;image=imread(str);dai=image;axes(handles.axes1);imshow(image);axes(handles.axes2);imshow(image);set(handles.radiobutton1,'value',1);set(handles.radiobutton2,'value',0);set(handles.radiobutton3,'value',0);set(handles.radiobutton4,'value',0);set(handles.radiobutton5,'value',0);globaldai;se=translate(strel(1),[40-40]);b=imdilate(dai,se);axes(handles.axes2);imshow(b);h=gcf;main;close(h);以下程序返回与翻开文件程序相同,只参加主要程序〔选项程序与主程序相似〕:2、缩放程序:set(handles.radiobutton1,'value',1);set(handles.radiobutton2,'value',0);set(handles.radiobutton3,'value',0);globaldai;g=imresize(dai,1);axes(handles.axes2);set(handles.axes2,'Units','pixels');[x,y]=size(g);set(gca,'position',[350237yx])imshow(g);方法二:globaldai;axes(handles.axes2);imshow(dai);I=getimage;prompt=('缩放度数');defans={'0'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imresize(dai,p1,'nearest');set(handles.axes2,'Units','pixels

温馨提示

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

评论

0/150

提交评论