




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第三章MATLAB圖形圖像處理
MATLAB不僅具有強大的矩陣計算能力,也具有強大的圖形圖像處理能力,它能將雜亂無章的數(shù)據(jù)通過圖形圖像的形式表現(xiàn)出來,使我們更直觀地了解這些數(shù)據(jù)的變化趨勢、變化規(guī)律以及它們的內(nèi)在聯(lián)系。
數(shù)字圖像處理就是通過計算機對圖像進行去除噪聲、增強、復原、分割和特征提取等處理的理論、方法和技術。目前的圖形圖像處理技術在航天、遙測、電視廣播、網(wǎng)絡媒體、現(xiàn)代醫(yī)學及軍事等眾多領域都得到了廣泛應用,并且取得了巨大的成就。
本章對圖形圖像處理的基本概念、基本內(nèi)容、命令格式和函數(shù)進行介紹,主要從二維圖形的繪制、三維圖形的繪制、圖像的獲取及處理等三個方面進行闡述,為圖形圖像處理在MATLAB中的應用打下良好的基礎。3.1二維圖形的繪制3.2三維曲線作圖3.3圖形用戶界面3.4MATLAB數(shù)字圖像處理3.5圖像的灰度變換與直方圖3.6圖像的增強濾波3.7圖像的空間變換3.8圖像邊緣檢測與分割3.1二維圖形的繪制用MATLAB繪圖命令可以在圖形窗口內(nèi)畫出各種圖形曲線,并使用不同的線型、顏色、點型和標注來修飾這些圖形曲線。
繪圖的一般步驟
1.曲線數(shù)據(jù)準備2.指定圖形窗口和子圖位置3.繪制圖形4.設置坐標軸和圖形注釋5.僅對三維圖形使用的著色和視點等設置6.圖形的精細修飾7.按指定格式保存或?qū)С鰣D形3.1.1直角坐標系中的繪圖plot命令:可用來繪制直角坐標系中的各種曲線.它的主要格式為:plot(y)plot(x,y)plot(x,y,’s’)plot()函數(shù)的應用形式:
①若y是向量,則plot(y)在直角坐標系中繪制出一條二維曲線:以y中元素的個數(shù)作為橫坐標,以y中元素的值作為縱坐標,在直角坐標系中畫點,各點以直線連接。
②若y是m×n的矩陣,則繪制n條二維曲線:每條曲線由m個點確定,橫坐標是矩陣行數(shù),縱坐標是每一列的元素.例:運行下面的程序,畫出圖形。
>>y1=[1324623453];>>y2=[13246;23453];>>plot(y1);plot(y2);
①如果x和y是向量,要求其具有相同長度,命令plot(x,y)將繪出以x元素為橫坐標、y元素為縱坐標的一條曲線。②若x和y一個為向量,一個為m×n的矩陣,則要求向量的長度等于m或n,共繪制n或m條曲線。
③若x和y都是矩陣時:大小必須相同,矩陣x的每列與y的每列畫一條曲線。圖示yxyxxx(1)(3)(2)yx>>x=0:0.2:2*pi;>>y=sin(x);>>plot(x,y);圖3.2正弦曲線圖例:設x為時間向量,運行下面的程序,畫出以x為橫坐標,y為縱坐標的曲線,如圖所示。例
x是矩陣,分別繪制x與y1和x與y2的曲線,已知y1是向量且長度與x的行數(shù)相等,y2是矩陣且與x尺寸相同,曲線分別如圖所示。>>x=[1:4;2:5;3:6]x=123423453456>>y1=[123]%y1長度與x的行數(shù)相等y1=123>>plot(x,y1)>>y2=[1111;2222;3333]y2=111122223333>>plot(x,y2);plot(x,y,’s’)x,y情況和第二種一樣,’s’是圖形的屬性字符串,這些屬性字符串包括三個方面,第一方面指定圖形曲線的顏色,第二方面指定數(shù)據(jù)點的標記類型,第三方面指定線的類型,將在3.1.3節(jié)中介紹。為了讀圖時了解圖中所表達的內(nèi)容,還需要增加標題、坐標軸標簽和網(wǎng)格線。用title(標題)、xlabel(x軸標簽)、ylable(y軸標簽)函數(shù)給圖形添加標題和坐標軸標簽。用grid命令可使網(wǎng)格線出現(xiàn)或消失在圖形中,gridon代表在圖形中出現(xiàn)網(wǎng)格線,gridoff代表去除網(wǎng)格線。例:下面的語句將會產(chǎn)生帶有標題,標簽和網(wǎng)格線的函數(shù)圖形。結果如圖3.3所示。
x=0:1:10;
y=x.^2-10*x+6;
plot(x,y);
title('Plotofy=x.^2-10*x+6');
xlabel('x');
ylabel('y');
gridon;3.1.2圖形的打印和輸出
1.圖形的打印有時需要把畫出的圖形打印出來。打印的方法是在圖形Figure窗口內(nèi),在File菜單中選擇“Print…”打印項就可以打印輸出了。另外還可以通過“PrintSetup…”打印設置窗口進行設置打印到紙還是文件,并可以進行“PageSetup…”頁面設置、“PrintPreview…”打印預覽等。2.圖形的輸出在MATLAB中導出圖形文件使用菜單“File”→“ExportSetup…”。圖形文件的保存格式有fig、bmp、jpg等常用圖形文件格式。在圖形Figure窗口內(nèi),Edit菜單中選擇“CopyFigure”項就可以將圖形窗口中顯示的曲線復制下來,粘貼到其他文檔中了
.3.1.3線型、點型、顏色MATLAB會自動根據(jù)默認設置的顏色(藍色)和線型(實線)畫出曲線。如果用戶對線型的默認值不滿意,可以用命令/函數(shù)控制線型,也可以根據(jù)需要選取不同的數(shù)據(jù)點的形狀,格式為
plot(x,y,’s’)‘s’是對線和數(shù)據(jù)點的設置,其參數(shù)如表3-1所示。注釋:m-magentac-cyans-squared-diamondp-pentagramh-hexagram例3.1.1
函數(shù)y=x2-10x+6的圖形,曲線為紅色的虛線,數(shù)據(jù)點用藍色的圓圈表示。x=0:1:10;y=x.^2-10*x+6;plot(x,y,'r--',x,y,'bo');圖3.4不同線型、點型和顏色的圖形
為了說明圖中曲線的名稱或類型,用legend命令來制作圖例?;靖袷绞牵?/p>
legend('string1','string2',...,pos)
其中string1,string2,…是圖形中曲線圖例的字符串,說明對應曲線的名稱或類型,而pos是一個整數(shù),用來指定圖例的位置。這些整數(shù)所代表的含義如表3-2所示。用legendoff命令將能去除多余的圖例。
eg.x=0:pi/100:2*pi;y1=sin(2*x);y2=2*cos(2*x);plot(x,y1,'k-',x,y2,'b--');title('Plotoff(x)=sin(2x)anditsderivative');xlabel('x');ylabel('y');legend('f(x)','d/dxf(x)',-1)gridon;3.1.4同一坐標系內(nèi)多條曲線的繪制在一張圖形窗口的同一坐標系上繪制多條曲線的方法有4種.1.使用plot(x,[y1;y2;…])例:運行下列程序x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,[y1;y2]);legend('sinx','cosx');圖3.5同一窗口多條曲線的繪制
這種方法的缺點是:所有的變量要有相同的長度和相同的自變量向量,而且也不便于對各條曲線分別設定線型和顏色。2.使用hold命令
在畫完前一張圖后,用holdon命令保持住,再畫下一條曲線.例如鍵入下列程序x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,y1);holdon;
執(zhí)行此程序時,圖形窗口產(chǎn)生第一幅圖形,同時圖形處于保持狀態(tài)。再鍵入plot(x,y2,‘r’),就把第二幅以紅色的曲線畫在圖上。用這種方法時,兩張圖各自的自變量長度可以各不相同,只要每張圖各自的自變量和因變量同長即可。注意:使用holdon以后的圖形都會在此圖上繪制,如果想將圖形繪制在新的圖形窗口中,可以鍵入holdoff命令及時解除保持狀態(tài)。
3.在plot后使用多輸入變量
使用這種方法,其語句格式:
plot(x1,y1,x2,y2,…,xn,yn)
該語句中xl、y1、x2、y2等分別為向量對。每一向量對可以繪出一條曲線,這樣就可以在一張圖上畫出多條曲線,每一向量對的長度可以不同,在其后面都可加線型和顏色標志符。x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,y1,'go',x,y2,'r:');title('線型、點型和顏色');xlabel('時間'),ylabel('Y');gridon;圖3.6多條曲線的繪制
其中一條曲線在數(shù)據(jù)點處用綠色的圓圈作標記,另一條曲線用紅色的點線繪制。對于單引號中的字符串,MATLAB只作為一種代碼來傳遞,因此MATLAB可以把漢字標注在圖上。4.使用plotyy命令
plotyy設有兩個縱坐標,以便繪制兩個y尺度不同的變量,但x仍用同一個比例尺,例如,鍵入圖3.7雙縱坐標圖形
得到如圖3.7所示圖形,其中左縱坐標是對y1(值0~1)的,而右縱坐標是對y2(值0~5)的,
x=-pi:pi/20:pi;y1=sin(x);y2=5*cos(x);plotyy(x,y1,x,y2);gridon;
gtext命令縱坐標軸和曲線的標注可用gtext命令來放置。
gtext('x');gtext('y1');gtext('y2');gtext命令用鼠標拖動來確定標注文字的位置,用起來比較方便。3.1.5多個圖形窗口在計算機圖形屏幕上可以同時打開幾個圖形窗口,也可以在一個圖形窗口內(nèi)繪制幾幅子圖,并且這幾幅分圖可用不同的坐標顯示。
1.多個圖形窗口的創(chuàng)建MATLAB可以創(chuàng)建不同標號的多個圖形窗口。函數(shù)格式是:figure(n);其中n代表打開第n個圖形窗口。當這個函數(shù)被執(zhí)行后,圖n將會變?yōu)楫斍皥D形窗口,執(zhí)行所有的畫圖命令。MATLAB默認打開“Figure1”窗口。相關的其他函數(shù):
gcf函數(shù)用于返回當前圖形窗口數(shù)。
clf命令用于清除當前圖形窗口的內(nèi)容。
close命令用于關閉圖形窗。2.子圖形窗口在一個圖形窗口內(nèi)可以創(chuàng)建出多個子圖形窗口。創(chuàng)建子圖形窗口的命令格式是:subplot(m,n,p)
該命令在當前窗口內(nèi)創(chuàng)建m行×n列個子圖形窗口,p表示當前第p個子圖形窗口。這些子窗口以從左向右從上到下編號。
eg.subplot(2,3,4)
例如運行下列程序,結果如圖3.8所示。figure(2);subplot(2,1,1);x=-pi:pi/20:pi;y=sin(x);plot(x,y);gridon;title('正弦曲線');subplot(2,1,2);x=-pi:pi/20:pi;y=cos(x);plot(x,y);gridon;title('余弦曲線');圖3.8多個子窗口的圖形3.1.6對數(shù)坐標圖形在直角坐標系中的坐標軸默認為線性刻度,此外也可以用對數(shù)刻度,如果在x、y軸上使用這兩種刻度的一種或兩種,可組合形成下列4種不同的坐標系:plot函數(shù)的x,y均用線性刻度semilogx函數(shù)x軸用對數(shù)刻度,y軸將用線性刻度semilogy函數(shù)x軸用線性刻度,y軸用對數(shù)刻度loglog函數(shù)兩坐標軸都用對數(shù)刻度。
這四個函數(shù)在意義上是等價的,只是坐標軸的類型不同,運行下面的程序,將顯示如圖3.9所示圖形。x=0:0.1:10;y=x.^2-10.*x+25;subplot(2,2,1);plot(x,y);gridon;xlabel('a)x、y軸線性刻度');subplot(2,2,2);semilogx(x,y);gridon;xlabel('b)x軸對數(shù)刻度、y軸線性刻度');subplot(2,2,3);semilogy(x,y);gridon;xlabel('c)x軸線性刻度、y軸對數(shù)刻度');subplot(2,2,4);loglog(x,y);gridon;xlabel(‘d)x、y軸對數(shù)刻度');圖3.9各種坐標軸刻度圖形
3.1.7坐標軸上下限的設置MATLAB可根據(jù)輸入數(shù)據(jù)的大小自動設置坐標軸的大小,用戶也可以根據(jù)需要用axis命令/函數(shù)自行設置坐標比例并選擇圖形邊界范圍,即允許用戶設置x、y軸上值的范圍,axis命令/函數(shù)的使用形式如表3-3所示。命
令功
能
或
意
義v=axis此命令/函數(shù)返回4個數(shù)據(jù)[xmin
xmax
ymin
ymax],分別表示x,y軸的上下限范圍axis([xmin
xmax
ymin
ymax])xmin
xmax設定橫軸x的下限及上限,ymin
ymax設定縱軸y的下限及上限axisequal橫軸、縱軸的長度設置等長刻度axissquare產(chǎn)生正方形坐標值axisnormal以預設值畫縱軸及橫軸axisoff將縱軸及橫軸取消axison打開所有的軸背景(默認情況)eg.畫一個球體sphere(25)pauseaxisequalpauseaxisnormalpauseaxissquarepauseaxisnormaleg.畫出函數(shù)f(x)=sin(x)從-2π到2π之間兩個周期的圖形曲線,如圖3.10所示,然后設置坐標的區(qū)域為0≤x≤π,0≤f(x)≤1。x=-2*pi:pi/20:2*pi;fx=sin(x)
;plot(x,fx)
;title('Plotofsin(x)vsx');gridon;
圖3.10以x為自變量的sinx的圖形
獲取當前圖形中坐標軸的上下限,鍵入axis命令可得到當前圖形中坐標軸的x、y的范圍。>>axisans=-88-11重新設置坐標軸的上下限,使它在[0pi01]范圍內(nèi)顯示曲線。>>axis([0pi01])圖3.11畫圖區(qū)域為[0π01]的曲線
3.1.8極坐標下的繪圖
MATLAB中包括一個重要的函數(shù)叫做polar,它用于在極坐標系中畫圖?;靖袷饺缦拢簆olar(theta,r)其中theta代表一個弧度角數(shù)組,r代表離原點的距離數(shù)組。
eg.運行下列程序,將得到如圖所示的結果。theta=0:pi/20:2*pi;r=0.5+cos(theta);polar(theta,r);3.1.9復數(shù)的繪圖由于復數(shù)數(shù)據(jù)既包括實部又包括虛部,所以在MATLAB中復數(shù)數(shù)據(jù)的繪圖與普通實數(shù)數(shù)據(jù)的繪圖有所區(qū)別。分3種情況。1.plot(z)
z為復數(shù)變量時(即含有非零的虛部),把復數(shù)的實部作為橫坐標、虛部作為縱坐標進行繪圖,即相當于plot(real(z),imag(z))。例如繪制下面函數(shù)曲線:y(t)=e0.1t(cost+isint)運行下面的程序,將得到如圖3.13所示的曲線。t=0:pi/20:6*pi;y=exp(0.1*t).*(cos(t)+i*sin(t));plot(y);gridon
;title('PlotofComplexFunctionvsTime');xlabel('RealPart');ylabel('ImaginaryPart');2、plot(t,z)相當于plot(t,real(z)),即橫坐標為t,縱坐標為real(z),z中的虛數(shù)部分將被丟棄。eg.t=0:pi/20:6*pi;y=exp(0.1*t).*(cos(t)+i*sin(t));plot(t,y);gridon
;title('PlotofComplexFunctionvsTime');xlabel('t');ylabel('y(t)');圖3.14只有實部的圖形
在復平面內(nèi)分別繪制函數(shù)的實部和虛部曲線,則須用holdon命令.
eg.運行下列語句,在相同的時間軸內(nèi)畫出函數(shù)的實部和虛部圖形,如圖3.15所示。t=0:pi/20:6*pi;y=exp(0.1*t).*(cos(t)+i*sin(t));plot(t,real(y),'b-');gridon;holdon;plot(t,imag(y),'r-');title('PlotofComplexFunctionvsTime');xlabel('t');ylabel('y(t)');legend('real','imaginary');holdoff;
圖3.15含有函數(shù)實部和虛部的圖形3.
polar(theta,r)
極坐標系下繪圖,其中theta表示虛部和實部形成的夾角,r為數(shù)據(jù)點到原點之間的距離eg.t=0:pi/20:6*pi;y=exp(0.1*t).*(cos(t)+i*sin(t));polar(angle(y),abs(y));title('PlotofComplexFunction');
圖3.16y(t)的極坐標圖
3.1.10特殊二維圖形的繪制在直角坐標系中,除了上面我們已經(jīng)看到的各種曲線圖形外,MATLAB還支持其它的一些特殊圖形:
火柴桿圖(stem)、階梯圖(stair)條形圖(bar)、餅圖(pie)羅盤圖(compass)、直方圖(hist)函數(shù)描述bar(x,y)繪制垂直的條形圖barh(x,y)繪制水平的條形圖compass(x,y)繪制極坐標圖,它的每一個值都用箭頭表示,從原點指向(x,y)pie(x)pie(x,explode)繪制一個餅狀圖,x代表占總數(shù)的百分數(shù)explode用來確定是否從餅圖中分離對應的一部分塊stairs(x,y)繪制階梯圖,每一個階梯階躍點為點(x,y)stem(x,y)繪制一個火柴桿圖hist(y)繪制直方圖表3-4特殊二維圖形的類型
火柴桿圖、階梯圖、條形圖、餅圖、羅盤圖與普通的圖形差不多,它們的調(diào)用方式相同。例如,下面是一個火柴桿圖的程序。x=[123456];y=[268785];stem(x,y);title('ExampleofaStemPlot');xlabel('x');ylabel('y');axis([07010]);
(a)火柴桿圖(b)階梯圖(c)條形圖(d)羅盤圖階梯圖、條形圖、羅盤圖可以通過調(diào)用stairs、bar、barh和compass命令來創(chuàng)建,其圖形如圖3.17(b)、(c)、(d)所示。x=[123456];y=[268785];stem,stairs用于繪制離散數(shù)據(jù)eg.繪制y=e-tsin(2t)的圖形t=0:0.1:10;y=exp(-t).*sin(2*t);subplot(2,1,1);stem(t,y,'fill');subplot(2,1,2);stairs(t,y,'r--');又稱為頻數(shù)直方圖,適于顯示數(shù)據(jù)集的分布情況并具有統(tǒng)計的功能。hist(y,n)
%統(tǒng)計每段的元素個數(shù)并畫出直方圖N=hist(y,x)
%統(tǒng)計出每段元素個數(shù)說明:n為分段的個數(shù),n省略時則默認為分成10段;x是向量,用于指定所分每個數(shù)據(jù)段的中間值;y可以是向量或矩陣,如果是矩陣則按列分段;N是每段元素個數(shù),N可省略,省略時繪制圖形。直方圖例
繪制直方圖統(tǒng)計并顯示數(shù)據(jù),如圖所示。x=randn(100,1);%產(chǎn)生100個正態(tài)分布的隨機數(shù)subplot(2,1,1);hist(x,20); %分20段subplot(2,1,2);hist(x,-3:1:3);%確定每段中間值sum((x<=2.5)&(x>1.5))%計算1.5~2.5間的元素個數(shù)餅圖pie(y,explode)
explode是一個邏輯數(shù)組,其數(shù)值為1或0。如果explode的值為1,那么它對應的扇區(qū)就從整體中分離出來。eg.data=[1037566];explode=[01000];pie(data,explode);title('ExampleofaPiePlot');legend('One','Two','Three','Four','Five');
圖3.18餅形圖
3.2三維曲線作圖3.2.1三維曲線的繪制
可以用plot3函數(shù)進行三維曲線的作圖,這個函數(shù)與二維plot函數(shù)非常相似,每一個點是用x,y,z三個數(shù)來表示,它的格式是:
plot3(x,y,z,’s’);
其中x、y、z是個數(shù)相等的數(shù)組,組成了點的3維坐標,s為線型、點型、顏色字符串,函數(shù)plot3提供了和plot函數(shù)相同的線型,點型和顏色。
例如繪制二維機械系統(tǒng)振蕩衰減情況的曲線,x、y有一相同的自變量t,x、y代表在時刻t系統(tǒng)的位置。利用plot3函數(shù)畫出時間、物體位置的三維圖形?!纠?.2.1】t=0:0.1:10;x=exp(-0.1*t).*cos(4*t);y=exp(-0.1*t).*sin(4*t);plot3(x,y,t);title('Three-DimensionalLinePlot');xlabel('x');ylabel('y');zlabel('Time');axissquare;gridon;圖3.19三維坐標圖形
3.2.2三維表面、網(wǎng)格、等高線圖形的繪制函數(shù)描述mesh(x,y,z)繪制三維網(wǎng)格圖形。其中數(shù)組x包括要畫得每一點的x值,數(shù)組y包括要畫得每一點的y值,數(shù)組z包括要畫得每一點的z值surf(x,y,z)繪制三維表面圖形contour(x,y,z)繪制三維等高線圖形
三維繪圖時需要已知x,y,才能求出z,從而畫圖.函數(shù)meshgrid可使函數(shù)圖形數(shù)組x、y的創(chuàng)建變得十分容易。格式為:
[xy]=meshgrid(xstart:xinc:xend,ystart:yinc:yend);
xstart:xinc:xend指出x的取值范圍,ystart:yinc:yend指出y的取值范圍。為了創(chuàng)建一個三維圖形,首先用meshgrid函數(shù)來建立x、y的值,然后通過表面、網(wǎng)格、等高線函數(shù)計算(x,y)相對應的z值,最后再調(diào)用函數(shù)mesh、surf或contour來創(chuàng)建圖形。例如,繪制下面函數(shù)的網(wǎng)格圖形,x、y的取值分別為[-4,4]和[-4,4]?!纠?.2.2】運行下面程序,將畫出這個三維網(wǎng)格圖形。[x,y]=meshgrid(-4:0.2:4,-4:0.2:4);z=exp(-0.5*(x.^2+y.^2));mesh(x,y,z);xlabel('x');ylabel('y');zlabel('z');title(‘Meshplot’);圖3.20三維網(wǎng)格圖
表面、等高線圖形類似于mesh函數(shù)的圖形只是把上述程序中的mesh換成surf或contour函數(shù)即可。如圖3.21和3.22所示。圖3.21三維表面圖圖3.22等高線圖3.2.3動畫的制作MATLAB的動畫可以有兩種方式得到:電影方式和對象方式。
①電影方式用到以下命令:
moviein、getframe和movie用getframe把MATLAB產(chǎn)生的圖形存儲下來,每個圖形成一個很長的列向量,N行列向量可以保存N幅畫面,成為一個較大矩陣。再用movie命令把它們連起來重放,就可以產(chǎn)生動畫效果。moviein用來預留存儲空間以加快運行的速度?!纠?.2.3】運行下面的動畫程序,將動態(tài)顯示如圖3.23所示效果。axisequal;%把坐標軸設成相等比例
M=moviein(15);%為變量M預留15幅圖的存儲空間
forj=1:15plot(fft(eye(j+1)));
M(:,j)=getframe;end;運行上述程序,15幅畫面就存放在矩陣M中了。再鍵入命令movie(M,10);MATLAB就把M中的圖形播放10次,形成動畫效果。圖3.23動畫的制作
②以對象方式創(chuàng)建動畫創(chuàng)建動畫的步驟如下:(1)繪制背景圖(2)設置對象擦除屬性設置動作對象的擦除屬性,擦除屬性EraseMode有四種,normal是重畫整個圖形,background是擦除背景,會擦除對象和它下面的其他圖像;xor是只畫與背景色不一致的新對象點,擦除不一致的原對象點,通常這種方式用來創(chuàng)建動畫;none是不做任何擦除。(3)確定對象的新位置計算得出動作對象每次的新位置,設置對象的xdata,ydata和zdata屬性。(4)刷新屏幕繪制了新對象后應該刷新屏幕,使新對象顯示出來,刷新屏幕用drawnow命令實現(xiàn)。例
以對象方式創(chuàng)建動畫,顯示一個紅色圓點沿三維曲線移動的動畫。x=0:0.1:20*pi;p=plot3(sin(x),cos(x),x);%在起點定義一個紅色的圓點并設置擦除方式h=line(0,1,0,'color','red','marker','.',…'markersize',20,'erasemode','xor');fork=0:0.1:20*pi;
%設定紅點的新位置
set(h,'xdata',sin(k),'ydata',cos(k),'zdata',k);
drawnow;end3.3圖形用戶界面
圖形用戶界面(GraphicalUserInterface,簡稱GUI)是一種圖形化的程序接口,是MATLAB和用戶進行直接交互的重要手段。一個好的GUI程序給用戶提供一個良好的交互界面及豐富的控制按鈕,操作方便、快捷。MATLAB圖形用戶界面的設計方法有兩種,一種是使用可視化的界面編輯環(huán)境通過控件設計來實現(xiàn),另外一種是通過編寫程序?qū)崿F(xiàn),本節(jié)主要介紹使用可視化的界面編輯環(huán)境來設計圖形用戶界面。3.3.1GUI工作機制MATLAB的圖形用戶界面(GUI)是用戶與計算機程序之間的一種可視化交互方式。創(chuàng)建MATLAB用戶圖形界面必須包含三類基本元素:1.組件(Component)2.圖形窗口(Figure)3.響應或回調(diào)函數(shù)(Callback)表3-6常用GUI組件元
素描
述圖形化控件PushbuttonTogglebuttonRadiobuttonCheckboxEditboxListboxPopupmenusSlider普通按鈕切換按鈕單選按鈕復選框編輯框列表框彈出菜單滾動條靜態(tài)元素FrameTextfield窗口文本字符串菜單和坐標系MenuitemsContextmenusaxes下拉菜單上下文菜單坐標3.3.2創(chuàng)建GUI的基本步驟
在MATLAB中,圖形用戶界面(GUI)程序是通過GUI開發(fā)環(huán)境——guide命令來創(chuàng)建的。打開GUI的方法有兩種:(1)啟動MATLAB后,選擇菜單“File”→“New”→“GUI”命令;(2)在MATLAB的命令窗口內(nèi),鍵入“guide”命令,出現(xiàn)如圖3.24所示界面。圖3.24guide快速開始界面
圖3.25可視化的圖形用戶窗口
若新建空白的圖形用戶界面則選擇“BlankGUI(Default)”,界面如下:根據(jù)需要在圖3.25所示的圖形用戶窗口上編輯各種按鈕、編輯框等對象構成一個美觀友好的界面了,其GUI創(chuàng)建的基本步驟為如下五步:1.首先要決定GUI程序需要哪些組件及每個組件的功能如何,在紙上大致繪制一幅圖形,幫助分析和設計;2.運行guide命令,產(chǎn)生一個窗口編輯器,其左側(cè)有一個GUI組件欄,用戶可以通過選中和拖放操作把設計所需要的組件放置在窗口編輯器中,并通過GUI編輯窗口頂部工具欄中的工具來調(diào)整GUI窗口的尺寸、組件對齊方式、空間布局等;3.通過GUI開發(fā)環(huán)境調(diào)用組件屬性編輯器,對組件命名、“Tag”屬性命名、并設置組件的字體、尺寸、顏色、顯示文本等屬性;4.保存圖形編輯窗口,將在指定的路徑中產(chǎn)生兩個擴展名分別為“.fig”和“.m”的同名文件。擴展名為.fig的文件包含了當前的GUI圖形界面內(nèi)容,擴展名為.m的文件包含了調(diào)用該圖形窗口的程序代碼及每個GUI組件的回調(diào)函數(shù);5、編寫與每個GUI組件相聯(lián)系的事件回調(diào)函數(shù)。3.3.3GUI應用實例【例3.3.1】創(chuàng)建一個簡單的GUI程序,在圖形用戶界面上通過按鈕控制顯示正弦曲線或余弦曲線。1.在MATLABcommand窗口輸入guide命令,創(chuàng)建一空的GUI程序。通過鼠標左鍵拖動GUI設計區(qū)右下角的小方形控制點將GUI顯示窗口放置到合適大小。然后點擊工具欄中的“pushbotton”按鈕和“Axes”按鈕,在設計區(qū)分別產(chǎn)生三個pushbotton組件按鈕、一個axes坐標軸。2.右擊第一個“pushbotton”組件對象打開其屬性編輯器“PropertyInspector”,將其String屬性設置為“正弦曲線”,將其Tag屬性置為“sinx”;右擊第二個“pushbotton”組件對象打開其屬性編輯器“PropertyInspector”,將其String屬性設置為“余弦曲線”,將其Tag屬性置為“cosx”;右擊第三個“pushbotton”組件對象打開其屬性編輯器“PropertyInspector”,將其String屬性設置為“關閉”,將其Tag屬性置為“close”;組件的其它屬性如按鈕上字體、字號大小等都可根據(jù)情況適當設置或為默認值。3.在GUI開發(fā)環(huán)境選擇File/Saveas菜單,將程序以名稱“MyFirstGui”保存在指定目錄內(nèi),這時在指定目錄會生成兩個文件MyFirstGui.m和MyFirstGui.fig。4.通過上述幾步操作,guide已經(jīng)自動生成了GUI的輸入及輸出響應過程,同時生成了尚未添加回調(diào)函數(shù)代碼的程序。在MyFirstGui函數(shù)內(nèi)添加代碼過程如下:(1)在function
sinx_Callback(hObject,eventdata,handles)內(nèi)添加以下代碼:x=0:pi/10:2*pi;y=sin(x);
plot(x,y);gridon;(2)在functioncosx_Callback(hObject,eventdata,handles)內(nèi)添加以下代碼:x=0:pi/10:2*pi;y=cos(x);plot(x,y,'r');gridon;(3)在functionclose_Callback(hObject,eventdata,handles)內(nèi)添加以下代碼:
close;編輯完成并保存,選擇菜單“Tool”→“Run”,得到如圖3.27所示圖形用戶界面,再用鼠標點擊“正弦曲線”按鈕、“余弦曲線”按鈕或“關閉”按鈕,就可看到點擊不同按鈕時,圖形曲線的不同了。圖3.27運行界面
例
創(chuàng)建一個用戶界面,使用單選按鈕選擇正弦函數(shù)的幅值,使用復選框輸入正弦函數(shù)的時間范圍,正弦函數(shù)的行向量在文本框中顯示。在pushbutton1_Callback回調(diào)函數(shù)中添加程序代碼為:functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)ch_1=get(handles.checkbox1,'value');ch_2=get(handles.checkbox2,'value');ifch_1==1ifch_2==1x=0:10;elsex=0:5;endelseifch_2==1x=5:10;elsex=0;endendra_1=get(handles.radiobutton1,'value');ra_2=get(handles.radiobutton2,'value');ifra_1==1a=5;elsea=10;endy=a*sin(x);set(handles.edit1,'string',num2str(y));3.4MATLAB數(shù)字圖像處理圖像處理就是將圖像轉(zhuǎn)換為一數(shù)字矩陣的形式,并采用一定的算法對其進行的必要計算,以提高圖像的視覺質(zhì)量或提取出有用信息的過程。MATLAB包含了功能非常強大的圖像處理工具箱-IPT(ImageProcessingTools)。本節(jié)主要介紹數(shù)字圖像的概念、表示、讀取、顯示與存儲技術,后面幾節(jié)分別介紹一些常用圖像處理技術及其在MATLAB中的實現(xiàn)方法。3.4.1數(shù)字圖像的概念
從圖像處理的角度來看,則可以分為模擬和數(shù)字兩大類,前者包括光學系統(tǒng)成像、膠片影像等,后者是將模擬圖像經(jīng)抽樣離散化處理后形成的、計算機能夠辨識的點陣圖像。數(shù)字圖像存在的形式就是存儲在硬盤等介質(zhì)中的數(shù)字化后的二維數(shù)組?,F(xiàn)代數(shù)字圖像與模擬圖像相比具有不可比擬的優(yōu)點,突出表現(xiàn)在易于存儲、便于處理、傳輸方便、高抗擾性和易于加密等。3.4.2數(shù)字圖像的表示
在圖像處理工具箱中,一幅灰度圖像表示為如下矩陣形式:fij代表像素(i,j)的亮度值,其范圍是從0~255,0表示黑,255表示白。彩色圖像是用紅、綠、藍三組二維矩陣來表示的,這時的f記為:[f(x,y)r,f(x,y)g,f(x,y)b],其中三組中的每個數(shù)值的范圍都是0~255。3.4.3圖像格式與圖像類型圖像格式是指用來存儲圖像的文件格式。圖像格式通常有好多種,常因操作系統(tǒng)和圖像處理軟件的不同而有所區(qū)別,但總的發(fā)展趨勢是格式變得更加統(tǒng)一。MATLAB圖像處理工具箱中常用的圖像格式如表3-7所示。格式名稱擴展名格式描述JPEG.jpg.jpeg靜止圖像格式BMP.bmpWindows位圖TIFF.tif,.tiff加標識信息的圖像文件格式GIF.gif圖形交換格式PNG.png可移植網(wǎng)絡圖形格式XWD.xwdXWindow存儲圖形格式表3-7MATLAB中常用圖像/圖形格式
與圖像格式的定義不同,圖像類型是依圖像數(shù)組中數(shù)值與像素顏色之間的關系不同而對圖像進行的分類。圖像類型主要可分為四種:灰度圖像、索引圖像、二值圖像及RGB圖像。需要說明的是,在MATLAB中,無論是哪種類型的圖像,其存儲格式通常不外乎三種,即:uint8(8位無符號整型數(shù))、uint16(16位無符號整型數(shù))及double(雙精度數(shù)浮點數(shù))。1.灰度圖像灰度圖像是一個數(shù)據(jù)矩陣,該矩陣的每一個元素對應于圖像中的一個像素點(pixel),元素的值代表一定范圍的灰度級。對于uint8類型的圖像,則灰度取值范圍為[0,255];對于uint16類型的圖像,則灰度取值范圍為[0,65535];對double類型的,則像素的取值為浮點數(shù)?;叶葓D像一般不自帶調(diào)色板,而使用默認的系統(tǒng)調(diào)色板。2.索引圖像索引圖像是一種把圖像像素值直接作為RGB調(diào)色板下標的圖像。通常索引圖像與灰度圖像的最大區(qū)別在于,一幅索引圖像除了包括圖像數(shù)據(jù)矩陣以外,還包含一個圖像調(diào)色板。調(diào)色板以256×d矩陣表示(d為色彩空間維度)?;叶人饕龍D像調(diào)色板最多只能有256種顏色。而RGB圖像轉(zhuǎn)換成索引圖像時,系統(tǒng)會自動根據(jù)圖像上的顏色為每個顏色分量歸納出能代表分量灰度的256種顏色,然后用256×3個不同灰度分量的組合來精確描述圖像上任一像素點的顏色信息。索引圖像主要用于網(wǎng)絡上的圖片傳輸和一些對圖像像素、大小等有嚴格要求的地方。3.二值圖像二值圖像是由0和1兩種邏輯值數(shù)組組成的數(shù)字圖像,邏
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國橡膠套塞行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國板藍根市場未來發(fā)展預測及消費規(guī)模調(diào)查報告
- 2025-2030年中國機車油行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國機場看臺行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國未塑化的聚氯乙烯(UPVC)窗戶行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國曲棍球草皮鞋行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 行政法學政策分析題目及答案
- 2025-2030年中國時裝鞋市場深度調(diào)研及發(fā)展策略研究報告
- 2025-2030年中國無網(wǎng)連接三相電能智能表行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國施工升降機專用變頻器行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 物理化學知到智慧樹章節(jié)測試課后答案2024年秋華東理工大學
- 裝修代售合同范文
- 行政倫理學-終結性考核-國開(SC)-參考資料
- 【語文課件】古代英雄的石像課件
- 氣管插管患者的護理查房
- 醫(yī)院改造項目合同模板
- 3D數(shù)字游戲藝術-2-測量分評分表-3D建模-30分
- 髖關節(jié)內(nèi)固定術后護理
- 換濾芯合同(2篇)
- 第01講 力、重力、彈力(解析版)-2024全國初中物理競賽試題編選
- 2024至2030年中國1200伏碳化硅MOSFET市場現(xiàn)狀研究分析與發(fā)展前景預測報告
評論
0/150
提交評論