MATLAB图像处理GUI介绍课件_第1页
MATLAB图像处理GUI介绍课件_第2页
MATLAB图像处理GUI介绍课件_第3页
MATLAB图像处理GUI介绍课件_第4页
MATLAB图像处理GUI介绍课件_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章MATLAB图像处理GUI介绍

10.1图像处理GUI概述

10.2图像处理GUI模块介绍

10.3模块化图像处理GUI编程习题

第10章MATLAB图像处理GUI介绍

10.110.1图像处理GUI概述

在使用GUI工具时,可以直接从命令栏中键入GUI工具名称、被处理的图像(以下称为“目标图像”),作为参数赋给GUI工具。MATLAB提供各种不同功能的GUI模块。在实现处理功能时,GUI工具既可以独立使用也可以联合使用,是一种典型的模块化处理方式。使用GUI工具处理图像可分为以下几个步骤。10.1图像处理GUI概述

在使用GUI工具时,可(1)显示目标图像。一般使用imshow函数显示图像,如himage=imshow('pout.tif'),显示结果如图10.1所示。返回的变量himage是图像pout.tif的图像句柄,图像句柄类似于文件句柄,可用于其它GUI工具作为图像处理的入口参数。(1)显示目标图像。图10.1imshow显示的图像图10.1imshow显示的图像(2)创建与目标图像相关的GUI。在用imshow显示图像后,使用返回的图像句柄建立GUI或在当前默认的图像句柄下,调用GUI工具可使GUI定位于目标图像。例如下面的代码实现了调用像素信息GUIimpixelinfo对图像信息的分析,如图10.2所示,鼠标在图像上移动时,对应位置上的像素值就显示在图像左下方。imshow('pout.tif');impixelinfo(2)创建与目标图像相关的GUI。图10.2impixelinfo处理下的图像界面图10.2impixelinfo处理下的图像界面下面的代码实现了对特定目标图像的处理,方法是将图像句柄赋予GUI工具,其中imdisplayrange(himage)为图像灰度值的范围,处理界面如图10.3所示。himage=imshow('pout.tif');hpixelinfopanel=impixelinfo(himage);hdrangepanel=imdisplayrange(himage);下面的代码实现了对特定目标图像的处理,方法是将图像句柄赋图10.3imdisplayrange处理下的图像界面图10.3imdisplayrange处理下的图像界面由上面的示例还可看出,impixelinfo和imdisplayrange作为两个不同的GUI模块同时处于工作状态,这是GUI模块化处理与一般图像处理函数之间的明显区别。由上面的示例还可看出,impixelinfo和imdis(3)建立GUI和目标图像的互动连接。由上面介绍可看出GUI模块与目标图像的连接是自动建立的,但用户也可以通过回调函数(CallBack)建立各个工作中的GUI模块之间的联系,这将在10.3节GUI编程中加以介绍。(3)建立GUI和目标图像的互动连接。10.2图像处理GUI模块介绍

除了上面介绍的impixelinfo和imdisplayrange模块以外,下面介绍MATLAB中其它一些常用的GUI模块,利用这些模块,用户可以自由组合出具有一定功能的图像处理程序。10.2图像处理GUI模块介绍

