通过MATLABGUI实现图像处理软件的开发
基于MATLAB GUI图像处理系统的设计与实现

基于MATLAB GUI图像处理系统的设计与实现MATLAB是一种功能强大的图像处理工具,其GUI(图形用户界面)设计及实现可以使图像处理更加直观和简单。
本文将介绍基于MATLAB GUI图像处理系统的设计与实现,包括系统的功能设计、界面设计及实现步骤等内容,旨在为使用MATLAB进行图像处理的读者提供一些参考和帮助。
一、系统功能设计1. 图像基本处理功能:包括图像的读取、显示、保存,以及图像的基本操作(如缩放、旋转、翻转等)。
2. 图像增强功能:包括亮度、对比度、色彩平衡调整,以及直方图均衡化、滤波等操作。
3. 图像特征提取功能:包括边缘检测、角点检测、纹理特征提取等。
4. 图像分割功能:包括阈值分割、边缘分割、区域生长等。
5. 图像识别功能:包括基于模板匹配、人工智能算法的图像识别等。
6. 图像测量功能:包括测量图像中物体的大小、长度、面积等。
二、界面设计1. 主界面设计:主要包括图像显示区域、功能按钮、参数调节控件等。
2. 子功能界面设计:根据不同的功能模块设计相应的子界面,以便用户进行更详细的操作。
3. 界面美化:可以通过添加背景图案、调整按钮颜色、字体等方式美化界面,提高用户体验。
三、实现步骤1. 图像显示与基本处理:通过MATLAB自带的imread()函数读取图像,imshow()函数显示图像,并设置相应的按钮实现放大、缩小、旋转、翻转等基本操作。
2. 图像增强:利用imadjust()函数实现对图像亮度、对比度的调整,利用histeq()函数实现直方图均衡化,利用imfilter()函数实现图像的滤波处理。
3. 图像特征提取:利用edge()函数实现图像的边缘检测,利用corner()函数实现角点检测,利用texture()函数实现纹理特征提取。
4. 图像分割:利用im2bw()函数实现阈值分割,利用edge()函数实现边缘分割,利用regiongrowing()函数实现区域生长。
基于MATLAB GUI图像处理系统的设计与实现

基于MATLAB GUI图像处理系统的设计与实现本文将介绍一个基于MATLAB GUI的图像处理系统的设计和实现。
该系统提供了一系列常用的图像处理功能,包括图像滤波、边缘检测、图像变换、形态学处理、颜色空间转换等。
通过该系统,用户可以方便地对图像进行处理和分析。
首先,需要创建一个MATLAB GUI窗口,用于显示图像和进行图像处理。
接着,通过调用MATLAB内置的图像处理函数来实现各种功能。
下面是一些常用功能的实现方法:1.图像读取:使用imread函数来读取图像文件,并在GUI窗口中显示。
2.图像滤波:使用imfilter函数来实现各种滤波器,如高斯滤波、中值滤波等。
3.边缘检测:使用边缘检测算法(如Sobel算子、Canny算法等)来提取图像中的边缘信息。
4.图像变换:使用imresize函数来改变图像的大小,使用imrotate函数来旋转图像等。
5.形态学处理:使用imopen、imclose等形态学处理函数来对图像进行形态学分析和处理。
6.颜色空间转换:使用rgb2gray、rgb2hsv等函数来进行颜色空间的转换。
在实现这些功能时,可以使用MATLAB的图像处理工具箱中的函数,也可以自己编写函数来实现特定的处理功能。
除了提供以上的基本功能,该系统还可以通过添加菜单栏、工具栏等交互元素,以增强用户体验。
例如,添加一个“保存”菜单项,使用户可以将处理后的图像保存到本地,或添加一个“撤销”按钮,使用户可以取消上一次的处理操作等。
总之,通过将MATLAB GUI和图像处理技术相结合,我们可以很方便地开发出一个图像处理系统,并提供常用的功能和交互元素,使用户可以快速地对图像进行处理和分析。
同时,我们也可以根据实际需要,自行扩展和改进该系统,以适应更加复杂的图像处理应用场景。
基于MATLAB_GUI的数字图像处理程序设计

