ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:3.16MB ,
资源ID:6004688      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6004688.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Matlab图形界面图像的旋转平移和缩放要点.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Matlab图形界面图像的旋转平移和缩放要点.docx

1、Matlab图形界面图像的旋转平移和缩放要点Matlab图形界面图像的旋转、平移和缩放姓名: 班级: 学号: Matlab图形界面操作 -图像的旋转、平移和缩放问题描述 期末运用学习的matlab知识通过图形用户界面对图片进行操作,实现如下功能.能够查找和读取计算机中存储图像. 实现图像的旋转、平移、缩放等几何变换。 通过matlab界面功能实现界面的完美布局。编写代码和回调函数实现上述功能.摘要本次任务旨在完成以下几个任务:整体分为四大模块:原图、旋转、平移和缩放。利用数字图像处理技术,以MATLAB为平台,建立一个实现设计主题的简易处理系统。 能显示输入图像、输出图像. 程序代码要有注释说

2、明,调用MATLAB函数要清楚并理解函数的功能、使用范围,在设计说明书中要写清楚函数的功能和参数意义。 完成自己课程设计说明书。正文1、界面设计(1)在MATLAB命令窗口中输入“guide”,确定后,弹出GUI窗口.(2)本次设计中,包含两个坐标轴(axes1、axes2),分别显示原图和处理后的图像.包含六个按钮(Push Button),分别实现“打开图片、保存处理后的图片、旋转、平移、放大、缩小以及退出功能”。(3)旋转功能同时可以实现选择0-360度任意的度数,当选择不同的度数后,axes2位置就会显示不同选择角度的图片.如果需要保存该图片可以单击保存按钮进行保存。(4)平移功能的实

3、现,当单击平移按钮,可以有一个默认的平移位置。在设计中预设了几个固定位置,可以选择,分别是X单位Y单位方向都可以选择。达到平移的目的。(5)放大和缩小功能类似,在界面上表现为选择不同的数据,反映出来不同大小的图片。(6)操作完成后,点击退出功能,将询问是否退出,如果退出则点击“是,不退出点击“我还要看看”.2、打开图片功能进入程序界面后,要实现几何操作,需要先打开一张图片。单击打开图片按钮,可以选择图片路径,从存储图片的地址任意旋转一张图片,图片就会显示在axes1的位置.效果如21所示: 图 21如果想再打开一张图片进行操作,可以再次单击“打开图片”按钮进行操作,效果如图22所示:图2-2

4、3、实现图片的任意角度的旋转该功能回调函数使用的是imrotate函数,其调用格式如下所示:(1)函数说明及参数选择 I0=imrotate(loadImage,value);I0是处理后的图片。loadImage是定义的全局变量,当打开图片后,将新图片的值赋予该变量。Value值是传递过来的度数值。(2)问题分析如果value值是一个定值,在实现旋转功能时,仅能在一个位置,通过优化,实现任意角度旋转。(3)运用的函数和方法旋转功能涉及imrotate以及imshow函数,详细方法参考源代码。(4)实验结果点击旋转按钮,默认值为180度,效果如图3-1所示:图31(旋转180度)拖动滑动条,选

5、择其他角度,实现旋转功能。旋转72度效果如图32所示:图32(旋转72度)旋转0度即不进行旋转,效果如图3-3所示:图3-3(旋转0度)通过验证,随意拖动滑动条,均可以正常显示,如图4-4所示:图34更换其他图片实现旋转功能,效果图35所示:图35(5)结果分析:一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像.图像的旋转变换也可以用矩阵变换来表示。4、图像的平移 (1)问题分析: 图像平移是将一幅图像中所有的点都按照指定的平移量在水平、垂直方向移动,平

6、移后的图像与原图像相同。平移后的图像上的每一点都可以在原图像中找到。(2)实验方法:设(x0,y0)为原图像上的一点,图像水平平移量X,垂直平移量为Y,则平移后点(x0,y0)的坐标变为(x1,y1)。(x0,y0)与(x1,y1)之间的关系为: x1=x0+x; y1=y0+y.该功能可以通过函数translate函数实现。关键代码se=translate(strel(1),100 -100); strel(1)表示图像不变,进行Y X方向的平移,se是设置的图像平移的距离.平移变量的旋转通过switch来判断并进行传递。(3)实验结果:平移量为(-100,100)时,效果如图4-1所示:图