除了上面介绍的imp1.图像对比度调节(AdjustContrasttool)使用imcontrast可以调用图像对比度控制对话框,使用对话框中的控件条可以自由地调节图像的显示对比度,其代码如下:imshow('pout.tif')imcontrast或h=imshow('pout.tif')imcontrast(h)运行结果如图10.4所示。1.图像对比度调节(AdjustContrastto图10.4imcontrast模块界面图10.4imcontrast模块界面2.图像剪取(CropImagetool)使用imcrop可以实现图像局部区域的选取,如下列代码所示:imshow('circuit.tif');I=imcrop;figure,imshow(I)运行imcrop后使用鼠标选取图形中的一部分区域,imcrop的返回值为选取区域图像的图像句柄。用鼠标选取图形中的一部分区域,显示结果如图10.5所示。2.图像剪取(CropImagetool)图10.5imcrop对图像进行的局部选取图10.5imcrop对图像进行的局部选取在imcrop中加入坐标值可以实现在特定矩形中的图像选取,代码如下:图10.6

mdistline测量图像距离

I=imread('circuit.tif');

I2=imcrop(I,[7568130112]);imshow(I),figure,imshow(I2)在imcrop中加入坐标值可以实现在特定矩形中的图像选取3.距离测量(Distancetool)使用mdistline可以实现对图像中两点距离的测量,其代码如下:imshow('pout.tif')mdistline测量结果如图10.6所示,距离一般用像素个数表示。3.距离测量(Distancetool)图10.6

mdistline测量图像距离图10.6mdistline测量图像距离4.图像信息显示(ImageInformationtool)使用imageinfo可以显示图像的详细信息,如图像格式、大小、宽度和高度等,其代码如下:h=imshow('peppers.png');info=imfinfo('peppers.png');imageinfo(h,info);其中imfinfo得到的是图像的基本信息,存储在metadata数据结构中。显示界面如图10.7所示。如果调用imageinfo(h),则只显示图像的详细信息(imagedetails)。4.图像信息显示(ImageInformation图10.7imageinfo显示图像信息图10.7imageinfo显示图像信息5.图像缩放比例调整(Magnificationbox)使用immagbox可以在图像显示界面上创建一个比例缩放的编辑框,实现图像大小的调节显示,其代码如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('pears.png');hMagBox=immagbox(hFig,hIm);pos=get(hMagBox,'Position');set(hMagBox,'Position',[00pos(3)pos(4)])显示结果如图10.8所示。5.图像缩放比例调整(Magnificationbo图10.8immagbox缩放显示图像图10.8immagbox缩放显示图像6.图像显示滚动条(ScrollPaneltool)使用imscrollpanel可以得到水平和垂直的滚动条,便于显示较大图像,其代码如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('saturn.png');hSP=imscrollpanel(hFig,hIm);显示界面如图10.9所示。6.图像显示滚动条(ScrollPaneltool图10.9imscrollpanel滚动条图10.9imscrollpanel滚动条7.图像全局观察(Overviewtool)使用imoverview可以在图像显示区域构建一个矩形框,将矩形框内的图像放大到另外一个窗体内,以便观察图像的细节,其代码如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('tape.png');hSP=imscrollpanel(hFig,hIm);imoverview(hIm);如图10.10所示,使用鼠标可以移动矩形框的位置,图10.10左图上的三角符号按钮可以放大或缩小矩形框的大小。

7.图像全局观察(Overviewtool)图10.10

imoverview显示图像的局部区域图10.10imoverview显示图像的局部区域8.局部区域像素值显示(PixelRegiontool)与imoverview相似,使用impixelregionpanel可以显示图像局部区域的像素值,其代码如下:himage=imshow('peppers.png');hfigure=figure;hpanel=impixelregionpanel(hfigure,himage);对于灰度图显示灰度值,对于RGB彩色图显示RGB值,如图10.11所示。8.局部区域像素值显示(PixelRegionto图10.11

impixelregionpanel显示图像像素值图10.11impixelregionpanel显示图像10.3模块化图像处理GUI编程10.3.1位置控制在使用不同的GUI模块时,模块在界面上的位置是默认的,如impixelinfo总是出现在图像的左下角,但用户可能对模块的位置提出不同的要求,这就需要对模块的位置进行编程。为了确定模块的位置,可以使用一个4维向量[leftbottomwidthheight]来定义模块对象的位置,其中left和bottom是指模块距离图像界面figure右边和底边的距离,width和height定义模块的宽度和高度。10.3模块化图像处理GUI编程10.3.1位置控制函数set可以改变模块对象位置属性,使用语法为set(hpixreg,'units','normalized','position',[leftbottomwidthheight])。下面一段代码定义了一个my_pixinfotool函数,使用set函数实现将impixelregionpanel模块镶嵌在目标图像区域之中。functionmy_pixinfotool(im)%建立figure,设置属性hfig=figure('Toolbar','none',...‘Menubar’,‘none’,...函数set可以改变模块对象位置属性,使用语法为set(h'Name','MyPixelInfoTool',...'NumberTitle','off',...'IntegerHandle','off');himage=imshow(im);%加入像素信息impixelinfo模块hpixinfo=impixelinfo(himage);%加入impixelregionpanel模块hpixreg =impixelregionpanel(hfig,himage);%设置impixelinfo的位置set(hpixreg,'units','normalized','position',[00.0810.4])下面调用my_pixinfotool函数,显示结果如图10.12所示。'Name','MyPixelInfoTool图10.12设定impixelregionpanel的位置图10.12设定impixelregionpanel的位10.3.2连接性回调API函数GUI模块和目标图像之间要实现信息交流需要建立相互之间的连接关系,比如当调用imoverview模块时,如图10.10所示,移动局部显示框的滚动条位置可以改变全局显示框中的矩形框的位置,同样点击全局显示框中三角型按钮改变矩形框的大小可以相应地改变局部显示框中的显示范围。10.3.2连接性回调API函数GUI模块通过调用回调(CallBack)函数(一种消息API,ApplicationProgrammerInterface,接口函数)实现模块的连接性关系,如immagbox模块(图10.8所示)支持setMagnificationAPI。当设定编辑框中的放大倍率时,immagbox模块回调setMagnification函数,通知图像显示滚动条改变放大倍率。GUI模块通过调用回调(CallBack)函数(一种消为进一步说明回调函数的应用,我们建立一个双图像显示GUI函数名为my_image_compare,调用多个ScrollPanelAPI函数实现两个图像的同步滚动和同步放大。my_image_compare的代码如下:functionmy_image_compare(left_image,right_image)%建立图像对象hFig=figure('Toolbar','none',...'Menubar','none',...Name','双图像显示',...为进一步说明回调函数的应用,我们建立一个双图像显示GUI'NumberTitle','off',...'IntegerHandle','off');%显示左边图像subplot(121)hImL=imshow(left_image);%显示右边图像subplot(122)hImR=imshow(right_image);%建立左图像滚动条'NumberTitle','off',...hSpL=imscrollpanel(hFig,hImL);set(hSpL,'Units','normalized',...'Position',[0])%建立右图像滚动条hSpR=imscrollpanel(hFig,hImR);set(hSpR,'Units','normalized',...'Position',[0.9])hSpL=imscrollpanel(hFig,hImL%加入缩放比例调整编辑框hMagBox=immagbox(hFig,hImL);pos=get(hMagBox,'Position');set(hMagBox,'Position',[00pos(3)pos(4)])%加入全局-局部显示工具imoverview(hImL)%从左右图像中得到API接口%加入缩放比例调整编辑框apiL=iptgetapi(hSpL);apiR=iptgetapi(hSpR);%同步左右图像的缩放比例apiL.setMagnification(apiR.getMagnification())apiL=iptgetapi(hSpL);%同步左右图像的局部显示区域apiL.setVisibleLocation(apiR.getVisibleLocation())%加入回调函数,当右边图像的放大比率变化时,通知左边图像做相应变化apiL.addNewMagnificationCallback(apiR.setMagnification);%加入回调函数,当左边图像的放大比率变化时,通知右边图像做相应变化apiR.addNewMagnificationCallback(apiL.setMagnification);%同步左右图像的局部显示区域%加入回调函数,当右边图像的显示区域被imoverview改变时,通知左边图像做 %相应变化apiL.addNewLocationCallback(apiR.setVisibleLocation);%加入回调函数,当左边图像的显示区域被imoverview改变时,通知右边图像做相%应变化apiR.addNewLocationCallback(apiL.setVisibleLocation);%加入回调函数,当右边图像的显示区域被imoverview改下面代码调用my_image_compare函数将一幅图像和它的边界图像并排显示在一个figure对象中。如图10.13所示,my_image_compare中的addNewMagnificationCallback和addNewLocationCallback回调函数使得左右图像缩放比率和显示区域保持完全同步的变化。left_image=imread('d:/gugong.jpg');right_image=edge(left_image(:,:,1),'canny');my_image_compare(left_image,right_image);下面代码调用my_image_compare函数将一幅图图10.13my_image_compare显示的图像图10.13my_image_compare显示的图像10.3.3自定义GUI模块除了工具箱提供的现有GUI模块外,用户还可以根据自己的需要自定义GUI模块。为了支持自定义GUI模块,MATLAB提供了一系列工具函数来辅助用户实现各种界面交互功能。这些工具函数可以实现增加或删除回调函数、排列对齐窗口中的图像、检查模块的输入参数、打开和保存图像文件等功能,如表10.1所示。10.3.3自定义GUI模块表10.1自定义GUI工具函数表10.1自定义GUI工具函数另外,为了增强人机交互功能,MATLAB还提供了一些几何图形操作函数,如点、线、矩形、椭圆形和多边形等图形的人机操作函数,如表10.2所示。这些工具使得用户可以对图像区域进行选取和度量,例如以下代码运行多边形impoly函数,使用鼠标选定顶点可以得到如图10.14所示的多边形。另外,为了增强人机交互功能,MATLAB还提供了一些几何表10.2GUI几何交互工具表10.2GUI几何交互工具figure,imshow('pout.tif');h=impolyposition=wait(h);图10.14impoly绘制的多边形figure,imshow('pout.tif');图10下面以一个角度测量为例进一步演示如何自定义GUI模块,取模块名为my_angle_measurement_tool,使用impoly在一张图像上绘制折线,取折线的坐标值来计算角度。functionmy_angle_measurement_tool(im)%建立figure对象figure('Name','MyAngleMeasurementTool',...'NumberTitle','off',...'IntegerHandle','off');下面以一个角度测量为例进一步演示如何自定义GUI模块,取%显示图像imshow(im);%得到图像大小m=size(im,1);n=size(im,2);%得到多边形折线的中点midy=ceil(m/2);midx=ceil(n/2);%显示图像%设置多边形折线的起始点和终止点firstx=midx;firsty=midy-ceil(m/4);lastx=midx+ceil(n/4);lasty=midy;%在图像上绘制折线h=impoly(gca,[firstx,firsty;midx,midy;lastx,lasty],'Closed',false);api=iptgetapi(h);%得到折线的顶点位置%设置多边形折线的起始点和终止点initial_position=api.getPosition()%计算并显示角度updateAngle(initial_position)%设置imploy的回调函数,在折线位置变化时,实时计算角度api.addNewPositionCallback(@updateAngle);%设置imploy的顶点限制范围在图形有效区域内fcn=makeConstrainToRectFcn('impoly',get(gca,'XLim'),get(gca,'YLim'));api.setPositionConstraintFcn(fcn);%initial_position=api.getPosi%角度计算显示回调函数,参数p包含三个点的坐标值functionupdateAngle(p)%从定点建立两个线段的向量%v1=[x1-x2,y1-y2]%v2=[x3-x2,Y3-y2]v1=[p(1,1)-p(2,1),p(1,2)-p(2,2)];v2=[p(3,1)-p(2,1),p(3,2)-p(2,2)];%计算角度%角度计算显示回调函数,参数p包含三个点的坐标值theta=acos(dot(v1,v2)/(norm(v1)*norm(v2)));angle_degrees=(theta*(180/pi));%在图像窗口上显示角度title(sprintf('(%1.0f)degrees',angle_degrees))运行my_angle_measurement_tool模块,用鼠标拖动折线端点,模块将实时显示折线角度,其代码如下:I=imread('gantrycrane.png');my_angle_measurement_tool(I);显示结果如图10.15所示。theta=acos(dot(v1,v2)/(norm(图10.15my_angle_measurement_tool计算角度图10.15my_angle_measurement_t习题

1.上机运行10.2节中的代码,实际体会GUI工具的特点。2.对10.3节中的角度测量程序进行修改,增加一条线段,实现对两个角度的测量。习题

1.上机运行10.2节中的代码,实际体会第10章MATLAB图像处理GUI介绍

10.1图像处理GUI概述

10.2图像处理GUI模块介绍

10.3模块化图像处理GUI编程习题

第10章MATLAB图像处理GUI介绍

10.110.1图像处理GUI概述

在使用GUI工具时,可以直接从命令栏中键入GUI工具名称、被处理的图像(以下称为“目标图像”),作为参数赋给GUI工具。MATLAB提供各种不同功能的GUI模块。在实现处理功能时,GUI工具既可以独立使用也可以联合使用,是一种典型的模块化处理方式。使用GUI工具处理图像可分为以下几个步骤。10.1图像处理GUI概述

在使用GUI工具时,可(1)显示目标图像。一般使用imshow函数显示图像,如himage=imshow('pout.tif'),显示结果如图10.1所示。返回的变量himage是图像pout.tif的图像句柄,图像句柄类似于文件句柄,可用于其它GUI工具作为图像处理的入口参数。(1)显示目标图像。图10.1imshow显示的图像图10.1imshow显示的图像(2)创建与目标图像相关的GUI。在用imshow显示图像后,使用返回的图像句柄建立GUI或在当前默认的图像句柄下,调用GUI工具可使GUI定位于目标图像。例如下面的代码实现了调用像素信息GUIimpixelinfo对图像信息的分析,如图10.2所示,鼠标在图像上移动时,对应位置上的像素值就显示在图像左下方。imshow('pout.tif');impixelinfo(2)创建与目标图像相关的GUI。图10.2impixelinfo处理下的图像界面图10.2impixelinfo处理下的图像界面下面的代码实现了对特定目标图像的处理,方法是将图像句柄赋予GUI工具,其中imdisplayrange(himage)为图像灰度值的范围,处理界面如图10.3所示。himage=imshow('pout.tif');hpixelinfopanel=impixelinfo(himage);hdrangepanel=imdisplayrange(himage);下面的代码实现了对特定目标图像的处理,方法是将图像句柄赋图10.3imdisplayrange处理下的图像界面图10.3imdisplayrange处理下的图像界面由上面的示例还可看出,impixelinfo和imdisplayrange作为两个不同的GUI模块同时处于工作状态,这是GUI模块化处理与一般图像处理函数之间的明显区别。由上面的示例还可看出,impixelinfo和imdis(3)建立GUI和目标图像的互动连接。由上面介绍可看出GUI模块与目标图像的连接是自动建立的,但用户也可以通过回调函数(CallBack)建立各个工作中的GUI模块之间的联系,这将在10.3节GUI编程中加以介绍。(3)建立GUI和目标图像的互动连接。10.2图像处理GUI模块介绍

除了上面介绍的impixelinfo和imdisplayrange模块以外,下面介绍MATLAB中其它一些常用的GUI模块,利用这些模块,用户可以自由组合出具有一定功能的图像处理程序。10.2图像处理GUI模块介绍

除了上面介绍的imp1.图像对比度调节(AdjustContrasttool)使用imcontrast可以调用图像对比度控制对话框,使用对话框中的控件条可以自由地调节图像的显示对比度,其代码如下:imshow('pout.tif')imcontrast或h=imshow('pout.tif')imcontrast(h)运行结果如图10.4所示。1.图像对比度调节(AdjustContrastto图10.4imcontrast模块界面图10.4imcontrast模块界面2.图像剪取(CropImagetool)使用imcrop可以实现图像局部区域的选取,如下列代码所示:imshow('circuit.tif');I=imcrop;figure,imshow(I)运行imcrop后使用鼠标选取图形中的一部分区域,imcrop的返回值为选取区域图像的图像句柄。用鼠标选取图形中的一部分区域,显示结果如图10.5所示。2.图像剪取(CropImagetool)图10.5imcrop对图像进行的局部选取图10.5imcrop对图像进行的局部选取在imcrop中加入坐标值可以实现在特定矩形中的图像选取,代码如下:图10.6

mdistline测量图像距离

I=imread('circuit.tif');

I2=imcrop(I,[7568130112]);imshow(I),figure,imshow(I2)在imcrop中加入坐标值可以实现在特定矩形中的图像选取3.距离测量(Distancetool)使用mdistline可以实现对图像中两点距离的测量,其代码如下:imshow('pout.tif')mdistline测量结果如图10.6所示,距离一般用像素个数表示。3.距离测量(Distancetool)图10.6

mdistline测量图像距离图10.6mdistline测量图像距离4.图像信息显示(ImageInformationtool)使用imageinfo可以显示图像的详细信息,如图像格式、大小、宽度和高度等,其代码如下:h=imshow('peppers.png');info=imfinfo('peppers.png');imageinfo(h,info);其中imfinfo得到的是图像的基本信息,存储在metadata数据结构中。显示界面如图10.7所示。如果调用imageinfo(h),则只显示图像的详细信息(imagedetails)。4.图像信息显示(ImageInformation图10.7imageinfo显示图像信息图10.7imageinfo显示图像信息5.图像缩放比例调整(Magnificationbox)使用immagbox可以在图像显示界面上创建一个比例缩放的编辑框,实现图像大小的调节显示,其代码如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('pears.png');hMagBox=immagbox(hFig,hIm);pos=get(hMagBox,'Position');set(hMagBox,'Position',[00pos(3)pos(4)])显示结果如图10.8所示。5.图像缩放比例调整(Magnificationbo图10.8immagbox缩放显示图像图10.8immagbox缩放显示图像6.图像显示滚动条(ScrollPaneltool)使用imscrollpanel可以得到水平和垂直的滚动条,便于显示较大图像,其代码如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('saturn.png');hSP=imscrollpanel(hFig,hIm);显示界面如图10.9所示。6.图像显示滚动条(ScrollPaneltool图10.9imscrollpanel滚动条图10.9imscrollpanel滚动条7.图像全局观察(Overviewtool)使用imoverview可以在图像显示区域构建一个矩形框,将矩形框内的图像放大到另外一个窗体内,以便观察图像的细节,其代码如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('tape.png');hSP=imscrollpanel(hFig,hIm);imoverview(hIm);如图10.10所示,使用鼠标可以移动矩形框的位置,图10.10左图上的三角符号按钮可以放大或缩小矩形框的大小。

7.图像全局观察(Overviewtool)图10.10

imoverview显示图像的局部区域图10.10imoverview显示图像的局部区域8.局部区域像素值显示(PixelRegiontool)与imoverview相似,使用impixelregionpanel可以显示图像局部区域的像素值,其代码如下:himage=imshow('peppers.png');hfigure=figure;hpanel=impixelregionpanel(hfigure,himage);对于灰度图显示灰度值,对于RGB彩色图显示RGB值,如图10.11所示。8.局部区域像素值显示(PixelRegionto图10.11

impixelregionpanel显示图像像素值图10.11impixelregionpanel显示图像10.3模块化图像处理GUI编程10.3.1位置控制在使用不同的GUI模块时,模块在界面上的位置是默认的,如impixelinfo总是出现在图像的左下角,但用户可能对模块的位置提出不同的要求,这就需要对模块的位置进行编程。为了确定模块的位置,可以使用一个4维向量[leftbottomwidthheight]来定义模块对象的位置,其中left和bottom是指模块距离图像界面figure右边和底边的距离,width和height定义模块的宽度和高度。10.3模块化图像处理GUI编程10.3.1位置控制函数set可以改变模块对象位置属性,使用语法为set(hpixreg,'units','normalized','position',[leftbottomwidthheight])。下面一段代码定义了一个my_pixinfotool函数,使用set函数实现将impixelregionpanel模块镶嵌在目标图像区域之中。functionmy_pixinfotool(im)%建立figure,设置属性hfig=figure('Toolbar','none',...‘Menubar’,‘none’,...函数set可以改变模块对象位置属性,使用语法为set(h'Name','MyPixelInfoTool',...'NumberTitle','off',...'IntegerHandle','off');himage=imshow(im);%加入像素信息impixelinfo模块hpixinfo=impixelinfo(himage);%加入impixelregionpanel模块hpixreg =impixelregionpanel(hfig,himage);%设置impixelinfo的位置set(hpixreg,'units','normalized','position',[00.0810.4])下面调用my_pixinfotool函数,显示结果如图10.12所示。'Name','MyPixelInfoTool图10.12设定impixelregionpanel的位置图10.12设定impixelregionpanel的位10.3.2连接性回调API函数GUI模块和目标图像之间要实现信息交流需要建立相互之间的连接关系,比如当调用imoverview模块时,如图10.10所示,移动局部显示框的滚动条位置可以改变全局显示框中的矩形框的位置,同样点击全局显示框中三角型按钮改变矩形框的大小可以相应地改变局部显示框中的显示范围。10.3.2连接性回调API函数GUI模块通过调用回调(CallBack)函数(一种消息API,ApplicationProgrammerInterface,接口函数)实现模块的连接性关系,如immagbox模块(图10.8所示)支持setMagnificationAPI。当设定编辑框中的放大倍率时,immagbox模块回调setMagnification函数,通知图像显示滚动条改变放大倍率。GUI模块通过调用回调(CallBack)函数(一种消为进一步说明回调函数的应用,我们建立一个双图像显示GUI函数名为my_image_compare,调用多个ScrollPanelAPI函数实现两个图像的同步滚动和同步放大。my_image_compare的代码如下:functionmy_image_compare(left_image,right_image)%建立图像对象hFig=figure('Toolbar','none',...'Menubar','none',...Name','双图像显示',...为进一步说明回调函数的应用,我们建立一个双图像显示GUI'NumberTitle','off',...'IntegerHandle','off');%显示左边图像subplot(121)hImL=imshow(left_image);%显示右边图像subplot(122)hImR=imshow(right_image);%建立左图像滚动条'NumberTitle','off',...hSpL=imscrollpanel(hFig,hImL);set(hSpL,'Units','normalized',...'Position',[0])%建立右图像滚动条hSpR=imscrollpanel(hFig,hImR);set(hSpR,'Units','normalized',...'Position',[0.9])hSpL=imscrollpanel(hFig,hImL%加入缩放比例调整编辑框hMagBox=immagbox(hFig,hImL);pos=get(hMagBox,'Position');set(hMagBox,'Position',[00pos(3)pos(4)])%加入全局-局部显示工具imoverview(hImL)%从左右图像中得到API接口%加入缩放比例调整编辑框apiL=iptgetapi(hSpL);apiR=iptgetapi(hSpR);%同步左右图像的缩放比例apiL.setMagnification(apiR.getMagnification())apiL=iptgetapi(hSpL);%同步左右图像的局部显示区域apiL.setVisibleLocation(apiR.getVisibleLocation())%加入回调函数,当右边图像的放大比率变化时,通知左边图像做相应变化apiL.addNewMagnificationCallback(apiR.setMagnification);%加入回调函数,当左边图像的放大比率变化时,通知右边图像做相应变化apiR.addNewMagnificationCallback(apiL.setMagnification);%同步左右图像的局部显示区域%加入回调函数,当右边图像的显示区域被imoverview改变时,通知左边图像做 %相应变化apiL.addNewLocationCallback(apiR.setVisibleLocation);%加入回调函数,当左边图像的显示区域被imoverview改变时,通知右边图像做相%应变化apiR.addNewLocationCallback(apiL.setVisibleLocation);%加入回调函数,当右边图像的显示区域被imoverview改下面代码调用my_image_compare函数将一幅图像和它的边界图像并排显示在一个figure对象中。如图10.13所示,my_image_compare中的addNewMagnificationCallback和addNewLocationCallback回调函数使得左右图像缩放比率和显示区域保持完全同步的变化。left_image=imread('d:/gugong.jpg');right_image=edge(left_image(:,:,1),'canny');my_image_compare(left_image,right_image);下面代码调用my_image_compare函数将一幅图图10.13my_image_compare显示的图像图10.13my_image_compare显示的图像10.3.3自定义GUI模块除了工具箱提供的现有GUI模块外,用户还可以根据自己的需要自定义GUI模块。为了支持自定义GUI模块,MATLAB提供了一系列工具函数来辅助用户实现各种界面交互功能。这些工具函数可以实现增加或删除回调函数、排列对齐窗口中的图像、检查模块的输入参数、打开和保存图像文件等功能,如表10.1所示。10.3.3自定义GUI模块表10.1自定义GUI工具函数表10.1自定义GUI工具函数另外,为了增强人机交互功能,MATLAB还提供了一些几何图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论