基于MATLAB GUI的数字图像处理程序设计基于数字信号处理原理,在数字滤波器设计理论和Matlab 编程技术及其GUI 图形用户界面设计的基础上,开发了具有交互式特点的数字图像处理GUI 软件,界面操作简单方便。
MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。
它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。
根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。
MATLAB中集成了功能强大的图像处理工具箱。
由于MATLAB语言的语法特征与C语言极为相似,而且更加简单、更加符合科技人员对数学表达式的书写格式,而且可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。
目录一、设计基本原理 (2)(一)、GUIDE 操作界面的使用方法 (2)二、GUI程序总体设计 (3)(一)MATLAB GUI程序要实现的功能: (3)三、具体设计与实现 (4)3.1、文件操作 (4)3.1.1、打开 (4)3.1.2、保存 (4)3.1.3、退出 (4)3.2、编辑 (5)3.2.1、灰度 (5)3.2.2、亮度 (6)3.2.3、截图 (7)3.2.4、缩放 (7)3.3、旋转 (9)3.3.1、上下翻转 (9)3.3.2、左右翻转 (9)3.3.3、任意角度翻转 (9)3.4、加入噪声 (10)3.5、滤波 (11)3.6、直方图统计 (12)3.7、频谱分析 (12)3.7.1、频谱图 (12)3.7.2、通过高通滤波器 (13)3.7.3、通过低通滤波器 (13)3.8、灰度图像处理 (14)3.8.1、二值图像 (14)3.8.2、创建索引图像 (15)3.9、颜色模型转换 (15)3.10、操作界面设计 (16)四、程序调试及结果分析 (16)(一)在程序设计过程中遇到的问题 (16)附录 (18)一、设计基本原理图形用于界面(GUI)是提供人机交互的工具和方法。
基于MATLAB GUI图像处理系统的设计与实现

基于MATLAB GUI图像处理系统的设计与实现摘要:随着计算机技术的不断发展,图像处理技术在各个领域得到了广泛应用,并且在医学影像、安全监控、人脸识别等领域取得了重大突破。
本文将以MATLAB为工具,设计并实现一个基于MATLAB GUI的图像处理系统,介绍了系统的设计思路、实现过程以及功能特点,并通过实例验证了系统的有效性和可行性。
2. 系统设计2.1 系统需求分析系统设计之初,首先需要明确系统的功能需求,包括但不限于图像读取、图像显示、图像处理和结果输出等。
在此基础之上,进一步明确具体的图像处理功能,如灰度化、滤波、边缘检测、形态学处理等。
还要考虑用户界面的友好性和易用性,以及系统的稳定性和实时性。
2.2 系统架构设计基于以上需求分析,我们可以设计出系统的整体架构。
采用面向对象的编程思想,将系统划分为图像处理模块、图像显示模块、用户交互模块和主控制模块等,并通过事件驱动的方式实现它们之间的协同工作。
图像处理模块负责具体的图像处理算法实现,图像显示模块负责显示处理前后的图像效果,用户交互模块负责接收用户输入与指令,主控制模块负责整个系统的流程控制。
2.3 GUI界面设计在系统的设计过程中,GUI界面的设计显得尤为重要。
MATLAB提供了丰富的GUI设计工具,包括按钮、菜单、对话框、滑动条等,可以方便地构建出美观、直观的用户界面。
在设计过程中,需要注意界面的布局合理、控件的分布清晰、操作的简单便捷、信息的反馈明确等,以提升用户体验和系统的易用性。
3. 系统实现3.1 图像处理算法实现在系统设计的基础上,我们可以开始着手实现系统中的各个模块。
首先是图像处理算法的实现,MATLAB提供了大量的图像处理函数和工具包,如imread、imshow、imfilter、edge等,可以快速实现各种图像处理功能。
例如实现灰度化可以使用im2gray函数,实现滤波可以使用imfilter函数,实现边缘检测可以使用edge函数等。
基于MATLAB GUI图像处理系统的设计与实现

