1、图形图像论文论文题目: 图 像 锐 化专业名称: 指导教师: 2011 年 6月 22日1、实验目的1用 MATLAB或其他的语言来实现数字图像处理方面的一些操作;2熟悉 MATLAB7.1的一些基本函数及与数字图像处理相关的函数;3熟悉图形用户界面(GUI) ,并用其来编写界面;4熟悉在界面(GUI)实现读图像,保存图像,Robert 算子、Sobel 算子、Prewitt算子、Kirsch 算子、Log 算子、Canny 算子进行边缘检测。并能用 MATLAB实现以上的功能;5掌握从简单到复杂的方法,一步一步的实现功能,并能耐心排错,养成合作互助精神。2、实验任务1实现图像的打开,显示,保
2、存操作。2实现图像的边缘检测,如 Robert算子边缘检测,Sobel 算子边缘检测,Prewitt算子边缘检测,Log 算子边缘检测,Canny 算子边缘检测;3实现整个界面的设计,编排,最终达到一种比较完美的效果。3、主要内容整个程序的设计过程,大致上是按照实习的任务顺序来设计的。基本设计过程如下所示:1、 在刚刚接触 MATLAB 的 GUI 设计时,还不太熟悉 GUI。因而经过了一段时间的资料查询和书本学习以及和同学们讨论过后,渐渐掌握了基本的 GUI用户交互界面的设计方法。2、 首先是新建一个空白的 GUI 界面,然后根据功能的需要,往界面里拖动各个控件。在这个时候,整个界面的对齐和
3、控件的摆放都需要经过设计。由于我们所设计的界面思路是:将所有需要实现的功能全部摆放在界面上,当使用者进入界面时就能直截了当地看到所有的东西,点击控件就能实现想要的功能。所以除了菜单栏以外,所有功能都能在 GUI 界面上直接找到。3、 在设计任务上要求的有几个大范围,我们对各个任务的设计如下:文件的打开、显示、保存。我们将文件的打开、保存以及程序退出放到菜单栏里,当点击菜单栏的“文件(F) ”时,会出现下拉菜单,点击各个选项就能实现相应功能。 “文件打开”可以打开在文件夹MATLAB 中*.png、 *.tif、*jpg、*.bmp、*.gif 格式的图像文件 ,并将其显示到GUI界面中的“原始
4、图像”和“处理后图像” 。 “文件保存”则是将当前“处理后图像”以*.jpg的形式保存到文件夹MATLAB中。对于“图像显示” ,我们的设计是:当用户一进入GUI界面时,就能看到界面中已经显示出来的两幅一样的图像,它们就是“原始图像”和“处理后图像” 。而后“原始图像”在整个功能实现过程中,除了“文件打开”功能会变换显示的图像之外, “原始图像”一直不做改变以便与“处理后图像”形成对比。对于“图像旋转” ,也是只显示在“处理后图像” ,其针对的是原始图像或加噪后的图像,我们将它设计为向逆时针方向旋转90度,并且可以一直向这个方向旋转。实现图像的边缘检测。包括“Robert 算子” 、 “Sob
5、el 算子” 、 “Prewitt 算子” 、“Log 算子” 、 “Canny 算子”这 5个选择。这 5 项均放在一个 “button group”“边缘检测”中,每次点击都只有一项“radio Button”起作用,分别对“原始图像”进行处理后显示到“处理后图像”中,4、 为了图像处理的易于观察性,我们添加了一个名为“恢复原图”的“push Button”。当使用者点击该按钮时,在“处理后图像”中则会显示与“原始图像”相同的未经过处理的图像。这时,使用者可以像刚进入 GUI 界面一样进行各种处理,若不满意“处理后图像”或者不下心点击了其它不需要的功能,则可以点击该按钮,使图像复原。5、
6、整个设计过程中,最重要的也是花费最多时间的部分就是为各个功能按钮添加程序代码,从图像的读入到处理后图像的显示,每个细节都需要考虑并且在实验过程进行中反复的纠错和修改。6、 设计完成之后整个界面如下:4、算法实现读取图片,使用者可以从按钮中读出文件夹“MATLAB ”中的图像,并将其显示到两个坐标轴 axes1 和 axes2 中。在菜单编辑器中 “打开”的 Callback 中加入如下程序代码:function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)%
7、 eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%global imfilename,pathname=.uigetfile(*.*;*.bmp;*.jpg;*.tif;*.png,selecet pictrue);if isequal(filename,0)|isequal(pathname,0)return;endstr=pathname filename;im=imread(str);ax
8、es(handles.axes1);imshow(im);setappdata(handles.figure1,im,im);图片保存。当用户想要对处理后图像进行保存时,可以通过按钮实现功能,将“处理后图像”即坐标轴 axes2 中的图像文件保存到文件夹 “MATLAB”中。在菜单编辑器中“保存”的 Callback 函数中加入如下程序代码:function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be
9、 defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%global BWfilename,pathname=.uiputfile(*.tif;*.jpg;*.png;*.bmp,save pictrue);if isequal(filename,0)|isequal(pathname,0)returnelsestr=pathname filenameaxes(handles.axes2);im=getimage(handles.axes2);imwri
10、te(im,str);End程序退出。当用户点击“退出”按钮,则执行整个 GUI 界面的退出功能。在菜单编辑器中“退出”的 Callback 子函数中添加如下代码:function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see
11、GUIDATA)close(gcf) %关闭当前Figure窗口句柄图像的边缘检测。对于该功能的实现,本程序在一个 Button group“边缘检测”中设置了 5 个 radio Button,分别在每个按钮的回调函数 Callback 中添加代码,每次用户点击该组按钮时只有一个按钮起作用,分别对同一图像进行边缘检测处理。所添加的程序如下:function uipanel4_SelectionChangeFcn(hObject, eventdata, handles)% hObject handle to the selected object in uipanel4 % eventdata
12、 structure with the following fields (see UIBUTTONGROUP)% EventName: string SelectionChanged (read only)% OldValue: handle of the previously selected object or empty if none was selected% NewValue: handle of the currently selected object% handles structure with handles and user data (see GUIDATA)glo
13、bal BW %定义全局变量im=getappdata(handles.figure1,im);str=get(hObject,string); %拿到所选按钮的名称axes(handles.axes2); %使用第二个axesswitch str %选择语句%恢复原图caseInitial %点 击原图按钮imshow(im); %显示原图%Robert算子caseRoberts %点 击Roberts边缘检测按钮BW=edge(im,roberts);imshow(BW);%Sobel算子caseSobel %点击 Sobel边缘检测按钮BW=edge(im,sobel,0.02);ims
14、how(BW);%Prewitt 算子casePrewitt %点击Prewitt边缘检测按钮BW=edge(im,prewitt,0.04); imshow(BW);%LOG 算子caseLog %点击Log边缘检测按钮 BW=edge(im, log,0.003);imshow(BW);%Cannny 算子caseCanny %点击Canny边缘检测按钮BW=edge(im,canny,0.2);imshow(BW);end;guidata(hObject,handles5、总结虽然这次实习只有二个星期的时间,但是我们对图像处理的各种方法及应用有了更深的理解,学会了应用 MATLAB软件及
15、 GUI来实现界面的操作和编程处理。MATLAB 是我们在以前和以后的学习工作中都会经常应用到的软件,但是在以前还是对其了解不足,操作不是很了解,在实习之初便因为这个问题而无从下手。于是我们寻找了许多这方面的书籍以及应用网络教程来对其进行学习,逐渐的增强了对 MATLAB及 GUI的了解,能够摸索着开始进行编写。实习中也遇到了很多问题,但通过查阅书籍、同学间讨论、请教老师以及网上查找最终能够得以解决,完成这次实习。通过这次实习,我们学会了应用 MATLAB软件来实现图像处理中的一些重要的操作并且对 MATLAB也能够更加了解,对其的一些常见函数以及与图像处理相关的函数都比较了解,并能够应用这些
16、函数来解决图像处理的问题。GUI 对于我们是一个新的知识,通过各方面的学习,我们最终对 GUI也有了比较深的了解,能够很顺利的应用 GUI来设计出适合并且美观的界面。图像处理是我们这学期的一门很重要的课程,在课上虽然学习了很多知识,但是不经过自己动手操作而只看到书上的一些概念和处理的图片并不能很清楚的了解到各种操作的效果,并且不动手操作,知识就只能局限于书本上。经过这次实习,不但能够让我们再次复习了本学期所学的图像处理的知识,加深了对这些知识的记忆,并且让我们对图像处理的各种处理方法如灰度变换、直方图均衡、滤波等等对图像产生的效果有了更加直观的了解,不但加深了记忆也能因此更加了解各种处理方法的
17、应用,可以用 MATLAB软件来对这些处理来实现。这次实习要实现的内容比较多,其中有一些易操作的也有一些比较复杂的,在实习过程中也会遇到一些难以突破的问题,但是在这个过程中需要我们耐心的学习,一步一步通过各种途经学习到解决的方法,也培养了我们的耐心和学习的能力。这次是两人一组的实习,因此合理的分工合作也是很重要的,通过实习也培养了我们之间分工协作互帮互助的精神。总体来说,我们的这次实习还是比较成功的,较为成功的完成了我们的实习任务,并且达到到了我们实习的目的。6、参考文献MATLAB 7.X图像处理 :贺兴华、周媛媛、王继阳、周晖等编著,人民邮电出版社 2006 年版MATLAB GUI设计学习手记 :罗华飞编著,北京航空航天大学出版社 2009版。数字图像处理(MATLAB 版) :冈萨雷斯著、阮秋琦等译,电子工业出版社2005版。MATLAB 基础及其应用教程 :周开利、邓春晖主编,北京大学出版社 2007版。MATLAB 在信号与图像处理中的应用 :朱习军、隋思涟、张宾、刘尊年主编,电子工业出版社 2009版。MATLAB 语言与工程数据分析 :隋思涟、王岩主编,清华大学出版社 2009版。MATLAB 函数速查手册 :邓薇编著,人民邮电出版社 2008版。