7、4-1平移量为(-50,100)时,效果如图42所示:图42平移量为(0,100)时,效果如图43所示:图4-3平移量为(50,-100)时,效果如图44所示:图4-4平移量为(100,0)时,效果如图45所示:图45平移量为(100,100)时,效果如图46所示:图4-6更换其他图片进行平移操作,效果如图4-7:图4-7(4)结果分析:在设置的平移变量选项中,负数在X方向上代表向左平移,在Y轴上代表向上平移。选择不同的平移变量,图片将平移结果显示在对应的地方。超出显示区域的地方自动截取数据。5、图像的缩放(放大与缩小)(1)问题分析:图像的放大和缩小是用同一个函数实现的,根据图像比例变换的原

8、理及相应算法可得到。(2)实验方法:图像的放大和缩小的函数是imresize,核心代码如下:I0=imresize(loadImage,value2);其中的value值代表放缩的倍数.(3)实验结果:点击放大按钮,默认的放大倍数15倍,如图51所示.图5-1(放大15倍)拖动滑动条,得到新的大小的图片,如图5-2所示:图5-2放大1倍的效果如图53所示:图53(放大1倍即原图大小)缩小效果图,图5-4所示:图5-4(原图0.5倍)随意拉动拖动条,得到缩小效果图,图56所示:图56 当缩小时的value值调为0时,出现错误,说明,在缩小时,value值设置为0是不合适的,效果如图57所示。图5

9、-7更换图片,改变缩小的变量数值,得到大小不一的图片,如图5-8所示:图5-8(4)结果分析:在放大图片时,当按比例将原图像放大K倍,如果按照最近邻域法则需要将一个像素值添加在新图像的kk的子块中。显然,如果放大倍数太大,按照这种方法处理会出现马赛克效应.最简单的比例缩小时当fx=fy=0.5时,即图像被缩到一半大小,此时缩小后图像中的(0,0)像素对应于原图像中的(0,0)像素;(0,1)像素对应于原图像中的(0,2)像素;(1,0)像素对应于原图像中的(2,0)像素,以此类推.图像缩小之后,因为承载的数据量小了,所以画布可相应缩小.此时,只需在原图像基础上,每行隔一个像素取一点,每隔一行进

10、行操作,即取原图的偶奇数行和偶奇数列构成新的图像。如果图像按任意比例缩小则需要计算选择的行和列.实验心得本次课程设计使我更深的了解了MATLAB的程序设计及图像处理的内容,复习了有关于图像处理方面的知识,同时也对于MATLAB这一功能强大的软件的使用更加的熟练,也学习到了很多新的知识,积累了一些经验,归结如下: 更全面的认识了MATLAB这个软件,并且能够熟练的使用MATLAB的基本功能,掌握了MATLAB的程序设计的基本方式方法和步骤。 学习了图像的处理的各项基本函数的使用,特别对MATLAB的帮助功能有了很深刻的了解,能够独立的完成函数的编写及功能的实现,再也不是什么函数都需要使用网络来询

11、问,学习了图像噪声的使用,让我对专业知识有了更深的了解,对我以后的学习很有方向性。我对图像几何变换的原理,包括图像的平移变换,图像的旋转,图像的旋转及图像的放大与缩小等原理都有了更清楚的认识,也明白了它们的实现机制.对于使用MATLAB去实现数字图像的处理也有了更好的认识。 通过这次的课程设计,使我意识到所有的知识都是需要用实践去帮着理解的,所谓理论指导实践,很好的实践能帮助我们更好地去理解知识,对于知识的掌握更加牢靠。同时在复习以前所学知识的同时其实也实现了温故知新,对于旧知识有了新的理解.对于工程实践,要想实现预期的效果,必须明白它实现的机制和相应的算法,只有通过相应的理论来指导,我们才能

12、有所创新,有所突破。附录:1、参考文献:【1】贺兴华等。 MATLAB7。x图像处理。 北京:人民邮电出版社,2006 【2】陈杰. MATLAB宝典。 北京:电子工业出版社,2007.【3】张德丰. MATLAB数值分析与应用。 北京:国防工业出版社,2009【4】美冈萨雷斯。温茨著。 数字图像处理。2版. 北京:电子工业出版社,2002 【5】汪晓银,邹庭荣。 数学软件与数学实验。 武汉:华中农业大学教务处,2007【6】Rafael C。Gonzalez。数字图像处理(第三版)。电子工业出版社,2011【7】杨丹,赵海滨,龙哲.MATLAB图像处理实例详解。清华大学出版社,20132、源

