版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章MATLAB圖像處理GUI介紹
10.1圖像處理GUI概述
10.2圖像處理GUI模塊介紹
10.3模塊化圖像處理GUI編程習(xí)題
第10章MATLAB圖像處理GUI介紹
10.110.1圖像處理GUI概述
在使用GUI工具時(shí),可以直接從命令欄中鍵入GUI工具名稱(chēng)、被處理的圖像(以下稱(chēng)為“目標(biāo)圖像”),作為參數(shù)賦給GUI工具。MATLAB提供各種不同功能的GUI模塊。在實(shí)現(xiàn)處理功能時(shí),GUI工具既可以獨(dú)立使用也可以聯(lián)合使用,是一種典型的模塊化處理方式。使用GUI工具處理圖像可分為以下幾個(gè)步驟。10.1圖像處理GUI概述
在使用GUI工具時(shí),可(1)顯示目標(biāo)圖像。一般使用imshow函數(shù)顯示圖像,如himage=imshow('pout.tif'),顯示結(jié)果如圖10.1所示。返回的變量himage是圖像pout.tif的圖像句柄,圖像句柄類(lèi)似于文件句柄,可用于其它GUI工具作為圖像處理的入口參數(shù)。(1)顯示目標(biāo)圖像。圖10.1imshow顯示的圖像圖10.1imshow顯示的圖像(2)創(chuàng)建與目標(biāo)圖像相關(guān)的GUI。在用imshow顯示圖像后,使用返回的圖像句柄建立GUI或在當(dāng)前默認(rèn)的圖像句柄下,調(diào)用GUI工具可使GUI定位于目標(biāo)圖像。例如下面的代碼實(shí)現(xiàn)了調(diào)用像素信息GUIimpixelinfo對(duì)圖像信息的分析,如圖10.2所示,鼠標(biāo)在圖像上移動(dòng)時(shí),對(duì)應(yīng)位置上的像素值就顯示在圖像左下方。imshow('pout.tif');impixelinfo(2)創(chuàng)建與目標(biāo)圖像相關(guān)的GUI。圖10.2impixelinfo處理下的圖像界面圖10.2impixelinfo處理下的圖像界面下面的代碼實(shí)現(xiàn)了對(duì)特定目標(biāo)圖像的處理,方法是將圖像句柄賦予GUI工具,其中imdisplayrange(himage)為圖像灰度值的范圍,處理界面如圖10.3所示。himage=imshow('pout.tif');hpixelinfopanel=impixelinfo(himage);hdrangepanel=imdisplayrange(himage);下面的代碼實(shí)現(xiàn)了對(duì)特定目標(biāo)圖像的處理,方法是將圖像句柄賦圖10.3imdisplayrange處理下的圖像界面圖10.3imdisplayrange處理下的圖像界面由上面的示例還可看出,impixelinfo和imdisplayrange作為兩個(gè)不同的GUI模塊同時(shí)處于工作狀態(tài),這是GUI模塊化處理與一般圖像處理函數(shù)之間的明顯區(qū)別。由上面的示例還可看出,impixelinfo和imdis(3)建立GUI和目標(biāo)圖像的互動(dòng)連接。由上面介紹可看出GUI模塊與目標(biāo)圖像的連接是自動(dòng)建立的,但用戶也可以通過(guò)回調(diào)函數(shù)(CallBack)建立各個(gè)工作中的GUI模塊之間的聯(lián)系,這將在10.3節(jié)GUI編程中加以介紹。(3)建立GUI和目標(biāo)圖像的互動(dòng)連接。10.2圖像處理GUI模塊介紹
除了上面介紹的impixelinfo和imdisplayrange模塊以外,下面介紹MATLAB中其它一些常用的GUI模塊,利用這些模塊,用戶可以自由組合出具有一定功能的圖像處理程序。10.2圖像處理GUI模塊介紹
除了上面介紹的imp1.圖像對(duì)比度調(diào)節(jié)(AdjustContrasttool)使用imcontrast可以調(diào)用圖像對(duì)比度控制對(duì)話框,使用對(duì)話框中的控件條可以自由地調(diào)節(jié)圖像的顯示對(duì)比度,其代碼如下:imshow('pout.tif')imcontrast或h=imshow('pout.tif')imcontrast(h)運(yùn)行結(jié)果如圖10.4所示。1.圖像對(duì)比度調(diào)節(jié)(AdjustContrastto圖10.4imcontrast模塊界面圖10.4imcontrast模塊界面2.圖像剪取(CropImagetool)使用imcrop可以實(shí)現(xiàn)圖像局部區(qū)域的選取,如下列代碼所示:imshow('circuit.tif');I=imcrop;figure,imshow(I)運(yùn)行imcrop后使用鼠標(biāo)選取圖形中的一部分區(qū)域,imcrop的返回值為選取區(qū)域圖像的圖像句柄。用鼠標(biāo)選取圖形中的一部分區(qū)域,顯示結(jié)果如圖10.5所示。2.圖像剪取(CropImagetool)圖10.5imcrop對(duì)圖像進(jìn)行的局部選取圖10.5imcrop對(duì)圖像進(jìn)行的局部選取在imcrop中加入坐標(biāo)值可以實(shí)現(xiàn)在特定矩形中的圖像選取,代碼如下:圖10.6
mdistline測(cè)量圖像距離
I=imread('circuit.tif');
I2=imcrop(I,[7568130112]);imshow(I),figure,imshow(I2)在imcrop中加入坐標(biāo)值可以實(shí)現(xiàn)在特定矩形中的圖像選取3.距離測(cè)量(Distancetool)使用mdistline可以實(shí)現(xiàn)對(duì)圖像中兩點(diǎn)距離的測(cè)量,其代碼如下:imshow('pout.tif')mdistline測(cè)量結(jié)果如圖10.6所示,距離一般用像素個(gè)數(shù)表示。3.距離測(cè)量(Distancetool)圖10.6
mdistline測(cè)量圖像距離圖10.6mdistline測(cè)量圖像距離4.圖像信息顯示(ImageInformationtool)使用imageinfo可以顯示圖像的詳細(xì)信息,如圖像格式、大小、寬度和高度等,其代碼如下:h=imshow('peppers.png');info=imfinfo('peppers.png');imageinfo(h,info);其中imfinfo得到的是圖像的基本信息,存儲(chǔ)在metadata數(shù)據(jù)結(jié)構(gòu)中。顯示界面如圖10.7所示。如果調(diào)用imageinfo(h),則只顯示圖像的詳細(xì)信息(imagedetails)。4.圖像信息顯示(ImageInformation圖10.7imageinfo顯示圖像信息圖10.7imageinfo顯示圖像信息5.圖像縮放比例調(diào)整(Magnificationbox)使用immagbox可以在圖像顯示界面上創(chuàng)建一個(gè)比例縮放的編輯框,實(shí)現(xiàn)圖像大小的調(diào)節(jié)顯示,其代碼如下: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)])顯示結(jié)果如圖10.8所示。5.圖像縮放比例調(diào)整(Magnificationbo圖10.8immagbox縮放顯示圖像圖10.8immagbox縮放顯示圖像6.圖像顯示滾動(dòng)條(ScrollPaneltool)使用imscrollpanel可以得到水平和垂直的滾動(dòng)條,便于顯示較大圖像,其代碼如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('saturn.png');hSP=imscrollpanel(hFig,hIm);顯示界面如圖10.9所示。6.圖像顯示滾動(dòng)條(ScrollPaneltool圖10.9imscrollpanel滾動(dòng)條圖10.9imscrollpanel滾動(dòng)條7.圖像全局觀察(Overviewtool)使用imoverview可以在圖像顯示區(qū)域構(gòu)建一個(gè)矩形框,將矩形框內(nèi)的圖像放大到另外一個(gè)窗體內(nèi),以便觀察圖像的細(xì)節(jié),其代碼如下:hFig=figure('Toolbar','none',...'Menubar','none');hIm=imshow('tape.png');hSP=imscrollpanel(hFig,hIm);imoverview(hIm);如圖10.10所示,使用鼠標(biāo)可以移動(dòng)矩形框的位置,圖10.10左圖上的三角符號(hào)按鈕可以放大或縮小矩形框的大小。
7.圖像全局觀察(Overviewtool)圖10.10
imoverview顯示圖像的局部區(qū)域圖10.10imoverview顯示圖像的局部區(qū)域8.局部區(qū)域像素值顯示(PixelRegiontool)與imoverview相似,使用impixelregionpanel可以顯示圖像局部區(qū)域的像素值,其代碼如下:himage=imshow('peppers.png');hfigure=figure;hpanel=impixelregionpanel(hfigure,himage);對(duì)于灰度圖顯示灰度值,對(duì)于RGB彩色圖顯示RGB值,如圖10.11所示。8.局部區(qū)域像素值顯示(PixelRegionto圖10.11
impixelregionpanel顯示圖像像素值圖10.11impixelregionpanel顯示圖像10.3模塊化圖像處理GUI編程10.3.1位置控制在使用不同的GUI模塊時(shí),模塊在界面上的位置是默認(rèn)的,如impixelinfo總是出現(xiàn)在圖像的左下角,但用戶可能對(duì)模塊的位置提出不同的要求,這就需要對(duì)模塊的位置進(jìn)行編程。為了確定模塊的位置,可以使用一個(gè)4維向量[leftbottomwidthheight]來(lái)定義模塊對(duì)象的位置,其中l(wèi)eft和bottom是指模塊距離圖像界面figure右邊和底邊的距離,width和height定義模塊的寬度和高度。10.3模塊化圖像處理GUI編程10.3.1位置控制函數(shù)set可以改變模塊對(duì)象位置屬性,使用語(yǔ)法為set(hpixreg,'units','normalized','position',[leftbottomwidthheight])。下面一段代碼定義了一個(gè)my_pixinfotool函數(shù),使用set函數(shù)實(shí)現(xiàn)將impixelregionpanel模塊鑲嵌在目標(biāo)圖像區(qū)域之中。functionmy_pixinfotool(im)%建立figure,設(shè)置屬性hfig=figure('Toolbar','none',...‘Menubar’,‘none’,...函數(shù)set可以改變模塊對(duì)象位置屬性,使用語(yǔ)法為set(h'Name','MyPixelInfoTool',...'NumberTitle','off',...'IntegerHandle','off');himage=imshow(im);%加入像素信息impixelinfo模塊hpixinfo=impixelinfo(himage);%加入impixelregionpanel模塊hpixreg?=impixelregionpanel(hfig,himage);%設(shè)置impixelinfo的位置set(hpixreg,'units','normalized','position',[00.0810.4])下面調(diào)用my_pixinfotool函數(shù),顯示結(jié)果如圖10.12所示。'Name','MyPixelInfoTool圖10.12設(shè)定impixelregionpanel的位置圖10.12設(shè)定impixelregionpanel的位10.3.2連接性回調(diào)API函數(shù)GUI模塊和目標(biāo)圖像之間要實(shí)現(xiàn)信息交流需要建立相互之間的連接關(guān)系,比如當(dāng)調(diào)用imoverview模塊時(shí),如圖10.10所示,移動(dòng)局部顯示框的滾動(dòng)條位置可以改變?nèi)诛@示框中的矩形框的位置,同樣點(diǎn)擊全局顯示框中三角型按鈕改變矩形框的大小可以相應(yīng)地改變局部顯示框中的顯示范圍。10.3.2連接性回調(diào)API函數(shù)GUI模塊通過(guò)調(diào)用回調(diào)(CallBack)函數(shù)(一種消息API,ApplicationProgrammerInterface,接口函數(shù))實(shí)現(xiàn)模塊的連接性關(guān)系,如immagbox模塊(圖10.8所示)支持setMagnificationAPI。當(dāng)設(shè)定編輯框中的放大倍率時(shí),immagbox模塊回調(diào)setMagnification函數(shù),通知圖像顯示滾動(dòng)條改變放大倍率。GUI模塊通過(guò)調(diào)用回調(diào)(CallBack)函數(shù)(一種消為進(jìn)一步說(shuō)明回調(diào)函數(shù)的應(yīng)用,我們建立一個(gè)雙圖像顯示GUI函數(shù)名為my_image_compare,調(diào)用多個(gè)ScrollPanelAPI函數(shù)實(shí)現(xiàn)兩個(gè)圖像的同步滾動(dòng)和同步放大。my_image_compare的代碼如下:functionmy_image_compare(left_image,right_image)%建立圖像對(duì)象hFig=figure('Toolbar','none',...'Menubar','none',...Name','雙圖像顯示',...為進(jìn)一步說(shuō)明回調(diào)函數(shù)的應(yīng)用,我們建立一個(gè)雙圖像顯示GUI'NumberTitle','off',...'IntegerHandle','off');%顯示左邊圖像subplot(121)hImL=imshow(left_image);%顯示右邊圖像subplot(122)hImR=imshow(right_image);%建立左圖像滾動(dòng)條'NumberTitle','off',...hSpL=imscrollpanel(hFig,hImL);set(hSpL,'Units','normalized',...'Position',[00.1.50.9])%建立右圖像滾動(dòng)條hSpR=imscrollpanel(hFig,hImR);set(hSpR,'Units','normalized',...'Position',[0.50.1.50.9])hSpL=imscrollpanel(hFig,hImL%加入縮放比例調(diào)整編輯框hMagBox=immagbox(hFig,hImL);pos=get(hMagBox,'Position');set(hMagBox,'Position',[00pos(3)pos(4)])%加入全局-局部顯示工具imoverview(hImL)%從左右圖像中得到API接口%加入縮放比例調(diào)整編輯框apiL=iptgetapi(hSpL);apiR=iptgetapi(hSpR);%同步左右圖像的縮放比例apiL.setMagnification(apiR.getMagnification())apiL=iptgetapi(hSpL);%同步左右圖像的局部顯示區(qū)域apiL.setVisibleLocation(apiR.getVisibleLocation())%加入回調(diào)函數(shù),當(dāng)右邊圖像的放大比率變化時(shí),通知左邊圖像做相應(yīng)變化apiL.addNewMagnificationCallback(apiR.setMagnification);%加入回調(diào)函數(shù),當(dāng)左邊圖像的放大比率變化時(shí),通知右邊圖像做相應(yīng)變化apiR.addNewMagnificationCallback(apiL.setMagnification);%同步左右圖像的局部顯示區(qū)域%加入回調(diào)函數(shù),當(dāng)右邊圖像的顯示區(qū)域被imoverview改變時(shí),通知左邊圖像做?%相應(yīng)變化apiL.addNewLocationCallback(apiR.setVisibleLocation);%加入回調(diào)函數(shù),當(dāng)左邊圖像的顯示區(qū)域被imoverview改變時(shí),通知右邊圖像做相%應(yīng)變化apiR.addNewLocationCallback(apiL.setVisibleLocation);%加入回調(diào)函數(shù),當(dāng)右邊圖像的顯示區(qū)域被imoverview改下面代碼調(diào)用my_image_compare函數(shù)將一幅圖像和它的邊界圖像并排顯示在一個(gè)figure對(duì)象中。如圖10.13所示,my_image_compare中的addNewMagnificationCallback和addNewLocationCallback回調(diào)函數(shù)使得左右圖像縮放比率和顯示區(qū)域保持完全同步的變化。left_image=imread('d:/gugong.jpg');right_image=edge(left_image(:,:,1),'canny');my_image_compare(left_image,right_image);下面代碼調(diào)用my_image_compare函數(shù)將一幅圖圖10.13my_image_compare顯示的圖像圖10.13my_image_compare顯示的圖像10.3.3自定義GUI模塊除了工具箱提供的現(xiàn)有GUI模塊外,用戶還可以根據(jù)自己的需要自定義GUI模塊。為了支持自定義GUI模塊,MATLAB提供了一系列工具函數(shù)來(lái)輔助用戶實(shí)現(xiàn)各種界面交互功能。這些工具函數(shù)可以實(shí)現(xiàn)增加或刪除回調(diào)函數(shù)、排列對(duì)齊窗口中的圖像、檢查模塊的輸入?yún)?shù)、打開(kāi)和保存圖像文件等功能,如表10.1所示。10.3.3自定義GUI模塊表10.1自定義GUI工具函數(shù)表10.1自定義GUI工具函數(shù)另外,為了增強(qiáng)人機(jī)交互功能,MATLAB還提供了一些幾何圖形操作函數(shù),如點(diǎn)、線、矩形、橢圓形和多邊形等圖形的人機(jī)操作函數(shù),如表10.2所示。這些工具使得用戶可以對(duì)圖像區(qū)域進(jìn)行選取和度量,例如以下代碼運(yùn)行多邊形impoly函數(shù),使用鼠標(biāo)選定頂點(diǎn)可以得到如圖10.14所示的多邊形。另外,為了增強(qiáng)人機(jī)交互功能,MATLAB還提供了一些幾何表10.2GUI幾何交互工具表10.2GUI幾何交互工具figure,imshow('pout.tif');h=impolyposition=wait(h);圖10.14impoly繪制的多邊形figure,imshow('pout.tif');圖10下面以一個(gè)角度測(cè)量為例進(jìn)一步演示如何自定義GUI模塊,取模塊名為my_angle_measurement_tool,使用impoly在一張圖像上繪制折線,取折線的坐標(biāo)值來(lái)計(jì)算角度。functionmy_angle_measurement_tool(im)%建立figure對(duì)象figure('Name','MyAngleMeasurementTool',...'NumberTitle','off',...'IntegerHandle','off');下面以一個(gè)角度測(cè)量為例進(jìn)一步演示如何自定義GUI模塊,取%顯示圖像imshow(im);%得到圖像大小m=size(im,1);n=size(im,2);%得到多邊形折線的中點(diǎn)midy=ceil(m/2);midx=ceil(n/2);%顯示圖像%設(shè)置多邊形折線的起始點(diǎn)和終止點(diǎn)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);%得到折線的頂點(diǎn)位置%設(shè)置多邊形折線的起始點(diǎn)和終止點(diǎn)initial_position=api.getPosition()%計(jì)算并顯示角度updateAngle(init
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《留置針使用規(guī)范》課件
- 《小數(shù)數(shù)位順序表》課件
- 八下期中測(cè)試卷01【測(cè)試范圍:第1-11課】(原卷版)
- 旅游行業(yè)導(dǎo)游講解培訓(xùn)總結(jié)
- 2006年江蘇高考語(yǔ)文真題及答案
- 年度目標(biāo)設(shè)定與實(shí)現(xiàn)路徑計(jì)劃
- 幼兒園工作總結(jié)用心呵護(hù)溫馨成長(zhǎng)
- 《焊工基礎(chǔ)知識(shí)》課件
- 2023年-2024年新員工入職前安全教育培訓(xùn)試題附參考答案(奪分金卷)
- 廚師個(gè)人述職報(bào)告15篇
- 2024年?duì)I銷(xiāo)部工作人員安全生產(chǎn)責(zé)任制(2篇)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專(zhuān)業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之3:4組織環(huán)境-4.1理解組織及其環(huán)境(雷澤佳編制-2025B0)
- 2024年國(guó)家低壓電工電工作業(yè)證理論考試題庫(kù)(含答案)
- 2025年上半年山西呂梁市柳林縣招聘畢業(yè)生70人到村(社區(qū))工作(第二批)重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 2024年非煤礦山年終安全生產(chǎn)工作總結(jié)
- 部編版2024-2025學(xué)年三年級(jí)上冊(cè)語(yǔ)文期末測(cè)試卷(含答案)
- 研發(fā)部年終總結(jié)(33篇)
- 一年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)1000題集錦
- 2024年高考物理模擬卷(山東卷專(zhuān)用)(考試版)
- 湖北省武漢市青山區(qū)2022-2023學(xué)年五年級(jí)上學(xué)期數(shù)學(xué)期末試卷(含答案)
- 《入侵檢測(cè)與防御原理及實(shí)踐(微課版)》全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論