技术蛀虫

导航

MATLAB GUI平台

研究生阶段写的一个小文章,内容肤浅,不过转载请注明,谢谢!!

摘要:本文主要介绍了基于MATLAB的图形用户界面(GUI)来制作图像处理软件平台的具体过程和相关技巧,文章主要从几个方面展开论述:第一,简单介绍下GUI与GUIDE;第二,介绍以下GUIDE的模板及其操作方法;第三,详细阐述一下图像处理软件平台的制作方法。本文的GUI例子所制作的图像处理软件可以实现的功能有:五种常用的边缘检测、灰度直方图的显示、灰度直方图的均衡化、对比度自适应直方图的均衡化、图片的二值化以及彩色图片的灰度化。文章基本介绍了以上的内容,关于软件还有许多未能实现的功能有待于日后的逐步开发,从这个简单的实例可以让读者从感性的方面充分了解MATLAB的图形用户界面的相关功能,同时为打算深入学习这一套MATLAB工具集的读者做一个铺垫。

关键词:图形用户界面;图像处理;边缘检测;MATLAB工具集

一、引言

图形用于界面(Graphical User Interfaces,GUI)是提供人机交互的工具和方法。GUI是包含图形对象(如窗口、图标、菜单和文本)的用户界面。以某种方式选择或激活这些对象时,通常会引起动作或者发生变化。一个设计优秀的GUI能够非常直观的让用户知道如何操作MATLAB界面,并且了解设计者的开发意图。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。

所谓的GUIDE就是图形用户界面开发环境(Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:1)输出GUI。2)GUI编程。GUIDE实际上是一套MATLAB工具集,它主要由七部分组成:版面设计器、属性编辑器、菜单编辑器、调整工具、对象浏览器、Tab顺序编辑器、M文件编辑器。

二、GUIDE的操作界面及使用方法的介绍

1.启动GUIDE  在命令窗口中直接键入guide,启动GUIDE,或者直接点击MATLAB上   按钮,会出现如图1所示的GUIDE Quick Start对话框。利用GUIDE模板创建GUI,或者打开已经存在的GUI,单击OK按钮,打开版面设计工具,如图2所示。在通常状况下组件面板并不显示出组件的名称,如果需要显示组件名称,则进行下面的操作:从File菜单中选择Preferences选项,勾选Show names in component palette选项即可。

 2GUI文件的介绍  GUIDE把GUI设计的内容保存在两个文件中,它们在第一次保存或运行时生成。一个是FIG文件,扩展名为.Fig,它包含对GUI和GUI组件的完整描述;另外一个是M文件,扩展名为.M,它包含控制GUI的代码和组件的回调事件代码。这两个文件与GUI显示和编程任务相对应。在版面设计器中创建GUI时,内容保存在FIG文件中;对GUI编程时,内容保存在M文件中。通常情况下在版面设计器工具栏上单击   图标可以打开M文件编辑器。图3所示的编辑器显示了GUI with Axes and Menu模板的M文件的内容。

                       3.GUIDE环境的设置  用户可以自定义GUIDE设计环境。在File菜单下选择Preferences,打开如图4所示的设置对话框,可以进行相应的设置。

 三、基于GUI的图像处理软件平台的设计过程

1.GUIDE版面设计器(即FIG文件)的设计  根据设计需要:首先拖拽两个图形窗口(Axes),一个作为待处理图片区域,另一个作为已处理图片区域;其次,拖拽六个电子按钮(Radio Button),作为边缘检测操作按钮以及一个Panel按钮作为检测按钮的支撑面板;第三,拖拽三个按钮(Push Button),作为灰度变化区域的按钮;最后,拖拽五个按钮(Push Button),作为选取/保存图片及退出等操作按钮。将上面的所有按钮及图形窗口合理的布局,达到美观工整的效果,本文设计的GUIDE如图5所示,然后运行一下GUI,系统会自动生成GUI文件。

 

 

 

                    图5  图像处理软件的GUIDE版面

2.选取图片按钮的GUI设计  要想设计一个图像处理的软件,首先要考虑选取图片,选取什么格式的图片,这个是至关重要的,所以先介绍一下选取图片按钮的GUI设计方法。上面已经规划好了按钮的位置,如果想在点击选取图片按钮时,软件给予响应,需要给按钮输入一定的程序代码,设置代码的方法如下:右键单击选取图片按钮,选择View Callbacks/ Callback,系统会自动带设计者进入此按钮的代码输入区域,在下面的空白处输入如下代码[1]