13、代码:(1)打开图片try isLoad=getappdata(handles.figure1,isLoad); if isLoad=0, fileName,filePath,filterIndex=uigetfile(。 .,All files;,.。 选择图像文件,MultiSelect,off); if isequal(fileName,0) | isequal(filePath,0), return; else setappdata(handles.figure1,fileName,fileName); setappdata(handles.figure1,filePath,fileP

14、ath); setappdata(handles.figure1,isLoad,1); file=fullfile(filePath,fileName); axes(handles。axes1); I=imread(file); sizeI=size(I); if length(sizeI)=3, I=rgb2gray(I); elseif length(sizeI)=2, I=I; else errordlg(Error Happened.,Error); end setappdata(handles。figure1,loadImage,I); imshow(I); end else btn

15、Name=questdlg(您已经打开一个文件,确定打开另一个?将覆盖当前的文件?,提示,. OK,Cancel,Cancel); switch btnName, case OK, setappdata(handles.figure1,isLoad,0); feval(pushbutton1_Callback,handles。pushbutton1,eventdata,handles); case Cancel, return; end endcatch errordlg(You must open a BMP file.,Error);end(1)旋转:value=get(handles。s

16、lider1,Value);loadImage=getappdata(handles。figure1,loadImage);axes(handles.axes2);I0=imrotate(loadImage,value);imshow(I0);(2)平移:try x=get(handles。popupmenu3,Value); y=get(handles。popupmenu4,Value); loadImage=getappdata(handles.figure1,loadImage); switch x, case 1, switch y, case 1, se=translate(stre

17、l(1),-100 100); saveImage=imdilate(loadImage,se); case 2, se=translate(strel(1),-50 -100); saveImage=imdilate(loadImage,se); case 3, se=translate(strel(1),0 100); saveImage=imdilate(loadImage,se); case 4, se=translate(strel(1),50 -100); saveImage=imdilate(loadImage,se); case 5, se=translate(strel(1)

18、,100 100); saveImage=imdilate(loadImage,se); end case 2, switch y, case 1, se=translate(strel(1),100 -50); saveImage=imdilate(loadImage,se); case 2, se=translate(strel(1),50 50); saveImage=imdilate(loadImage,se); case 3, se=translate(strel(1),0 50); saveImage=imdilate(loadImage,se); case 4, se=trans

19、late(strel(1),50 -50); saveImage=imdilate(loadImage,se); case 5, se=translate(strel(1),100 -50); saveImage=imdilate(loadImage,se); end case 3, switch y, case 1, se=translate(strel(1),-100 0); saveImage=imdilate(loadImage,se); case 2, se=translate(strel(1),-50 0); saveImage=imdilate(loadImage,se); ca

20、se 3, se=translate(strel(1),0 0); saveImage=imdilate(loadImage,se); case 4, se=translate(strel(1),50 0); saveImage=imdilate(loadImage,se); case 5, se=translate(strel(1),100 0); saveImage=imdilate(loadImage,se); end case 4,LoG switch y, case 1, se=translate(strel(1),-100 50); saveImage=imdilate(loadI

21、mage,se); case 2,%vertical se=translate(strel(1),-50 50); saveImage=imdilate(loadImage,se); case 3,%Both se=translate(strel(1),0 50); saveImage=imdilate(loadImage,se); case 4,Both se=translate(strel(1),50 50); saveImage=imdilate(loadImage,se); case 5,%Both se=translate(strel(1),100 50); saveImage=im

22、dilate(loadImage,se); end case 5,%Zerocross switch y, case 1, se=translate(strel(1),100 100); saveImage=imdilate(loadImage,se); case 2,vertical se=translate(strel(1),-50 100); saveImage=imdilate(loadImage,se); case 3,%Both se=translate(strel(1),0 100); saveImage=imdilate(loadImage,se); case 4,Both s

23、e=translate(strel(1),50 100); saveImage=imdilate(loadImage,se); case 5,%Both se=translate(strel(1),100 100); saveImage=imdilate(loadImage,se); end end setappdata(handles.figure1,saveImage,saveImage); axes(handles。axes2); imshow(saveImage);catch errordlg(Error Happened.,Error);end(4)放大value2=get(hand

24、les.slider2,Value);loadImage=getappdata(handles。figure1,loadImage);axes(handles.axes2);I0=imresize(loadImage,value2);figure,imshow(I0);(5)缩小function pushbutton6_Callback(hObject, eventdata, handles)value3=get(handles。slider3,Value);loadImage=getappdata(handles.figure1,loadImage);axes(handles。axes2);I0=imresize(loadImage,value3);figure,imshow(I0);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1