基于MATLAB GUI图像处理系统的设计与实现摘要:本文主要介绍了基于MATLAB GUI的图像处理系统的设计与实现过程。
文章介绍了图像处理的基本概念和相关技术,然后详细阐述了MATLAB GUI的设计原理和实现方法。
接着,本文对图像处理系统的功能模块进行了详细的设计与实现,包括图像的读取、显示、处理和保存等功能。
文章对系统进行了实验测试,并对系统的性能和稳定性进行了评估。
通过本文的研究和实践,可为MATLAB GUI图像处理系统的设计与实现提供一定的参考和指导。
一、引言二、图像处理的基本概念和相关技术图像处理是对图像进行获取、处理、分析和识别等一系列操作的过程。
在图像处理中,常用的技术包括图像采集与存储、图像增强、图像复原、图像压缩、图像分割、图像识别等。
这些技术在医学影像、遥感图像、安防监控等领域有着广泛的应用。
三、MATLAB GUI的设计原理和实现方法MATLAB GUI是一种基于MATLAB的图形用户界面设计工具,可以方便地实现交互式的图形界面。
MATLAB提供了丰富的GUI设计函数和工具,包括控件的设计与布局、事件处理、界面调整等功能。
通过这些工具,可以方便地设计和实现各种类型的图像处理系统。
在设计MATLAB GUI时,主要包括以下几个步骤:1. 设计GUI界面:包括控件的选择和布局、界面的美化和调整等操作。
2. 编写回调函数:对于每个控件的事件,需要编写相应的回调函数,定义其处理逻辑和功能。
3. 运行GUI程序:将设计好的GUI程序运行在MATLAB平台上,测试其性能和稳定性。
通过以上步骤,可以方便地设计和实现一个交互式的图像处理系统。
四、图像处理系统的设计与实现基于MATLAB GUI,设计并实现了一个简单的图像处理系统,主要包括图像的读取、显示、处理和保存等功能。
具体的设计过程如下:2. 编写回调函数:对于每个控件的事件,需要编写相应的回调函数,定义其处理逻辑和功能。
对于文件读取按钮,编写了一个回调函数来实现图像的读取和显示功能;对于图像处理功能按钮,编写了不同的回调函数来实现图像的处理和保存功能。
matlabGUI图像处理

