基于matlab数字图像处理GUI设计.docx
《基于matlab数字图像处理GUI设计.docx》由会员分享,可在线阅读,更多相关《基于matlab数字图像处理GUI设计.docx(12页珍藏版)》请在冰豆网上搜索。
![基于matlab数字图像处理GUI设计.docx](https://file1.bdocx.com/fileroot1/2023-1/26/b71357df-dac5-4d46-85e0-c407d9005fc0/b71357df-dac5-4d46-85e0-c407d9005fc01.gif)
基于matlab数字图像处理GUI设计
摘要
数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。
数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。
数字图像处理技术已经在各个领域上都有了比较广泛的应用。
图像处理的信息量很大,对处理速度的要求也比较高。
MATLAB强大的运算和图形展示功能,使图像处理变得更加的简单和直观。
本文介绍了MATLAB语言的特点,基于MATLAB的数字图像处理环境,介绍了如何利用MATLAB及其图像处理工具箱进行数字图像处理,并通过一些例子来说明利用MATLAB图像处理工具箱进行图像处理的方法。
主要论述了利用MATLAB的GUI实现图像二值化分析等图像处理。
关键词:
MATLAB,数字图像处理,GUI,二值图像
Abstract
Digitalimageprocessingisanemergingtechnology,withthedevelopmentofcomputerhardware,real-timedigitalimageprocessinghasbecomepossibleduetodigitalimageprocessingalgorithmstoappear,makingitfasterandfasterprocessingspeed,betterforPeopleservices.Digitalimageprocessingisusedbysomealgorithmscomputergraphicsimageprocessingtechnology.Digitalimageprocessingtechnologyhasbeeninvariousareashavearelativelywiderangeofapplications.Imageprocessinglargeamountofinformationontheprocessingspeedrequirementisrelativelyhigh.MATLABpowerfulcomputingandgraphicsdisplaycapabilities,sothatimageprocessingbecomesmoresimpleandintuitive.ThispaperintroducescharacteristicsofMATLABlanguageandthisMATLAB-baseddigitalimageprocessingenvironment,describeshowtousetheMATLABImageProcessingToolboxforitsdigitalimageprocessing,andthroughsomeexamplestoillustratetheuseofMATLABImageProcessingToolboxforimageprocessingmethod.MainlydiscussestheuseofMATLABforimageenhancement,2-numericimageandotherimageprocessingtechnologies.
Keywords:
MATLAB,digitalimageprocessing,GUI,imageenhancement,2-numericimage
一、数字图像处理概述
1.1数字图像处理的意义
数字图像处理(DigitalImageProcessing),就是利用数字计算机或者其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。
例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。
总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。
由于计算机处理能力的不断增强,数字图像处理学科在飞速发展的同时,也越来越广泛地向许多其他学科快速交叉渗透,使得图像作为信息获取以及信息的利用等方面也变得越来越重要。
目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。
MathWorks公司推出的MATLAB软件是学习数理知识的好帮手。
应用MATLAB友好的界面和丰富、实用、高效的指令及模块,可以使人较快地认识、理解图像处理的相关概念,逐步掌握图像信号处理的基本方法,进而能够解决相关的工程和科研中的问题。
图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。
随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大,已在国家安全、经济发展、日常生活中充当越来越重要的角色,对国计民生的作用不可低估。
1.2数字图像处理技术的发展
数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。
数字图像处理作为一门学科大约形成于20世纪60年代初期。
早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。
图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。
首次获得实际成功应用的是美国喷气推进实验室(JPL)。
他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。
随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。
在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。
数字图像处理取得的另一个巨大成就是在医学上获得的成果。
1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(ComputerTomograph)。
CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。
1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。
1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。
与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。
随着图像处理技术的深入发展,从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。
人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。
很多国家,特别是发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。
其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。
图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索新的领域。
二、matlab图像处理简介
2.1matlab简介
MATLAB的名称源自MatrixLaboratory,由美国MathWorks公司推出。
20世纪九十年代的时候,matlab已经成了国际控制界公认的标准计算软件。
2001年推出了matlab6.0版本,其中有simulink工具包。
开发了与外部进行直接数据交换的组件。
同时也推出了符号计算工具包。
它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,构成了一个方便的、界面友好的用户环境,并提供了大量的内置函数。
从而被广泛地应用于科学计算、算法开发—预设计和验证、数据采集、建模仿真与原型设计、数据分析研究与可视化、科学与工程绘图、应用开发环境、控制系统、信息处理、神经网络、图像处理、小波分析等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。
MATLAB中的数字图像是以矩阵形式表示的,这意味着ATLAB强大的矩阵运算能力用于图像处理非常有利,矩阵运算的语法对MATLAB中的数字图像同样适用。
本文对MATLAB图像处理工具箱进行探索及应用,实验证明该软件功能强大,语言简洁易学,人机界面友好,工具箱具有丰富的技术支持并集成了该领域家的智慧,应用简单而效果良好。
2.2matlab图形界面GUI简介
用户界面是指:
实现人与机器(或程序)之间交互作用的工具和方法。
如键盘、
鼠标等都可成为与计算机交换信息的接口。
图形用户界面GUI(全称GraphicalUserInterfaces)则是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,用户图形界面(GUI)是程序的图形化界面。
GUI可以使用户定制用与MATLAB的交互方式。
把图形界面加到MATLAB的函数和M文件中。
GUI可以在MATLAB中生成非常有效的工具和应用程序,或是建立演示工作的交互式界面。
创建MATLAB用户图形界面必须有三个基本元素:
(1)组件:
在matlabGUI中的每一个项目如按钮、标签、编辑框等都是一个
图形化组件。
组件又可分为三类:
图形化控件(按钮,编辑框,列表,滚动条等)、静态元素(窗口和文本字符串)、菜单和坐标系。
图形化控件和静态元素由函数uicontrol创建,菜单由函数uimenu和uicontextmenu创建,坐标系经常用于显示图形化数据,由函数axes创建。
(2)图象窗口(Figure):
GUI的每一个组件都必须安排在图象窗口中,可以用
函figure来创建空图象窗口,空图象窗口经常用于放置各种类型的组件。
(3)回应:
当用户用鼠标单击或用键盘键入一些信息,那么程序就要有相应的执行动作。
鼠标单击或键入信息是一个事件,如果matlab程序运行相应的函数,那么matlab函数肯定会有所反应。
例如,如果用户单击一按钮,这个事件必然引起相应的matlab语句执行。
这些相应的语句被称为回应,在执行GUI的单个图形组件时,必须有一个回应。
三、数字图像处理软件设计
本软件包的主要功能是通过matlab的GUI界面编制一个简易的图形界面以读取bmp格式的原始图像数据,并对它们进行分析和处理,得到所需要的效果,并把处理后的相关信息用图像显示出来。
本软件的主要功能有:
bmp图像文件的打开和保存,图像灰度处理和腐蚀、直方图的分析等等。
3.1软件总体设计
3.1.1整体界面设计
3.1.2菜单栏设计
3.2图像的读入与显示
[name,path]=uigetfile({'*.bmp'},'载入图像');
ifisequal(name,0)|isequal(path,0)
errordlg('没有选中文件','出错');
return;
else
x=imread([path,name]);
axes(handles.axes1);
imshow(x);
handles.img=x;
handles.noise_img=x;
3.3图像的保存
%文件保存
[]=uiputfile('*.bmp','图片保存为');
ifisequal([],[0,0])
errordlg('没有保存','出错');
return;
else
(pathname,);
(handles.axes2);
i=getimage(gca);
imwrite(i,file);
end
3.4图像的灰度处理
%灰度处理
axes(handles.axes2);
ifisrgb(handles.img)
y=rgb2gray(handles.img);%RGB
imshow(y);
else
msgbox('这已经是灰度图像','转换失败');
3.5图像的二值化
%二值图像
axes(handles.axes2);
x=(handles.img);
ifisrgb(x)
msgbox('这是彩色图像,不能转换为二值图像','转换失败');
else
j=im2bw(x);
imshow(j);
end
3.6图像R直方图
%R直方图
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
x=imhist(handles.img(:
:
1));%直方图统计
x1=x(1:
10:
256);
horz=1:
10:
256;
bar(horz,x1);
set(handles.axes2,'xtick',0:
50:
255);
3.7图像G直方图
%G直方图
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
ifisrgb(handles.img)
x=imhist(handles.img(:
:
2));%直方图统计
x1=x(1:
10:
256);
horz=1:
10:
256;
bar(horz,x1);
set(handles.axes2,'xtick',0:
50:
255);
else
msgbox('这是灰度图像','旋转失败');
end
3.8图像B直方图
%B直方图
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
ifisrgb(handles.img)
x=imhist(handles.img(:
:
3));
x1=x(1:
10:
256);
horz=1:
10:
256;
bar(horz,x1);
%axis([02550150000]);
set(handles.axes2,'xtick',0:
50:
255);
%set(handles.axes2,'ytick',0:
2000:
15000);
else
msgbox('这是灰度图像','旋转失败');
end
3.9直方图均衡
%直方图均衡
set(handles.axes2,'HandleVisibility','ON');
axes(handles.axes2);
ifisrgb(handles.img)
a=histeq(handles.img(:
:
1));
b=histeq(handles.img(:
:
2));
c=histeq(handles.img(:
:
3));
k(:
:
1)=a;
k(:
:
2)=b;
k(:
:
3)=c;
imshow(k);
else
h=histeq(handles.img);
imshow(h);
end
3.10图像的腐蚀
%图像腐蚀
axes(handles.axes2);
x=(handles.img);
ifisrgb(x)
msgbox('这是彩色图像,不能进行图像腐蚀','失败');
else
j=im2bw(x);
se=eye(5);
bw=bwmorph(j,'erode');
imshow(bw);
end
四、exe文件的生成
最后本课题将创建好的GUI生成了可以执行的EXE文件。
在matlab的command窗口中输入mcc-Bsgluntitled.m,等待一到两分钟。
这时,如果没有安装其他编译器,系统会提示是否选择MATLAB自带的LCC作为编译器。
然后在放文件的地方就会出现几个文件,其中一个为EXE格式的,这样就实现了应用程序的创建。
参考文献
【1】.朱富丽河南商业高等专科学校现代教育与实验中心2010
【2】.高娜,陶慧Matlab在数字图像处理中的应用河南理工大学2005
【3】.袁怡圃.刘怀如基于MATLAB的数字图像处理教学软件包的设计2009
【4】.崔文浅析MATLAB在数字图像处理中的应用洛阳大学2006
【5】.张国琴,吴周桥MATLAB在数字图像处理教学中的应用武汉科技学2005
【6】.郑继刚MATLAB在数字图像处理中的应用保山学院2009
【7】.梁原基于MATLAB的数字图像处理系统研究长春理工大学2008
【8】.缪绍纲.数字图像处理:
活用西南交通大学出版社,2001