global im   %定义一个全局变量im

[filename,pathname]=...

    uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'select picture');  %选择图片路径

str=[pathname filename];  %合成路径+文件名

im=imread(str);   %读取图片

axes(handles.axes1);  %使用第一个axes

imshow(im);  %显示图片

写完上述代码后,保存M文件,然后运行GUI,现在就可以实现选择图片的功能了。当然有选取就要考虑存储已处理好的图片,这就引出了存储图片按钮的GUI设计。

3.存储图片按钮的GUI设计  同样右键单击存储图片按钮,选择View Callbacks/ Callback,进去M文件后在下面的空白处输入如下代码[2]

global BW  %定义处理后的图片BW这个全局变量

[filename,pathname,filterindex]=...

    uiputfile({'*.bmp';'*.tif';'*.png'},'save picture');存储图片路径

if filterindex==0

return  %如果取消操作,返回

else

str=[pathname filename];  %合成路径+文件名

axes(handles.axes2);  %使用第二个axes

imwrite(BW,str);  %写入图片信息,即保存图片

end

4.边缘检测按钮组的GUI设计  本文设计的GUI主要包含了五种最常用的检测算法(即roberts、sobel、prewitt、log、canny检测),右键单击Panel面板,选择View Callbacks/ SelectionChangeFcn,进入M文件后在空白处输入如下代码[3]

global im

global BW  %定义全局变量

str=get(hObject,'string');  %拿到所选按钮的名称

axes(handles.axes2);   %使用第二个axes

 switch str   %选择语句

    case'Initial'  %点击原图按钮

        imshow(im);  %显示原图

    case'Roberts'  %点击Roberts边缘检测按钮

        BW=edge(im,'roberts');

        imshow(BW);

    case'Sobel'  %点击Sobel边缘检测按钮

        BW=edge(im,'sobel');

        imshow(BW);

    case'Prewitt'  %点击Prewitt边缘检测按钮

        BW=edge(im,'prewitt');

        imshow(BW);

    case'Log'  %点击Log边缘检测按钮      

        BW=edge(im,'log');

        imshow(BW);

    case'Canny'  %点击Canny边缘检测按钮

        BW=edge(im,'canny');

        imshow(BW);

end;

5.退出按钮的GUI设计  同样右键单击退出按钮,选择View Callbacks/ Callback,进入M文件中,在空白处输入如下代码:

close(gcf)  %关闭当前Figure窗口句柄

其他按钮代码的设置都与上面叙述的大同小异,相关图像处理程序代码请参考MATLAB7.0图形图像处理[4],在这里将不再累述。

四、图像处理软件的运行举例

    运行GUI,将生成图像处理的软件平台,它可以实现的功能有:五种常用的边缘检测、灰度直方图的显示、灰度直方图的均衡化、对比度自适应直方图的均衡化、图片的二值化以及彩色图片的灰度化。现在运行软件并举些相关图像处理实例。

1.灰度图片边缘检测的举例  首先选择一幅名字为lena256的灰度图片,依次选择五种检测按钮,比较各种边缘检测的处理效果,通过对比,发现Canny

算子对图片的边缘检测效果比较好,其检测效果如图6所示,其它4种算子检测后的效果如图7所示。

                       2.灰度图片的直方图显示举例  选取名字为cameraman的灰度图片,点击直方图的显示按钮,此灰度图片的直方图分布将显示在第二个axes中,其处理结果如图8所示。

                       3.彩色图片的二值化和灰度化处理举例  选取名字为Water lilies的彩色图片,分别点击二值化和灰度化按钮并保存处理后的图片,其处理后的图片效果如图9所示。

  

五、结束语

    由于MATLAB强大的工程计算和仿真能力,使越来越多的用户从原来的开发环境转到MATLAB上来。现在绝大多数MATLAB开发者都是一些从事一定领域的研究者,他们使用其他的开发环境设计GUI不紧编程复杂、而且学习困难,往往需要花费大量时间在编程上。但是,MATLAB提供了一个简便的开发环境,可以让开发着快速上手,提高了开发者的工作效率。本文详细向读者介绍了MATLAB的GUI的制作方法,通过这个例子,可以清楚的了解GUIDE的设计方法及相关图像处理代码的编辑,使读者从感性的角度认识GUIDE的功能及使用方法,可以说为初学者提供了一个学习平台,打下坚实的基础

 

posted on 2012-05-08 09:45  技术蛀虫  阅读(17315)  评论(2编辑  收藏  举报