ISSN1009-3044
Computer与技术电脑知识与技术ComputerKnowledgeKnowledgeandandTechnologyTechnology电脑知识
Vol.7,No.25,September2011.第7卷第25期(2011年9月)http://E-mail:xsjl@http://Tel:+86-551-56909635690964通过MATLABGUI实现图像处理软件的开发
张敏1,洪汉玉2
(1.武汉工程大学电气信息学院,湖北武汉430205;2.武汉工程大学机电工程学院,湖北武汉430205)
摘要:数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。图像处理的信息量很大,对处理速度的要求也比较高。Matlab具有强大的运算和图形展示功能,使图像处理变得更加的简单和直观。该文主要介绍了基于MATLAB的图形用户界面(GraphicalUserInterfaces,GUI)来制作图像处理软件的基本过程,该文首先简单介绍下MATLAB的GUI与GUIDE;其次,介绍了GUIDE的模板及其基本操作方法;最后,介绍了通过MATLABGUI实现图像处理软件的开发方法。该文开发的图像处理软件可以实现的基本功能有:常用的边缘检测以及彩色图片的灰度化。关键词:图形用户界面;图形用户界面开发环境;灰度图片;图像处理;边缘检测
中图分类号:TP317.4文献标识码:A文章编号:1009-3044(2011)25-6156-02
TheRealizationofImageProcessingSoftwareDevelopmentbyMATLABGUI
ZHANGMin1,HONGHan-yu2
(1.SchoolofElectricalandInformationEngineering,WuhanInstituteofTechonlogy,Wuhan430205,China;2.SchoolofMechanicalandElectricalEngineering,WuhanInstituteofTechonlogy,Wuhan430205,China)
Abstract:Digitalimageprocessingisatechnologythatusingcomputertoprocessimagesthroughacertainalgorithm.Thereisalargeamountofinformationtoprocessinimageprocessing,therequirementsofthespeedofprocessingisevenhigher.Matlabhaspowerfulfunc-tionsofcomputingandgraphicsdisplay,whichmakesimageprocessingbecomemoresimpleandvisual.ThispapermainlyintroducestheMATLABbasedgraphicaluserinterface(GraphicalUserInterfaces,GUI)tomaketheimageprocessingsoftwarethebasicprocess.Thispa-perfirstbrieflyundertheMATLABGUIandGUIDE;secondly,introducedtheGUIDEtemplateandthebasicmethodofoperation;fi-nally,introducedbyMATLABGUIrealizeimageprocessingsoftwaredevelopmentmethod.Inthispaperthedevelopmentofimagepro-cessingsoftwarecanachievethebasicfunctionsare:thecommonlyusededgedetectionandcolorimagesofgray.
Keywords:GUI;GUIdevelopmentenvironment;grayImage;imageprocessing;edgedetection
数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。数字图像处理技术已经在各个领域上都有了比较广泛的应用。图像处理的信息量很大,对处理速度的要求也比较高。Matlab强大的运算和图形展示功能,使图像处理变得更加的简单和直观。本文基于MATLAB的数字图像处理环境,通过MATLABGUI实现图像处理软件的开发设计,实现了一个图像处理系统,通过利用Matlab的工具函数和多种算法实现对图形图像边缘检测的处理。对图像分析和理解而言,基本的就是图像分割和区域描述,图像分割部分是图像识别的基础。
1GUIDE的操作界面使用方法及GUI的设计介绍
图形用于界面(GUI)是提供人机交互的工具和方法。GUI是包含图形对象(如窗口、图标、菜单和文本)的用户界面。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。在MATLAB中的GUIDE就是图形用户界面开发环境(GraphicalUserInterfaceDevelopmentEnvironment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。
下面对GUIDE的操作界面及使用方法做一简单介绍。
在命令窗口中直接键入guide,启动GUIDE,利用GUIDE模板创建
GUI,或者打开已经存在的GUI,GUIDE把GUI设计的内容保存在两个文
件中,它们在第一次保存或运行时生成。一个是FIG文件,扩展名为.Fig,
它包含对GUI和GUI组件的完整描述;另外一个是M文件,扩展名为.M,
它包含控制GUI的代码和组件的回调事件代码。这两个文件与GUI显示
和编程任务相对应。在版面设计器中创建GUI时,内容保存在FIG文件
中;对GUI编程时,内容保存在M文件中。用GUIDE版面设计器,根据设
计需要:首先拖拽两个图形窗口(Axes),一个作为待处理图片区域,另一个
作为已处理图片区域;其次,拖拽五个电子按钮(RadioButton),作为边缘
图1图像处理软件的GUIDE版面检测操作按钮;第三,拖拽五个按钮(PushButton),作为输入等的按钮;最
收稿日期:2011-07-26
基金项目:国家自然科学基金资助(61175013;50975211)
作者简介:张敏(1964-),男,湖北武汉人,副教授,工程硕士,研究方向为过程控制及系统仿真。
6156软件设计开发本栏目责任编辑:谢媛媛
第7卷第25期(2011年9月)ComputerKnowledgeandTechnology电脑知识与技术后,将上面的所有按钮及图形窗口合理的布局,达到美观工整的效果,然后运行一下GUI,系统会自动生成GUI文件[1]。
上面已经规划好了按钮的位置,如果想在点击选取图片按钮时,软件给予响应,需要给按钮输入一定的程序代码。下面以输入按钮的GUI设计为例介绍一下GUICallback的设计方法,其它的与之类似,就不介绍了。设置代码的方法如下:右键单击选取图片按钮,选择ViewCallbacks/Callback,系统会自动带设计者进入此按钮的代码输入区域,在下面的空白处输入如下代码[1]:
globalim%定义一个全局变量im
[filename,pathname]=...
uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'selectpicture');%选择图片路径
str=[pathnamefilename];%合成路径+文件名
im=imread(str);%读取图片
axes(handles.axes1);%使用第一个axes
imshow(im);%显示图片
运行GUI,将生成图像处理的软件平台,本文设计的GUI如图1所示,该图像处理软件可以实现的功能有:五种常用的边缘检测,图像输入,图像转换(彩色图片灰度化)等。
2基于MATLABGUI的图像处理软件边缘检测过程
在图像处理技术中,往往要求对图像描述并对图像进行分析和理解。图像分析和理解,在实际应用时,非常重要。如,对大规模集成电路的自动检测、对医学癌细胞的识别里、在机器人的视觉领域方面等,都是十分重要的。对图像分析和理解而言,基本的就是图像分割和区域描述。本文主要是研究图像分割部分,因为它是图像识别的基础,如图2所示。图像分割就是将图像中有意义的对象与背景分离,并把这些对象按照不同的含义分割出来,即将图像中具有不同含义的对象提取出来。
图像分割可以分为两种:一是基于边界的分割技术;另一是基于区域的分割技术。这里主要涉及的是第一种即边缘检测。边缘检测是一种重要的区域处理方法,边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。如果一个像素落在边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向。边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定。
图3中显示了图像边缘所对应的一阶、二阶导数曲线,从中可以看到,图像边缘对应一阶导数的极大值点、图像边缘对应二阶导数的过零点。所以,利用求导的方法可以较方便地检测到灰度值的不连续效果[2-3]。边缘的检测可以用微分算子利用卷积来实现。常用的微分算子有梯度算子和拉普拉斯算子等,这些算子可以检测图像的二维边缘,
而且可以检测图像的三维边缘。MATLAB工具箱提供的常用的梯度算子有基于一阶导
数的边缘的检测算子,如:Sobel算子、Prewitt算子、Roberts算子;有基于二阶导数的边
缘的检测算子即拉普拉斯(Laplacian)算子,如:Log算子;另外,Canny算子是基于最优
化思想推导出的边缘检测算子[3]。MATLAB工具箱提供的edge()函数可针对以上算子
实现检测边缘的功能[2-3]。edge()函数是基于灰度的图像,对于彩色图片应先灰度化,图
一中就是先把彩色图片灰度化后的边缘检测效果。边缘检测也可以用MATLAB代码
实现。
不同的算子边缘的检测效果不尽相同,各有特点。下面通过MATLABGUI实现图
像处理的边缘检测,从中可以看到实际的效果。
灰度图片边缘检测的实例:首先选择一幅灰度图片,依次选择五种检测按钮,比较
各种边缘检测的处理效果,如图4原图及Roberts、Sobel、Prewitt边缘检测效果,图5图3
图像边缘及相应导数图2图像分割在图像处理技术中的作用
Log、Canny算子对图片的边缘检测效果。
对边缘检测不管采用那种方法,都有一
些基本要求:在检测出图像真实的边缘的同
时要避免检测出现虚假的边缘,错误检测率
要尽可能低;标记出的边缘位置要和图像上
真正边缘的位置尽量接近;图像上本来只有
一个边缘点,实际检测可能会出现多个边缘
点;克服噪声的影响。
基于一阶导数的边缘的检测算子,在算法实现过程中,通过模板(2×2或图4原图及Roberts、Sobel、Prewitt算子对图片的边缘检测效果
3×3)作为核心,与每个像素点做卷积和运算,然后选取合适的阀值以提取边
缘[2-3]。Roberts算子对边缘定位精度较高,但容易丢失一部分边缘,同时由于
图像没经过平滑处理,因此不具备能抑制噪声能力。该算子对具有陡峭边缘
且含噪声少的图像效果较好。Sobel算子和Prewitt算子都是对图像先做加权
平滑处理,然后再做微分运算,所不同的是平滑部分的权值有些差异,因此对
噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘。虽
然这两个算子边缘定位效果不错,但检测出的边缘容易出现多像素宽度。拉普拉斯算子是基于二阶导数的边缘的检测算子,其对噪声敏感。Log算子首先用高斯函数对图像作平滑滤波处理,然后才使用拉普拉斯算子检测边缘,因此克服了拉普拉斯算子抗噪声能力比较差的缺点,但是在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法检被测到。Canny算
(下转第6160页
)
本栏目责任编辑:谢媛媛图5Log、Canny算子对图片的边缘检测效果软件设计开发6157
ComputerKnowledgeandTechnology电脑知识与技术第7卷第25期(2011年9月)而不是"我们的系统"。
事实上,ERP为市场部门和生产部门提供了从未有过的联合机会。在运用ERP的企业中,市场部门不但负有向ERP系统提供输入的责任,而且可把ERP系统作为他们极好的工具。只有当市场部门了解生产部门能够生产什么和正在生产什么,而生产部门也了解市场需要生产什么的时候,企业才能够生产出更多适销对路的产品,投放到市场上。
3.2.3财务管理的转变
1)与生产管理有机结合,发挥计划与控制作用
企业信息管理在某些方面需要加以控制,然而多数企业没有所需要的详细计划与控制手段。主要的问题在于:生产管理方面使用的各种数据是不准确的,而财务人员又必须使用这些数据,因而自然地导致更大程度的失真。
然而ERP系统却可以把企业的生产和财务管理集成在一起。
2)ERP的货币表现形式
生产人员经常与财务人员发生争执,因为他们不知道财务人员的数字为什么与他们掌握的数据不一致。而财务人员同样感到沮丧,因为他们呈报给上级领导的关于计划完成情况的数据经常与生产实际数据不符。使用ERP系统就可以避免这类事情的发生。因为货币是企业经营的语言。当生产系统和财务系统可以用相同的语言来谈论同一件事情时,他们之间的不协调状况则可以消失了。
4结束语
加入WTO后,中国企业将不得不面对全球化的竞争。市场竞争的空间将扩展到全世界,企业生存环境将更加复杂。如何有效地利用信息平台,实现企业资源最大程度上的合理利用,将成为成败的关键。希望能通过上述观点的论述,帮助中国的企业家建立正确的企业信息化架构思想,并保证顺利实施成功。
参考文献:
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]周玉清,解读ERP[M].天津:天津大学出版社,2008:1-20.徐少春,ERP改变中国[M].北京:机械工业出版社,2007:123-128.金蝶软件<中国>有限公司,ERP系统的集成应用--企业管理信息化的必由之路[M].北京:清华大学出版社,2005:276-309.e时代的ERP软件产品[N].每周电脑报,2001-04-17.e时代的ERP之趋势篇[N].每周电脑报,2001-04-17.王惠芬,黎文,葛里.企业资源计划-ERP[M].北京:经济科学出版社,2007:59-63曾佑新.企业信息化管理[M].北京:科学出版社,2007:132-157.傅湘玲.企业信息化集成管理-理论与案例[M].北京:北京邮电大学出版社,2006:176-189.(上接第6157页)
子是基于最优化思想推导出的边缘检测算子,该算子同样采用高斯函数对图像作平滑处理,因此具有较强的抑制噪声能力,同样该算子也会将一些高频边缘平滑掉,造成边缘丢失。通过对比,发现Canny算子对图片的边缘检测效果比较好。
3结论
MATLAB提供了一个简便的开发环境,提高了开发工作效率。本文介绍了MATLAB的GUI的制作方法,通过这可以了解GUIDE的设计方法及相关图像处理代码的编程,了解GUIDE的功能及使用方法,并为深入研究打下一定的基础。利用Matlab的工具函数和多种算法可以实现对图形图像边缘检测的处理。在对边缘检测中,边缘定位和抑制噪声能力是一对矛盾,有的算法边缘定位能力强,有的抑制噪声能力强。每种算法都有各自的优缺点。一般情况,Canny算子对图片的边缘检测效果比较好。但理论和实际有许多不一致的地方,Canny算子同样采用高斯函数对图像作平滑处理,因此具有较强的抑制噪声能力,同样该算子也会将一些高频边缘平滑掉,造成边缘丢失[2-3]。因此,在实际的边缘检测中,还应采用多种方法,并进行比较,从中选择最好的。关于该图像处理软件还可以根据实际需要,增加其它的图像处理功能。
参考文献:
[1]
[2]
[3]
[4]陈垚光,毛涛涛,王正林,王玲.精通MATLABGUI设计[M].2版.北京:电子工业出版社,2011.徐飞,施晓红.MATLAB应用图象处理[M].西安:西安电子科技大学出版社,2002.姚敏.数字图像处理[M].北京:机械工业出版社,2006.黄爱民,安向京,骆力.数字图象处理与分析基础[M].北京:中国水利水电出版社,2005.
6160软件设计开发本栏目责任编辑:谢媛媛