matlabGUI图像处理图像处理一、实习任务利用MATLAB里面的一些特定函数和GUI可视化图形界面设计一个属于自己的photoshop,使其完成简易的放大、缩小、截图以及直方图统计等功能。
二、实习内容1、布局设计2、程序设计%文件打开[name,path]=uigetfile({'*.*';'*.bmp';'*.tif';'*.png';'*.gif';'*.jpg'},'载入图像');if isequal(name,0)|isequal(path,0)errordlg('没有选中文件','出错');return;elsex=imread([path,name]);axes(handles.axes1);imshow(x);handles.img=x;handles.noise_img=x;guidata(hObject,handles) end%文件保存[filename,pathname] =uiputfile({'*.*';'*.bmp';'*.tif';'*.png';'*.gif';'*.jpg'},'图片保存为');if isequal([filename,pathname],[0,0])errordlg('没有保存','出错');return;elsefile=strcat(pathname,filename); (handles.axes2);i=getimage(gca);imwrite(i,file);end%文件退出clc;close all;close(gcf);%灰度处理axes(handles.axes2); if isrgb(handles.img) y=rgb2gray(handles.img); %RGB••••••••••imshow(y);elsemsgbox('这已经是灰度图像','转换失败'); end%截图set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2); y=imcrop(handles.img); imshow(y);handles.Timage=y;%双线性缩小axes(handles.axes2);prompt={'输入放大倍数:'};defans={'0.2'};p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});y=imresize(handles.img,p1,'bilinear'); %最近邻插值法缩小imshow(y);%双线放大axes(handles.axes2);prompt={'输入放大倍数:'};defans={'2'};p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});y=imresize(handles.img,p1,'bilinear'); %最近邻插值法放大imshow(y);%上下翻转axes(handles.axes2); x=(handles.img); if isrgb(handles.img) for k=1:3y(:,:,k)=flipud(x(:,:,k));%上下翻转函数 endimshow(y);elsex=(handles.img);y=flipud(x);imshow(y);end%左右翻转axes(handles.axes2); if isrgb(handles.img) x=(handles.img); for k=1:3y(:,:,k)=fliplr(x(:,:,k));%左右翻转函数 endimshow(y);elsex=(handles.img);y=fliplr(x);imshow(y);end%左转90度axes(handles.axes2); x=(handles.img);y=imrotate(x,90); imshow(y);%右转90度axes(handles.axes2); x=(handles.img);y=imrotate(x,-90);imshow(y);%任意角度旋转axes(handles.axes2); prompt={'输入参数1:'};defans={'30'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});y=imrotate(handles.img,p1);imshow(y);%亮度处理prompt={'输入参数1','输入参数2','输入gamma'};defans={'[0 0.7]','[0 1]','1'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});p2=str2num(p{2});p3=str2num(p{3});gamma=p3;x=(handles.img);y=imadjust(x,p1,p2,gamma);axes(handles.axes2);imshow(y);%G直方图set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);if isrgb(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); elsemsgbox('这是灰度图像','旋转失败');end%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);%B直方图set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2);if isrgb(handles.img)x=imhist(handles.img(:,:,3)); %直方图统计x1=x(1:10:256);horz=1:10:256;bar(horz,x1);%axis([0 255 0 150000]);set(handles.axes2,'xtick',0:50:255);%set(handles.axes2,'ytick',0:2000:15000);elsemsgbox('这是灰度图像','旋转失败');end%直方图均衡set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2);if isrgb(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);elseh=histeq(handles.img); %直方图均衡imshow(h);end3、效果图三、遇到的问题及解决方法1、遇到的问题最开始在Command里面用imread打开图片是可行的,但到了GUI里面之后,会出现一些错误,主要就是提示说:找不到对应的地方。
matlab应用GUI的图像处理编程

