MATLAB图像处理GUI介绍课件

上传人:2127513****773577... 文档编号:240897076 上传时间:2024-05-16 格式:PPT 页数:56 大小:1.92MB
返回 下载 相关 举报
MATLAB图像处理GUI介绍课件_第1页
第1页 / 共56页
MATLAB图像处理GUI介绍课件_第2页
第2页 / 共56页
MATLAB图像处理GUI介绍课件_第3页
第3页 / 共56页
点击查看更多>>
资源描述
第10章 MATLAB图像处理GUI介绍第第10章章 MATLAB图像处理图像处理GUI介绍介绍10.1 图像处理GUI概述10.2 图像处理GUI模块介绍10.3 模块化图像处理GUI编程习题第10章 MATLAB图像处理GUI介绍10.1 第10章 MATLAB图像处理GUI介绍10.1 图像处理图像处理GUI概述概述在使用GUI工具时,可以直接从命令栏中键入GUI工具名称、被处理的图像(以下称为“目标图像”),作为参数赋给GUI工具。MATLAB提供各种不同功能的GUI模块。在实现处理功能时,GUI工具既可以独立使用也可以联合使用,是一种典型的模块化处理方式。使用GUI工具处理图像可分为以下几个步骤。10.1 图像处理GUI概述在使用GUI工具时,可第10章 MATLAB图像处理GUI介绍(1)显示目标图像。一般使用imshow函数显示图像,如himage=imshow(pout.tif),显示结果如图10.1所示。返回的变量himage是图像pout.tif的图像句柄,图像句柄类似于文件句柄,可用于其它GUI工具作为图像处理的入口参数。(1)显示目标图像。第10章 MATLAB图像处理GUI介绍图10.1 imshow显示的图像图10.1 imshow显示的图像第10章 MATLAB图像处理GUI介绍(2)创建与目标图像相关的GUI。在用imshow显示图像后,使用返回的图像句柄建立GUI或在当前默认的图像句柄下,调用GUI工具可使GUI定位于目标图像。例如下面的代码实现了调用像素信息GUI impixelinfo对图像信息的分析,如图10.2所示,鼠标在图像上移动时,对应位置上的像素值就显示在图像左下方。imshow(pout.tif);impixelinfo(2)创建与目标图像相关的GUI。第10章 MATLAB图像处理GUI介绍图10.2 impixelinfo处理下的图像界面图10.2 impixelinfo处理下的图像界面第10章 MATLAB图像处理GUI介绍下面的代码实现了对特定目标图像的处理,方法是将图像句柄赋予GUI工具,其中imdisplayrange(himage)为图像灰度值的范围,处理界面如图10.3所示。himage=imshow(pout.tif);hpixelinfopanel=impixelinfo(himage);hdrangepanel=imdisplayrange(himage);下面的代码实现了对特定目标图像的处理,方法是将图像句柄赋第10章 MATLAB图像处理GUI介绍图10.3 imdisplayrange处理下的图像界面图10.3 imdisplayrange处理下的图像界面第10章 MATLAB图像处理GUI介绍由上面的示例还可看出,impixelinfo和imdisplayrange作为两个不同的GUI模块同时处于工作状态,这是GUI模块化处理与一般图像处理函数之间的明显区别。由上面的示例还可看出,impixelinfo和imdis第10章 MATLAB图像处理GUI介绍(3)建立GUI和目标图像的互动连接。由上面介绍可看出GUI模块与目标图像的连接是自动建立的,但用户也可以通过回调函数(CallBack)建立各个工作中的GUI模块之间的联系,这将在10.3节GUI编程中加以介绍。(3)建立GUI和目标图像的互动连接。第10章 MATLAB图像处理GUI介绍10.2 图像处理图像处理GUI模块介绍模块介绍除了上面介绍的impixelinfo和 imdisplayrange模块以外,下面介绍MATLAB中其它一些常用的GUI模块,利用这些模块,用户可以自由组合出具有一定功能的图像处理程序。10.2 图像处理GUI模块介绍除了上面介绍的imp第10章 MATLAB图像处理GUI介绍1图像对比度调节图像对比度调节(Adjust Contrast tool)使用imcontrast可以调用图像对比度控制对话框,使用对话框中的控件条可以自由地调节图像的显示对比度,其代码如下:imshow(pout.tif)imcontrast或h=imshow(pout.tif)imcontrast(h)运行结果如图10.4所示。1图像对比度调节(Adjust Contrast to第10章 MATLAB图像处理GUI介绍图10.4 imcontrast模块界面图10.4 imcontrast模块界面第10章 MATLAB图像处理GUI介绍2图像剪取图像剪取(Crop Image tool)使用imcrop可以实现图像局部区域的选取,如下列代码所示:imshow(circuit.tif);I=imcrop;figure,imshow(I)运行imcrop后使用鼠标选取图形中的一部分区域,imcrop的返回值为选取区域图像的图像句柄。用鼠标选取图形中的一部分区域,显示结果如图10.5所示。2图像剪取(Crop Image tool)第10章 MATLAB图像处理GUI介绍图10.5 imcrop对图像进行的局部选取图10.5 imcrop对图像进行的局部选取第10章 MATLAB图像处理GUI介绍在imcrop中加入坐标值可以实现在特定矩形中的图像选取,代码如下:图10.6 mdistline测量图像距离I=imread(circuit.tif);I2=imcrop(I,75 68 130 112);imshow(I),figure,imshow(I2)在imcrop中加入坐标值可以实现在特定矩形中的图像选取第10章 MATLAB图像处理GUI介绍3.距离测量(Distance tool)使用mdistline可以实现对图像中两点距离的测量,其代码如下:imshow(pout.tif)mdistline测量结果如图10.6所示,距离一般用像素个数表示。3.距离测量(Distance tool)第10章 MATLAB图像处理GUI介绍图10.6 mdistline测量图像距离图10.6 mdistline测量图像距离第10章 MATLAB图像处理GUI介绍4.图像信息显示(Image Information tool)使用imageinfo可以显示图像的详细信息,如图像格式、大小、宽度和高度等,其代码如下:h=imshow(peppers.png);info=imfinfo(peppers.png);imageinfo(h,info);其中imfinfo得到的是图像的基本信息,存储在metadata数据结构中。显示界面如图10.7所示。如果调用imageinfo(h),则只显示图像的详细信息(image details)。4.图像信息显示(Image Information 第10章 MATLAB图像处理GUI介绍图10.7 imageinfo显示图像信息图10.7 imageinfo显示图像信息第10章 MATLAB图像处理GUI介绍5.图像缩放比例调整(Magnification box)使用immagbox可以在图像显示界面上创建一个比例缩放的编辑框,实现图像大小的调节显示,其代码如下:hFig=figure(Toolbar,none,.Menubar,none);hIm=imshow(pears.png);hMagBox=immagbox(hFig,hIm);pos=get(hMagBox,Position);set(hMagBox,Position,0 0 pos(3)pos(4)显示结果如图10.8所示。5.图像缩放比例调整(Magnification bo第10章 MATLAB图像处理GUI介绍图10.8 immagbox缩放显示图像图10.8 immagbox缩放显示图像第10章 MATLAB图像处理GUI介绍6.图像显示滚动条(Scroll Panel tool)使用imscrollpanel可以得到水平和垂直的滚动条,便于显示较大图像,其代码如下:hFig=figure(Toolbar,none,.Menubar,none);hIm=imshow(saturn.png);hSP=imscrollpanel(hFig,hIm);显示界面如图10.9所示。6.图像显示滚动条(Scroll Panel tool第10章 MATLAB图像处理GUI介绍图10.9 imscrollpanel滚动条图10.9 imscrollpanel滚动条第10章 MATLAB图像处理GUI介绍7.图像全局观察图像全局观察(Overview tool)使用imoverview可以在图像显示区域构建一个矩形框,将矩形框内的图像放大到另外一个窗体内,以便观察图像的细节,其代码如下:hFig=figure(Toolbar,none,.Menubar,none);hIm=imshow(tape.png);hSP=imscrollpanel(hFig,hIm);imoverview(hIm);如图10.10所示,使用鼠标可以移动矩形框的位置,图10.10左图上的三角符号按钮可以放大或缩小矩形框的大小。7.图像全局观察(Overview tool)第10章 MATLAB图像处理GUI介绍图10.10 imoverview显示图像的局部区域 图10.10 imoverview显示图像的局部区域 第10章 MATLAB图像处理GUI介绍8.局部区域像素值显示(Pixel Region tool)与imoverview 相似,使用impixelregionpanel可以显示图像局部区域的像素值,其代码如下:himage=imshow(peppers.png);hfigure=figure;hpanel=impixelregionpanel(hfigure,himage);对于灰度图显示灰度值,对于RGB彩色图显示RGB值,如图10.11所示。8.局部区域像素值显示(Pixel Region to第10章 MATLAB图像处理GUI介绍图10.11 impixelregionpanel显示图像像素值图10.11 impixelregionpanel显示图像第10章 MATLAB图像处理GUI介绍10.3 模块化图像处理模块化图像处理GUI编程编程10.3.1 位置控制位置控制在使用不同的GUI模块时,模块在界面上的位置是默认的,如impixelinfo总是出现在图像的左下角,但用户可能对模块的位置提出不同的要求,这就需要对模块的位置进行编程。为了确定模块的位置,可以使用一个4维向量left bottom width height来定义模块对象的位置,其中left 和 bottom是指模块距离图像界面figure右边和底边的距离,width和height定义模块的宽度和高度。10.3 模块化图像处理GUI编程10.3.1 位置控制第10章 MATLAB图像处理GUI介绍函数set可以改变模块对象位置属性,使用语法为set(hpixreg,units,normalized,position,left bottom width height)。下面一段代码定义了一个my_pixinfotool函数,使用set函数实现将impixelregionpanel模块镶嵌在目标图像区域之中。function my_pixinfotool(im)%建立figure,设置属性hfig=figure(Toolbar,none,.Menubar,none,.函数set可以改变模块对象位置属性,使用语法为set(h第10章 MATLAB图像处理GUI介绍Name,My Pixel Info Tool,.NumberTitle,off,.IntegerHandle,off);himage=imshow(im);%加入像素信息impixelinfo模块hpixinfo=impixelinfo(himage);%加入impixelregionpanel模块hpixreg=impixelregionpanel(hfig,himage);%设置impixelinfo的位置set(hpixreg,units,normalized,position,0 0.08 1 0.4)下面调用my_pixinfotool函数,显示结果如图10.12所示。Name,My Pixel Info Tool第10章 MATLAB图像处理GUI介绍图10.12 设定impixelregionpanel的位置图10.12 设定impixelregionpanel的位第10章 MATLAB图像处理GUI介绍10.3.2 连接性回调连接性回调API函数函数GUI模块和目标图像之间要实现信息交流需要建立相互之间的连接关系,比如当调用imoverview 模块时,如图10.10所示,移动局部显示框的滚动条位置可以改变全局显示框中的矩形框的位置,同样点击全局显示框中三角型按钮改变矩形框的大小可以相应地改变局部显示框中的显示范围。10.3.2 连接性回调API函数第10章 MATLAB图像处理GUI介绍GUI模块通过调用回调(Call Back)函数(一种消息API,Application Programmer Interface,接口函数)实现模块的连接性关系,如immagbox模块(图10.8所示)支持setMagnification API。当设定编辑框中的放大倍率时,immagbox模块回调setMagnification函数,通知图像显示滚动条改变放大倍率。GUI模块通过调用回调(Call Back)函数(一种消第10章 MATLAB图像处理GUI介绍为进一步说明回调函数的应用,我们建立一个双图像显示GUI函数名为my_image_compare,调用多个Scroll Panel API函数实现两个图像的同步滚动和同步放大。my_image_compare的代码如下:function my_image_compare(left_image,right_image)%建立图像对象 hFig=figure(Toolbar,none,.Menubar,none,.Name,双图像显示,.为进一步说明回调函数的应用,我们建立一个双图像显示GUI第10章 MATLAB图像处理GUI介绍NumberTitle,off,.IntegerHandle,off);%显示左边图像subplot(121)hImL=imshow(left_image);%显示右边图像subplot(122)hImR=imshow(right_image);%建立左图像滚动条NumberTitle,off,.第10章 MATLAB图像处理GUI介绍hSpL=imscrollpanel(hFig,hImL);set(hSpL,Units,normalized,.Position,0 0.1.5 0.9)%建立右图像滚动条hSpR=imscrollpanel(hFig,hImR);set(hSpR,Units,normalized,.Position,0.5 0.1.5 0.9)hSpL=imscrollpanel(hFig,hImL第10章 MATLAB图像处理GUI介绍%加入缩放比例调整编辑框hMagBox=immagbox(hFig,hImL);pos=get(hMagBox,Position);set(hMagBox,Position,0 0 pos(3)pos(4)%加入全局-局部显示工具imoverview(hImL)%从左右图像中得到API接口%加入缩放比例调整编辑框第10章 MATLAB图像处理GUI介绍apiL=iptgetapi(hSpL);apiR=iptgetapi(hSpR);%同步左右图像的缩放比例apiL.setMagnification(apiR.getMagnification()apiL=iptgetapi(hSpL);第10章 MATLAB图像处理GUI介绍%同步左右图像的局部显示区域apiL.setVisibleLocation(apiR.getVisibleLocation()%加入回调函数,当右边图像的放大比率变化时,通知左边图像做相应变化apiL.addNewMagnificationCallback(apiR.setMagnification);%加入回调函数,当左边图像的放大比率变化时,通知右边图像做相应变化apiR.addNewMagnificationCallback(apiL.setMagnification);%同步左右图像的局部显示区域第10章 MATLAB图像处理GUI介绍%加入回调函数,当右边图像的显示区域被imoverview改变时,通知左边图像做%相应变化apiL.addNewLocationCallback(apiR.setVisibleLocation);%加入回调函数,当左边图像的显示区域被imoverview改变时,通知右边图像做相%应变化apiR.addNewLocationCallback(apiL.setVisibleLocation);%加入回调函数,当右边图像的显示区域被imoverview改第10章 MATLAB图像处理GUI介绍下面代码调用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章 MATLAB图像处理GUI介绍图10.13 my_image_compare显示的图像图10.13 my_image_compare显示的图像第10章 MATLAB图像处理GUI介绍10.3.3 自定义自定义GUI模块模块除了工具箱提供的现有GUI模块外,用户还可以根据自己的需要自定义GUI模块。为了支持自定义GUI模块,MATLAB提供了一系列工具函数来辅助用户实现各种界面交互功能。这些工具函数可以实现增加或删除回调函数、排列对齐窗口中的图像、检查模块的输入参数、打开和保存图像文件等功能,如表10.1所示。10.3.3 自定义GUI模块第10章 MATLAB图像处理GUI介绍表表10.1 自定义自定义GUI工具函数工具函数表10.1 自定义GUI工具函数第10章 MATLAB图像处理GUI介绍另外,为了增强人机交互功能,MATLAB还提供了一些几何图形操作函数,如点、线、矩形、椭圆形和多边形等图形的人机操作函数,如表10.2所示。这些工具使得用户可以对图像区域进行选取和度量,例如以下代码运行多边形impoly函数,使用鼠标选定顶点可以得到如图10.14所示的多边形。另外,为了增强人机交互功能,MATLAB还提供了一些几何第10章 MATLAB图像处理GUI介绍表表10.2 GUI几何交互工具几何交互工具表10.2 GUI几何交互工具第10章 MATLAB图像处理GUI介绍figure,imshow(pout.tif);h=impolyposition=wait(h);图10.14 impoly绘制的多边形figure,imshow(pout.tif);图10第10章 MATLAB图像处理GUI介绍下面以一个角度测量为例进一步演示如何自定义GUI模块,取模块名为my_angle_measurement_tool,使用impoly在一张图像上绘制折线,取折线的坐标值来计算角度。function my_angle_measurement_tool(im)%建立figure对象figure(Name,My Angle Measurement Tool,.NumberTitle,off,.IntegerHandle,off);下面以一个角度测量为例进一步演示如何自定义GUI模块,取第10章 MATLAB图像处理GUI介绍%显示图像 imshow(im);%得到图像大小m=size(im,1);n=size(im,2);%得到多边形折线的中点midy=ceil(m/2);midx=ceil(n/2);%显示图像 第10章 MATLAB图像处理GUI介绍%设置多边形折线的起始点和终止点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);%得到折线的顶点位置%设置多边形折线的起始点和终止点第10章 MATLAB图像处理GUI介绍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第10章 MATLAB图像处理GUI介绍%角度计算显示回调函数,参数p包含三个点的坐标值function updateAngle(p)%从定点建立两个线段的向量%v1=x1-x2,y1-y2%v2=x3-x2,Y3-y2v1=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包含三个点的坐标值第10章 MATLAB图像处理GUI介绍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章 MATLAB图像处理GUI介绍图10.15 my_angle_measurement_tool计算角度图10.15 my_angle_measurement_t第10章 MATLAB图像处理GUI介绍习习 题题1.上机运行10.2节中的代码,实际体会GUI工具的特点。2.对10.3节中的角度测量程序进行修改,增加一条线段,实现对两个角度的测量。习 题1.上机运行10.2节中的代码,实际体会
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!