您好,欢迎访问三七文档
图形图像论文论文题目:图像锐化姓名:学号:专业名称:指导教师:2011年6月22日一、实验目的1.用MATLAB或其他的语言来实现数字图像处理方面的一些操作;2.熟悉MATLAB7.1的一些基本函数及与数字图像处理相关的函数;3.熟悉图形用户界面(GUI),并用其来编写界面;4.熟悉在界面(GUI)实现读图像,保存图像,Robert算子、Sobel算子、Prewitt算子、Kirsch算子、Log算子、Canny算子进行边缘检测。并能用MATLAB实现以上的功能;5.掌握从简单到复杂的方法,一步一步的实现功能,并能耐心排错,养成合作互助精神。二、实验任务1.实现图像的打开,显示,保存操作。2.实现图像的边缘检测,如Robert算子边缘检测,Sobel算子边缘检测,Prewitt算子边缘检测,Log算子边缘检测,Canny算子边缘检测;3.实现整个界面的设计,编排,最终达到一种比较完美的效果。三、主要内容整个程序的设计过程,大致上是按照实习的任务顺序来设计的。基本设计过程如下所示:1、在刚刚接触MATLAB的GUI设计时,还不太熟悉GUI。因而经过了一段时间的资料查询和书本学习以及和同学们讨论过后,渐渐掌握了基本的GUI用户交互界面的设计方法。2、首先是新建一个空白的GUI界面,然后根据功能的需要,往界面里拖动各个控件。在这个时候,整个界面的对齐和控件的摆放都需要经过设计。由于我们所设计的界面思路是:将所有需要实现的功能全部摆放在界面上,当使用者进入界面时就能直截了当地看到所有的东西,点击控件就能实现想要的功能。所以除了菜单栏以外,所有功能都能在GUI界面上直接找到。3、在设计任务上要求的有几个大范围,我们对各个任务的设计如下:①文件的打开、显示、保存。我们将文件的打开、保存以及程序退出放到菜单栏里,当点击菜单栏的“文件(F)”时,会出现下拉菜单,点击各个选项就能实现相应功能。“文件打开”可以打开在文件夹‘MATLAB’中'*.png'、'*.tif'、'*jpg'、'*.bmp'、'*.gif'格式的图像文件,并将其显示到GUI界面中的“原始图像”和“处理后图像”。“文件保存”则是将当前“处理后图像”以‘*.jpg’的形式保存到文件夹‘MATLAB’中。对于“图像显示”,我们的设计是:当用户一进入GUI界面时,就能看到界面中已经显示出来的两幅一样的图像,它们就是“原始图像”和“处理后图像”。而后“原始图像”在整个功能实现过程中,除了“文件打开”功能会变换显示的图像之外,“原始图像”一直不做改变以便与“处理后图像”形成对比。对于“图像旋转”,也是只显示在“处理后图像”,其针对的是原始图像或加噪后的图像,我们将它设计为向逆时针方向旋转90度,并且可以一直向这个方向旋转。②实现图像的边缘检测。包括“Robert算子”、“Sobel算子”、“Prewitt算子”、“Log算子”、“Canny算子”这5个选择。这5项均放在一个“buttongroup”——“边缘检测”中,每次点击都只有一项“radioButton”起作用,分别对“原始图像”进行处理后显示到“处理后图像”中,4、为了图像处理的易于观察性,我们添加了一个名为“恢复原图”的“pushButton”。当使用者点击该按钮时,在“处理后图像”中则会显示与“原始图像”相同的未经过处理的图像。这时,使用者可以像刚进入GUI界面一样进行各种处理,若不满意“处理后图像”或者不下心点击了其它不需要的功能,则可以点击该按钮,使图像复原。5、整个设计过程中,最重要的也是花费最多时间的部分就是为各个功能按钮添加程序代码,从图像的读入到处理后图像的显示,每个细节都需要考虑并且在实验过程进行中反复的纠错和修改。6、设计完成之后整个界面如下:四、算法实现读取图片,使用者可以从按钮中读出文件夹“MATLAB”中的图像,并将其显示到两个坐标轴axes1和axes2中。在菜单编辑器中“打开”的Callback中加入如下程序代码:functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%globalim[filename,pathname]=...uigetfile({'*.*';'*.bmp';'*.jpg';'*.tif';'*.png'},'selecetpictrue');ifisequal(filename,0)||isequal(pathname,0)return;endstr=[pathnamefilename];im=imread(str);axes(handles.axes1);imshow(im);setappdata(handles.figure1,'im',im);图片保存。当用户想要对处理后图像进行保存时,可以通过按钮实现功能,将“处理后图像”即坐标轴axes2中的图像文件保存到文件夹“MATLAB”中。在菜单编辑器中“保存”的Callback函数中加入如下程序代码:functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%globalBW[filename,pathname]=...uiputfile({'*.tif';'*.jpg';'*.png';'*.bmp'},'savepictrue');ifisequal(filename,0)||isequal(pathname,0)returnelsestr=[pathnamefilename]axes(handles.axes2);im=getimage(handles.axes2);imwrite(im,str);End程序退出。当用户点击“退出”按钮,则执行整个GUI界面的退出功能。在菜单编辑器中“退出”的Callback子函数中添加如下代码:functionpushbutton3_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)close(gcf)%关闭当前Figure窗口句柄图像的边缘检测。对于该功能的实现,本程序在一个Buttongroup——“边缘检测”中设置了5个radioButton,分别在每个按钮的回调函数Callback中添加代码,每次用户点击该组按钮时只有一个按钮起作用,分别对同一图像进行边缘检测处理。所添加的程序如下:functionuipanel4_SelectionChangeFcn(hObject,eventdata,handles)%hObjecthandletotheselectedobjectinuipanel4%eventdatastructurewiththefollowingfields(seeUIBUTTONGROUP)%EventName:string'SelectionChanged'(readonly)%OldValue:handleofthepreviouslyselectedobjectoremptyifnonenonewasselected%NewValue:handleofthecurrentlyselectedobject%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalBW%定义全局变量im=getappdata(handles.figure1,'im');str=get(hObject,'string');%拿到所选按钮的名称axes(handles.axes2);%使用第二个axesswitchstr%选择语句%恢复原图case'Initial'%点击原图按钮imshow(im);%显示原图%Robert算子case'Roberts'%点击Roberts边缘检测按钮BW=edge(im,'roberts');imshow(BW);%Sobel算子case'Sobel'%点击Sobel边缘检测按钮BW=edge(im,'sobel',0.02);imshow(BW);%Prewitt算子case'Prewitt'%点击Prewitt边缘检测按钮BW=edge(im,'prewitt',0.04);imshow(BW);%Kirsch算子case'Kirsch'%点击Kirsch边缘检测按钮BW=edge(im,'Kirsch',0.01);imshow(BW);%LOG算子case'Log'%点击Log边缘检测按钮BW=edge(im,'log',0.003);imshow(BW);%Cannny算子case'Canny'%点击Canny边缘检测按钮BW=edge(im,'canny',0.2);imshow(BW);end;guidata(hObject,handles五、讨论(遇到的问题以及解决方法)六、总结虽然这次实习只有二个星期的时间,但是我们对图像处理的各种方法及应用有了更深的理解,学会了应用MATLAB软件及GUI来实现界面的操作和编程处理。MATLAB是我们在以前和以后的学习工作中都会经常应用到的软件,但是在以前还是对其了解不足,操作不是很了解,在实习之初便因为这个问题而无从下手。于是我们寻找了许多这方面的书籍以及应用网络教程来对其进行学习,逐渐的增强了对MATLAB及GUI的了解,能够摸索着开始进行编写。实习中也遇到了很多问题,但通过查阅书籍、同学间讨论、请教老师以及网上查找最终能够得以解决,完成这次实习。通过这次实习,我们学会了应用MATLAB软件来实现图像处理中的一些重要的操作并且对MATLAB也能够更加了解,对其的一些常见函数以及与图像处理相关的函数都比较了解,并能够应用这些函数来解决图像处理的问题。GUI对于我们是一个新的知识,通过各方面的学习,我们最终对GUI也有了比较深的了解,能够很顺利的应用GUI来设计出适合并且美观的界面。图像处理是我们这学期的一门很重要的课程,在课上虽然学习了很多知识,但是不经过自己动手操作而只看到书上的一些概念和处理的图片并不能很清楚的了解到各种操作的效果,并且不动手操作,知识就只能局限于书本上。经过这次实习,不但能够让我们再次复习了本学期所学的图像处理的知识,加深了对这些知识的记忆,并且让我们对图像处理的各种处理方法如灰度变换、直方图均衡、滤波等等对图像产生的效果有了更加直观的了解,不但加深了记忆也能因此更加了解各种处理方法的应用,可以用MATLAB软件来对这些处理来实现。这次实习要实现的内容比较多,其中有一些易操作的也有一些比较复杂的,在实习过程中也会遇到一些难以突破的问题,但是在这个过程中需要我们耐心的学习,一步一步通过各种途经学习到解决的方法,也培养了我们的耐心和学习的能力。这次是两人一组的实习,因此合理的分工合作也是很重要的,通过实习也培养了我们之间分工协作互帮互助的精神。总体来说,我们的这次实习还是比较成功的,较为成功的完成了我们的实习任务,并且达到到了我们实习的目的。七、参考文献《MATLAB7.X图像处理》:贺兴华、周媛媛、王继阳、周晖等编著,人民邮电出版社2006
本文标题:图形图像课程设计
链接地址:https://www.777doc.com/doc-5662010 .html