图像 增 强就是 采用 一系 列技 术去 增强 图 表 1 : S o b e l 算子中各个点的像素点的关系图 ( i - 1 j - 1 ) ( - 1 )
.
+
1 . 3 6 U I 开 发 的 流程
扩 大亮度 间 隔 ~属 于拉伸 ,在亮 度值较 低 的
部分缩小亮度间隔 ~属于压缩 , 数学表达式
从而 实现图像处理 软件功能,主 要回调函数代
= l
叩
k
D
+
开发一 个 G UI 程序 的过 程主要 有两 个重
码和n l o g C a l l b a c k ( h Ob j e c t ,e v e n t d a t a , 具有独特性质 的区域并提 出感兴趣 目标 的技术 h a n d l e s ) f un c t i o n my gu i Op e n i n g F c n ( h 0b j e c t , 和过程 。它是 由图像处理到 图像分析的关键步 f u nct i on hi s t e ql Ca l l b a c k ( h Ob j e c t , e v e n t d a t a , h a n d l e s , v a r a r g i n ) 骤。现有的图像分割方法主要分 以下几类 :基 e v e n t d a t a , h a n d l e s ) 所 有 的启 动参 数 都是 通 过 v a r a r g i n传 于阈值 的分割方法 、基于 区域 的分割方法 、基 f unct i o n hi s t e q2 Ca l l b a c k ( h Ob j e c t , 到它 的 O p e n i n g F c n里 面 的 。 启 动 参 数 可 以 于边缘 的分割方法 以及基于特定理论 的分割方 e v e n t d a t a , h n a d l e s ) 包 括 :1 、f i g u r e , 也 就 是 窗 口 参 数 , 例 如 法等 。本文主要通过基于边缘 的方法 ,在算法 f unc t i o n a ve r a ge Ca l l b a c k ( h Ob j e c t , p o s i t i o n之 类 。 打 开 G UI时, 使 用 这 个 命 里主要 实现 了包括 s o b e l 算子 内的多种 分割算 e v e r l t d a t a , h a n d l e s ) 令 my g u i ( ’ P o s i t i o n ’ , [ 4 3 4 2 3 4 2 3 4 3 4 】 ) 则 表 示 法。 S o b e l 算子梯度幅值计算如表 l 所示 。( i j ) f unc t i o n a vg t hr e e Ca l l b a c k ( h Ob j e c t , 打 开 窗 口在 这 个 位 置; 还 有 哪 些 可 控 属 性 为当前 的位置点,梯度幅值计算公式如下: e v e n t d a t a , h a n d l e s ) 可以查 h e 2 、 自定 义 参 数 如 果 传 入 的 f unct i o n a vgf i ve Ca 1 l b a c k ( h 0b j e c t , 参数不是 f i g u r e的 属 性 ( ma t l a b查 找 不 到 输
基于MATLAB GUI图像处理系统的设计与实现

基于MATLAB GUI图像处理系统的设计与实现MATLAB是一种常用的数学计算软件,可以进行科学计算、工程分析、数据分析、数据可视化等工作,而GUI(图形用户界面)则是一种以图形的形式呈现程序中的控件和信息的工具,能够方便用户进行操作和交互。
本文主要介绍基于MATLAB GUI图像处理系统的设计与实现。
1. GUI界面设计GUI界面设计要考虑美观与实用性,并根据图像处理的需要来设计控件和布局。
在本系统中,主要包括以下控件:1.1 菜单栏和工具栏菜单栏和工具栏是常用的程序界面设计元素,可以方便地打开和保存文件,进行图像处理操作。
菜单栏中包含“文件”、“编辑”、“操作”等选项,工具栏中包含“打开”、“保存”、“旋转”、“放大”、“缩小”等常用图像处理工具。
1.2 显示面板显示面板用于显示处理后的图像或原始图像。
在本系统中,显示面板包括原始图像、处理后图像和处理结果图像,用户可以对图像进行比较、观察和分析。
控制面板包含图像处理的参数和参数调节控件。
在本系统中,包括图像旋转角度、图像缩放比例、图像亮度调节、图像对比度调节、图像阈值等参数。
用户可以根据图像的实际情况和需求进行参数调节,以达到最优的处理效果。
2. 图像处理算法实现图像处理算法是图像处理系统的核心部分,对图像的处理效果和速度有着重要的影响。
在本系统中,主要包括以下算法:2.1 图像旋转图像旋转是通过旋转矩阵来实现的,MATLAB中提供了角度旋转和仿射变换两种方法。
在本系统中,旋转角度由用户自行调节。
对于超出图像界限的部分,可以通过图像插值方法进行处理,常用的方法有双线性插值、最邻近插值、双三次插值等。
2.3 图像亮度调节图像亮度调节是通过调整每个像素点的RGB值来实现的,可以通过分别调节红、绿、蓝三种颜色通道来调整整个图像的颜色。
在本系统中,提供了滑动条和控制按钮来实现对图像亮度的调节。
图像对比度调节是通过调整每个像素点的离均差来实现的。
具体地,对于每一个像素点i,其新的RGB值为(C[i]-m)*(127/f)+128,其中C是原始像素值,m是像素均值,f是最大离均差值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Computer Knowledge and Technology 电脑知识与技术本栏目责任编辑:谢媛媛软件设计开发第7卷第25期(2011年9月)通过MATLAB GUI 实现图像处理软件的开发张敏1,洪汉玉2(1.武汉工程大学电气信息学院,湖北武汉430205;2.武汉工程大学机电工程学院,湖北武汉430205)摘要:数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。
图像处理的信息量很大,对处理速度的要求也比较高。
Matlab 具有强大的运算和图形展示功能,使图像处理变得更加的简单和直观。
该文主要介绍了基于MATLAB 的图形用户界面(Graphical User Interfaces,GUI )来制作图像处理软件的基本过程,该文首先简单介绍下MATLAB 的GUI 与GUIDE ;其次,介绍了GUIDE 的模板及其基本操作方法;最后,介绍了通过MATLAB GUI 实现图像处理软件的开发方法。
该文开发的图像处理软件可以实现的基本功能有:常用的边缘检测以及彩色图片的灰度化。
关键词:图形用户界面;图形用户界面开发环境;灰度图片;图像处理;边缘检测中图分类号:TP317.4文献标识码:A 文章编号:1009-3044(2011)25-6156-02The Realization of Image Processing Software Development by MATLAB GUIZHANG Min 1,HONG Han-yu 2(1.School of Electrical and Information Engineering,Wuhan Institute of Techonlogy,Wuhan 430205,China;2.School of Mechanical and Electrical Engineering,Wuhan Institute of Techonlogy,Wuhan 430205,China)Abstract:Digital image processing is a technology that using computer to process images through a certain algorithm.There is a large amount of information to process in image processing,the requirements of the speed of processing is even higher.Matlab has powerful func -tions of computing and graphics display,which makes image processing become more simple and visual.This paper mainly introduces the MATLAB based graphical user interface (Graphical User Interfaces,GUI)to make the image processing software the basic process.This pa -per first briefly under the MATLAB GUI and GUIDE;secondly,introduced the GUIDE template and the basic method of operation;fi -nally,introduced by MATLAB GUI realize image processing software development method.In this paper the development of image pro -cessing software can achieve the basic functions are:the commonly used edge detection and color images of gray.Key words:GUI;GUI development environment;gray Image;image processing;edge detection数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。
数字图像处理技术已经在各个领域上都有了比较广泛的应用。
图像处理的信息量很大,对处理速度的要求也比较高。
Matlab 强大的运算和图形展示功能,使图像处理变得更加的简单和直观。
本文基于MATLAB 的数字图像处理环境,通过MATLAB GUI 实现图像处理软件的开发设计,实现了一个图像处理系统,通过利用Matlab 的工具函数和多种算法实现对图形图像边缘检测的处理。
对图像分析和理解而言,基本的就是图像分割和区域描述,图像分割部分是图像识别的基础。
1GUIDE 的操作界面使用方法及GUI 的设计介绍图形用于界面(GUI )是提供人机交互的工具和方法。
GUI 是包含图形对象(如窗口、图标、菜单和文本)的用户界面。
MATLAB 的GUI 为开发者提供了一个不脱离MATLAB 的开发环境,有助于MATLAB 程序的GUI 集成。
在MATLAB 中的GUIDE 就是图形用户界面开发环境(Graphical User Interface Development Environment ),它向用户提供了一系列的创建用户图形界面的工具。
这些工具大大简化了GUI 设计和生成的过程。
下面对GUIDE 的操作界面及使用方法做一简单介绍。
在命令窗口中直接键入guide ,启动GUIDE ,利用GUIDE 模板创建GUI ,或者打开已经存在的GUI ,GUIDE 把GUI 设计的内容保存在两个文件中,它们在第一次保存或运行时生成。
一个是FIG 文件,扩展名为.Fig ,它包含对GUI 和GUI 组件的完整描述;另外一个是M 文件,扩展名为.M ,它包含控制GUI 的代码和组件的回调事件代码。
这两个文件与GUI 显示和编程任务相对应。
在版面设计器中创建GUI 时,内容保存在FIG 文件中;对GUI 编程时,内容保存在M 文件中。
用GUIDE 版面设计器,根据设计需要:首先拖拽两个图形窗口(Axes ),一个作为待处理图片区域,另一个作为已处理图片区域;其次,拖拽五个电子按钮(Radio Button ),作为边缘检测操作按钮;第三,拖拽五个按钮(Push Button ),作为输入等的按钮;最收稿日期:2011-07-26基金项目:国家自然科学基金资助(61175013;50975211)作者简介:张敏(1964-),男,湖北武汉人,副教授,工程硕士,研究方向为过程控制及系统仿真。
图1图像处理软件的GUIDE 版面E-mail:xsjl@ Tel:+86-551-56909635690964ISSN 1009-3044Computer Knowledge and Technology 电脑知识与技术Vol.7,No.25,September 2011.6156Computer Knowledge and Technology 电脑知识与技术软件设计开发本栏目责任编辑:谢媛媛第7卷第25期(2011年9月)后,将上面的所有按钮及图形窗口合理的布局,达到美观工整的效果,然后运行一下GUI ,系统会自动生成GUI 文件[1]。
上面已经规划好了按钮的位置,如果想在点击选取图片按钮时,软件给予响应,需要给按钮输入一定的程序代码。
下面以输入按钮的GUI 设计为例介绍一下GUI Callback 的设计方法,其它的与之类似,就不介绍了。
设置代码的方法如下:右键单击选取图片按钮,选择View Callbacks/Callback ,系统会自动带设计者进入此按钮的代码输入区域,在下面的空白处输入如下代码[1]:global im %定义一个全局变量im[filename,pathname]=...uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'select picture');%选择图片路径str=[pathname filename];%合成路径+文件名im=imread(str);%读取图片axes(handles.axes1);%使用第一个axesimshow(im);%显示图片运行GUI ,将生成图像处理的软件平台,本文设计的GUI 如图1所示,该图像处理软件可以实现的功能有:五种常用的边缘检测,图像输入,图像转换(彩色图片灰度化)等。
2基于MATLAB GUI 的图像处理软件边缘检测过程在图像处理技术中,往往要求对图像描述并对图像进行分析和理解。
图像分析和理解,在实际应用时,非常重要。
如,对大规模集成电路的自动检测、对医学癌细胞的识别里、在机器人的视觉领域方面等,都是十分重要的。
对图像分析和理解而言,基本的就是图像分割和区域描述。
本文主要是研究图像分割部分,因为它是图像识别的基础,如图2所示。
图像分割就是将图像中有意义的对象与背景分离,并把这些对象按照不同的含义分割出来,即将图像中具有不同含义的对象提取出来。
图像分割可以分为两种:一是基于边界的分割技术;另一是基于区域的分割技术。
这里主要涉及的是第一种即边缘检测。
边缘检测是一种重要的区域处理方法,边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。
如果一个像素落在边界上,那么它的邻域将成为一个灰度级变化的带。
对这种变化最有用的两个特征是灰度的变化率和方向。
边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定。
图3中显示了图像边缘所对应的一阶、二阶导数曲线,从中可以看到,图像边缘对应一阶导数的极大值点、图像边缘对应二阶导数的过零点。
所以,利用求导的方法可以较方便地检测到灰度值的不连续效果[2-3]。
边缘的检测可以用微分算子利用卷积来实现。
常用的微分算子有梯度算子和拉普拉斯算子等,这些算子可以检测图像的二维边缘,而且可以检测图像的三维边缘。
MATLAB 工具箱提供的常用的梯度算子有基于一阶导数的边缘的检测算子,如:Sobel 算子、Prewitt 算子、Roberts 算子;有基于二阶导数的边缘的检测算子即拉普拉斯(Laplacian )算子,如:Log 算子;另外,Canny 算子是基于最优化思想推导出的边缘检测算子[3]。