版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章MATLAB圖形圖像處理
MATLAB不僅具有強(qiáng)大的矩陣計(jì)算能力,也具有強(qiáng)大的圖形圖像處理能力,它能將雜亂無章的數(shù)據(jù)通過圖形圖像的形式表現(xiàn)出來,使我們更直觀地了解這些數(shù)據(jù)的變化趨勢(shì)、變化規(guī)律以及它們的內(nèi)在聯(lián)系。
數(shù)字圖像處理就是通過計(jì)算機(jī)對(duì)圖像進(jìn)行去除噪聲、增強(qiáng)、復(fù)原、分割和特征提取等處理的理論、方法和技術(shù)。目前的圖形圖像處理技術(shù)在航天、遙測(cè)、電視廣播、網(wǎng)絡(luò)媒體、現(xiàn)代醫(yī)學(xué)及軍事等眾多領(lǐng)域都得到了廣泛應(yīng)用,并且取得了巨大的成就。
本章對(duì)圖形圖像處理的基本概念、基本內(nèi)容、命令格式和函數(shù)進(jìn)行介紹,主要從二維圖形的繪制、三維圖形的繪制、圖像的獲取及處理等三個(gè)方面進(jìn)行闡述,為圖形圖像處理在MATLAB中的應(yīng)用打下良好的基礎(chǔ)。3.1二維圖形的繪制3.2三維曲線作圖3.3圖形用戶界面3.4MATLAB數(shù)字圖像處理3.5圖像的灰度變換與直方圖3.6圖像的增強(qiáng)濾波3.7圖像的空間變換3.8圖像邊緣檢測(cè)與分割3.1二維圖形的繪制用MATLAB繪圖命令可以在圖形窗口內(nèi)畫出各種圖形曲線,并使用不同的線型、顏色、點(diǎn)型和標(biāo)注來修飾這些圖形曲線。
繪圖的一般步驟
1.曲線數(shù)據(jù)準(zhǔn)備2.指定圖形窗口和子圖位置3.繪制圖形4.設(shè)置坐標(biāo)軸和圖形注釋5.僅對(duì)三維圖形使用的著色和視點(diǎn)等設(shè)置6.圖形的精細(xì)修飾7.按指定格式保存或?qū)С鰣D形3.1.1直角坐標(biāo)系中的繪圖plot命令:可用來繪制直角坐標(biāo)系中的各種曲線.它的主要格式為:plot(y)plot(x,y)plot(x,y,’s’)plot()函數(shù)的應(yīng)用形式:
①若y是向量,則plot(y)在直角坐標(biāo)系中繪制出一條二維曲線:以y中元素的個(gè)數(shù)作為橫坐標(biāo),以y中元素的值作為縱坐標(biāo),在直角坐標(biāo)系中畫點(diǎn),各點(diǎn)以直線連接。
②若y是m×n的矩陣,則繪制n條二維曲線:每條曲線由m個(gè)點(diǎn)確定,橫坐標(biāo)是矩陣行數(shù),縱坐標(biāo)是每一列的元素.例:運(yùn)行下面的程序,畫出圖形。
>>y1=[1324623453];>>y2=[13246;23453];>>plot(y1);plot(y2);
①如果x和y是向量,要求其具有相同長(zhǎng)度,命令plot(x,y)將繪出以x元素為橫坐標(biāo)、y元素為縱坐標(biāo)的一條曲線。②若x和y一個(gè)為向量,一個(gè)為m×n的矩陣,則要求向量的長(zhǎng)度等于m或n,共繪制n或m條曲線。
③若x和y都是矩陣時(shí):大小必須相同,矩陣x的每列與y的每列畫一條曲線。圖示yxyxxx(1)(3)(2)yx>>x=0:0.2:2*pi;>>y=sin(x);>>plot(x,y);圖3.2正弦曲線圖例:設(shè)x為時(shí)間向量,運(yùn)行下面的程序,畫出以x為橫坐標(biāo),y為縱坐標(biāo)的曲線,如圖所示。例
x是矩陣,分別繪制x與y1和x與y2的曲線,已知y1是向量且長(zhǎng)度與x的行數(shù)相等,y2是矩陣且與x尺寸相同,曲線分別如圖所示。>>x=[1:4;2:5;3:6]x=123423453456>>y1=[123]%y1長(zhǎng)度與x的行數(shù)相等y1=123>>plot(x,y1)>>y2=[1111;2222;3333]y2=111122223333>>plot(x,y2);plot(x,y,’s’)x,y情況和第二種一樣,’s’是圖形的屬性字符串,這些屬性字符串包括三個(gè)方面,第一方面指定圖形曲線的顏色,第二方面指定數(shù)據(jù)點(diǎn)的標(biāo)記類型,第三方面指定線的類型,將在3.1.3節(jié)中介紹。為了讀圖時(shí)了解圖中所表達(dá)的內(nèi)容,還需要增加標(biāo)題、坐標(biāo)軸標(biāo)簽和網(wǎng)格線。用title(標(biāo)題)、xlabel(x軸標(biāo)簽)、ylable(y軸標(biāo)簽)函數(shù)給圖形添加標(biāo)題和坐標(biāo)軸標(biāo)簽。用grid命令可使網(wǎng)格線出現(xiàn)或消失在圖形中,gridon代表在圖形中出現(xiàn)網(wǎng)格線,gridoff代表去除網(wǎng)格線。例:下面的語句將會(huì)產(chǎn)生帶有標(biāo)題,標(biāo)簽和網(wǎng)格線的函數(shù)圖形。結(jié)果如圖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.圖形的打印有時(shí)需要把畫出的圖形打印出來。打印的方法是在圖形Figure窗口內(nèi),在File菜單中選擇“Print…”打印項(xiàng)就可以打印輸出了。另外還可以通過“PrintSetup…”打印設(shè)置窗口進(jìn)行設(shè)置打印到紙還是文件,并可以進(jìn)行“PageSetup…”頁(yè)面設(shè)置、“PrintPreview…”打印預(yù)覽等。2.圖形的輸出在MATLAB中導(dǎo)出圖形文件使用菜單“File”→“ExportSetup…”。圖形文件的保存格式有fig、bmp、jpg等常用圖形文件格式。在圖形Figure窗口內(nèi),Edit菜單中選擇“CopyFigure”項(xiàng)就可以將圖形窗口中顯示的曲線復(fù)制下來,粘貼到其他文檔中了
.3.1.3線型、點(diǎn)型、顏色MATLAB會(huì)自動(dòng)根據(jù)默認(rèn)設(shè)置的顏色(藍(lán)色)和線型(實(shí)線)畫出曲線。如果用戶對(duì)線型的默認(rèn)值不滿意,可以用命令/函數(shù)控制線型,也可以根據(jù)需要選取不同的數(shù)據(jù)點(diǎn)的形狀,格式為
plot(x,y,’s’)‘s’是對(duì)線和數(shù)據(jù)點(diǎn)的設(shè)置,其參數(shù)如表3-1所示。注釋:m-magentac-cyans-squared-diamondp-pentagramh-hexagram例3.1.1
函數(shù)y=x2-10x+6的圖形,曲線為紅色的虛線,數(shù)據(jù)點(diǎn)用藍(lán)色的圓圈表示。x=0:1:10;y=x.^2-10*x+6;plot(x,y,'r--',x,y,'bo');圖3.4不同線型、點(diǎn)型和顏色的圖形
為了說明圖中曲線的名稱或類型,用legend命令來制作圖例?;靖袷绞牵?/p>
legend('string1','string2',...,pos)
其中string1,string2,…是圖形中曲線圖例的字符串,說明對(duì)應(yīng)曲線的名稱或類型,而pos是一個(gè)整數(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同一坐標(biāo)系內(nèi)多條曲線的繪制在一張圖形窗口的同一坐標(biāo)系上繪制多條曲線的方法有4種.1.使用plot(x,[y1;y2;…])例:運(yùn)行下列程序x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,[y1;y2]);legend('sinx','cosx');圖3.5同一窗口多條曲線的繪制
這種方法的缺點(diǎn)是:所有的變量要有相同的長(zhǎng)度和相同的自變量向量,而且也不便于對(duì)各條曲線分別設(shè)定線型和顏色。2.使用hold命令
在畫完前一張圖后,用holdon命令保持住,再畫下一條曲線.例如鍵入下列程序x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,y1);holdon;
執(zhí)行此程序時(shí),圖形窗口產(chǎn)生第一幅圖形,同時(shí)圖形處于保持狀態(tài)。再鍵入plot(x,y2,‘r’),就把第二幅以紅色的曲線畫在圖上。用這種方法時(shí),兩張圖各自的自變量長(zhǎng)度可以各不相同,只要每張圖各自的自變量和因變量同長(zhǎng)即可。注意:使用holdon以后的圖形都會(huì)在此圖上繪制,如果想將圖形繪制在新的圖形窗口中,可以鍵入holdoff命令及時(shí)解除保持狀態(tài)。
3.在plot后使用多輸入變量
使用這種方法,其語句格式:
plot(x1,y1,x2,y2,…,xn,yn)
該語句中xl、y1、x2、y2等分別為向量對(duì)。每一向量對(duì)可以繪出一條曲線,這樣就可以在一張圖上畫出多條曲線,每一向量對(duì)的長(zhǎng)度可以不同,在其后面都可加線型和顏色標(biāo)志符。x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,y1,'go',x,y2,'r:');title('線型、點(diǎn)型和顏色');xlabel('時(shí)間'),ylabel('Y');gridon;圖3.6多條曲線的繪制
其中一條曲線在數(shù)據(jù)點(diǎn)處用綠色的圓圈作標(biāo)記,另一條曲線用紅色的點(diǎn)線繪制。對(duì)于單引號(hào)中的字符串,MATLAB只作為一種代碼來傳遞,因此MATLAB可以把漢字標(biāo)注在圖上。4.使用plotyy命令
plotyy設(shè)有兩個(gè)縱坐標(biāo),以便繪制兩個(gè)y尺度不同的變量,但x仍用同一個(gè)比例尺,例如,鍵入圖3.7雙縱坐標(biāo)圖形
得到如圖3.7所示圖形,其中左縱坐標(biāo)是對(duì)y1(值0~1)的,而右縱坐標(biāo)是對(duì)y2(值0~5)的,
x=-pi:pi/20:pi;y1=sin(x);y2=5*cos(x);plotyy(x,y1,x,y2);gridon;
gtext命令縱坐標(biāo)軸和曲線的標(biāo)注可用gtext命令來放置。
gtext('x');gtext('y1');gtext('y2');gtext命令用鼠標(biāo)拖動(dòng)來確定標(biāo)注文字的位置,用起來比較方便。3.1.5多個(gè)圖形窗口在計(jì)算機(jī)圖形屏幕上可以同時(shí)打開幾個(gè)圖形窗口,也可以在一個(gè)圖形窗口內(nèi)繪制幾幅子圖,并且這幾幅分圖可用不同的坐標(biāo)顯示。
1.多個(gè)圖形窗口的創(chuàng)建MATLAB可以創(chuàng)建不同標(biāo)號(hào)的多個(gè)圖形窗口。函數(shù)格式是:figure(n);其中n代表打開第n個(gè)圖形窗口。當(dāng)這個(gè)函數(shù)被執(zhí)行后,圖n將會(huì)變?yōu)楫?dāng)前圖形窗口,執(zhí)行所有的畫圖命令。MATLAB默認(rèn)打開“Figure1”窗口。相關(guān)的其他函數(shù):
gcf函數(shù)用于返回當(dāng)前圖形窗口數(shù)。
clf命令用于清除當(dāng)前圖形窗口的內(nèi)容。
close命令用于關(guān)閉圖形窗。2.子圖形窗口在一個(gè)圖形窗口內(nèi)可以創(chuàng)建出多個(gè)子圖形窗口。創(chuàng)建子圖形窗口的命令格式是:subplot(m,n,p)
該命令在當(dāng)前窗口內(nèi)創(chuàng)建m行×n列個(gè)子圖形窗口,p表示當(dāng)前第p個(gè)子圖形窗口。這些子窗口以從左向右從上到下編號(hào)。
eg.subplot(2,3,4)
例如運(yùn)行下列程序,結(jié)果如圖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多個(gè)子窗口的圖形3.1.6對(duì)數(shù)坐標(biāo)圖形在直角坐標(biāo)系中的坐標(biāo)軸默認(rèn)為線性刻度,此外也可以用對(duì)數(shù)刻度,如果在x、y軸上使用這兩種刻度的一種或兩種,可組合形成下列4種不同的坐標(biāo)系:plot函數(shù)的x,y均用線性刻度semilogx函數(shù)x軸用對(duì)數(shù)刻度,y軸將用線性刻度semilogy函數(shù)x軸用線性刻度,y軸用對(duì)數(shù)刻度loglog函數(shù)兩坐標(biāo)軸都用對(duì)數(shù)刻度。
這四個(gè)函數(shù)在意義上是等價(jià)的,只是坐標(biāo)軸的類型不同,運(yùn)行下面的程序,將顯示如圖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軸對(duì)數(shù)刻度、y軸線性刻度');subplot(2,2,3);semilogy(x,y);gridon;xlabel('c)x軸線性刻度、y軸對(duì)數(shù)刻度');subplot(2,2,4);loglog(x,y);gridon;xlabel(‘d)x、y軸對(duì)數(shù)刻度');圖3.9各種坐標(biāo)軸刻度圖形
3.1.7坐標(biāo)軸上下限的設(shè)置MATLAB可根據(jù)輸入數(shù)據(jù)的大小自動(dòng)設(shè)置坐標(biāo)軸的大小,用戶也可以根據(jù)需要用axis命令/函數(shù)自行設(shè)置坐標(biāo)比例并選擇圖形邊界范圍,即允許用戶設(shè)置x、y軸上值的范圍,axis命令/函數(shù)的使用形式如表3-3所示。命
令功
能
或
意
義v=axis此命令/函數(shù)返回4個(gè)數(shù)據(jù)[xmin
xmax
ymin
ymax],分別表示x,y軸的上下限范圍axis([xmin
xmax
ymin
ymax])xmin
xmax設(shè)定橫軸x的下限及上限,ymin
ymax設(shè)定縱軸y的下限及上限axisequal橫軸、縱軸的長(zhǎng)度設(shè)置等長(zhǎng)刻度axissquare產(chǎn)生正方形坐標(biāo)值axisnormal以預(yù)設(shè)值畫縱軸及橫軸axisoff將縱軸及橫軸取消axison打開所有的軸背景(默認(rèn)情況)eg.畫一個(gè)球體sphere(25)pauseaxisequalpauseaxisnormalpauseaxissquarepauseaxisnormaleg.畫出函數(shù)f(x)=sin(x)從-2π到2π之間兩個(gè)周期的圖形曲線,如圖3.10所示,然后設(shè)置坐標(biāo)的區(qū)域?yàn)?≤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的圖形
獲取當(dāng)前圖形中坐標(biāo)軸的上下限,鍵入axis命令可得到當(dāng)前圖形中坐標(biāo)軸的x、y的范圍。>>axisans=-88-11重新設(shè)置坐標(biāo)軸的上下限,使它在[0pi01]范圍內(nèi)顯示曲線。>>axis([0pi01])圖3.11畫圖區(qū)域?yàn)椋?π01]的曲線
3.1.8極坐標(biāo)下的繪圖
MATLAB中包括一個(gè)重要的函數(shù)叫做polar,它用于在極坐標(biāo)系中畫圖?;靖袷饺缦拢簆olar(theta,r)其中theta代表一個(gè)弧度角數(shù)組,r代表離原點(diǎn)的距離數(shù)組。
eg.運(yùn)行下列程序,將得到如圖所示的結(jié)果。theta=0:pi/20:2*pi;r=0.5+cos(theta);polar(theta,r);3.1.9復(fù)數(shù)的繪圖由于復(fù)數(shù)數(shù)據(jù)既包括實(shí)部又包括虛部,所以在MATLAB中復(fù)數(shù)數(shù)據(jù)的繪圖與普通實(shí)數(shù)數(shù)據(jù)的繪圖有所區(qū)別。分3種情況。1.plot(z)
z為復(fù)數(shù)變量時(shí)(即含有非零的虛部),把復(fù)數(shù)的實(shí)部作為橫坐標(biāo)、虛部作為縱坐標(biāo)進(jìn)行繪圖,即相當(dāng)于plot(real(z),imag(z))。例如繪制下面函數(shù)曲線:y(t)=e0.1t(cost+isint)運(yùn)行下面的程序,將得到如圖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)相當(dāng)于plot(t,real(z)),即橫坐標(biāo)為t,縱坐標(biāo)為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只有實(shí)部的圖形
在復(fù)平面內(nèi)分別繪制函數(shù)的實(shí)部和虛部曲線,則須用holdon命令.
eg.運(yùn)行下列語句,在相同的時(shí)間軸內(nèi)畫出函數(shù)的實(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ù)實(shí)部和虛部的圖形3.
polar(theta,r)
極坐標(biāo)系下繪圖,其中theta表示虛部和實(shí)部形成的夾角,r為數(shù)據(jù)點(diǎn)到原點(diǎn)之間的距離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)的極坐標(biāo)圖
3.1.10特殊二維圖形的繪制在直角坐標(biāo)系中,除了上面我們已經(jīng)看到的各種曲線圖形外,MATLAB還支持其它的一些特殊圖形:
火柴桿圖(stem)、階梯圖(stair)條形圖(bar)、餅圖(pie)羅盤圖(compass)、直方圖(hist)函數(shù)描述bar(x,y)繪制垂直的條形圖barh(x,y)繪制水平的條形圖compass(x,y)繪制極坐標(biāo)圖,它的每一個(gè)值都用箭頭表示,從原點(diǎn)指向(x,y)pie(x)pie(x,explode)繪制一個(gè)餅狀圖,x代表占總數(shù)的百分?jǐn)?shù)explode用來確定是否從餅圖中分離對(duì)應(yīng)的一部分塊stairs(x,y)繪制階梯圖,每一個(gè)階梯階躍點(diǎn)為點(diǎn)(x,y)stem(x,y)繪制一個(gè)火柴桿圖hist(y)繪制直方圖表3-4特殊二維圖形的類型
火柴桿圖、階梯圖、條形圖、餅圖、羅盤圖與普通的圖形差不多,它們的調(diào)用方式相同。例如,下面是一個(gè)火柴桿圖的程序。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)計(jì)的功能。hist(y,n)
%統(tǒng)計(jì)每段的元素個(gè)數(shù)并畫出直方圖N=hist(y,x)
%統(tǒng)計(jì)出每段元素個(gè)數(shù)說明:n為分段的個(gè)數(shù),n省略時(shí)則默認(rèn)為分成10段;x是向量,用于指定所分每個(gè)數(shù)據(jù)段的中間值;y可以是向量或矩陣,如果是矩陣則按列分段;N是每段元素個(gè)數(shù),N可省略,省略時(shí)繪制圖形。直方圖例
繪制直方圖統(tǒng)計(jì)并顯示數(shù)據(jù),如圖所示。x=randn(100,1);%產(chǎn)生100個(gè)正態(tài)分布的隨機(jī)數(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))%計(jì)算1.5~2.5間的元素個(gè)數(shù)餅圖pie(y,explode)
explode是一個(gè)邏輯數(shù)組,其數(shù)值為1或0。如果explode的值為1,那么它對(duì)應(yīng)的扇區(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ù)進(jìn)行三維曲線的作圖,這個(gè)函數(shù)與二維plot函數(shù)非常相似,每一個(gè)點(diǎn)是用x,y,z三個(gè)數(shù)來表示,它的格式是:
plot3(x,y,z,’s’);
其中x、y、z是個(gè)數(shù)相等的數(shù)組,組成了點(diǎn)的3維坐標(biāo),s為線型、點(diǎn)型、顏色字符串,函數(shù)plot3提供了和plot函數(shù)相同的線型,點(diǎn)型和顏色。
例如繪制二維機(jī)械系統(tǒng)振蕩衰減情況的曲線,x、y有一相同的自變量t,x、y代表在時(shí)刻t系統(tǒng)的位置。利用plot3函數(shù)畫出時(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三維坐標(biāo)圖形
3.2.2三維表面、網(wǎng)格、等高線圖形的繪制函數(shù)描述mesh(x,y,z)繪制三維網(wǎng)格圖形。其中數(shù)組x包括要畫得每一點(diǎn)的x值,數(shù)組y包括要畫得每一點(diǎn)的y值,數(shù)組z包括要畫得每一點(diǎn)的z值surf(x,y,z)繪制三維表面圖形contour(x,y,z)繪制三維等高線圖形
三維繪圖時(shí)需要已知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)建一個(gè)三維圖形,首先用meshgrid函數(shù)來建立x、y的值,然后通過表面、網(wǎng)格、等高線函數(shù)計(jì)算(x,y)相對(duì)應(yīng)的z值,最后再調(diào)用函數(shù)mesh、surf或contour來創(chuàng)建圖形。例如,繪制下面函數(shù)的網(wǎng)格圖形,x、y的取值分別為[-4,4]和[-4,4]?!纠?.2.2】運(yùn)行下面程序,將畫出這個(gè)三維網(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動(dòng)畫的制作MATLAB的動(dòng)畫可以有兩種方式得到:電影方式和對(duì)象方式。
①電影方式用到以下命令:
moviein、getframe和movie用getframe把MATLAB產(chǎn)生的圖形存儲(chǔ)下來,每個(gè)圖形成一個(gè)很長(zhǎng)的列向量,N行列向量可以保存N幅畫面,成為一個(gè)較大矩陣。再用movie命令把它們連起來重放,就可以產(chǎn)生動(dòng)畫效果。moviein用來預(yù)留存儲(chǔ)空間以加快運(yùn)行的速度?!纠?.2.3】運(yùn)行下面的動(dòng)畫程序,將動(dòng)態(tài)顯示如圖3.23所示效果。axisequal;%把坐標(biāo)軸設(shè)成相等比例
M=moviein(15);%為變量M預(yù)留15幅圖的存儲(chǔ)空間
forj=1:15plot(fft(eye(j+1)));
M(:,j)=getframe;end;運(yùn)行上述程序,15幅畫面就存放在矩陣M中了。再鍵入命令movie(M,10);MATLAB就把M中的圖形播放10次,形成動(dòng)畫效果。圖3.23動(dòng)畫的制作
②以對(duì)象方式創(chuàng)建動(dòng)畫創(chuàng)建動(dòng)畫的步驟如下:(1)繪制背景圖(2)設(shè)置對(duì)象擦除屬性設(shè)置動(dòng)作對(duì)象的擦除屬性,擦除屬性EraseMode有四種,normal是重畫整個(gè)圖形,background是擦除背景,會(huì)擦除對(duì)象和它下面的其他圖像;xor是只畫與背景色不一致的新對(duì)象點(diǎn),擦除不一致的原對(duì)象點(diǎn),通常這種方式用來創(chuàng)建動(dòng)畫;none是不做任何擦除。(3)確定對(duì)象的新位置計(jì)算得出動(dòng)作對(duì)象每次的新位置,設(shè)置對(duì)象的xdata,ydata和zdata屬性。(4)刷新屏幕繪制了新對(duì)象后應(yīng)該刷新屏幕,使新對(duì)象顯示出來,刷新屏幕用drawnow命令實(shí)現(xiàn)。例
以對(duì)象方式創(chuàng)建動(dòng)畫,顯示一個(gè)紅色圓點(diǎn)沿三維曲線移動(dòng)的動(dòng)畫。x=0:0.1:20*pi;p=plot3(sin(x),cos(x),x);%在起點(diǎn)定義一個(gè)紅色的圓點(diǎn)并設(shè)置擦除方式h=line(0,1,0,'color','red','marker','.',…'markersize',20,'erasemode','xor');fork=0:0.1:20*pi;
%設(shè)定紅點(diǎn)的新位置
set(h,'xdata',sin(k),'ydata',cos(k),'zdata',k);
drawnow;end3.3圖形用戶界面
圖形用戶界面(GraphicalUserInterface,簡(jiǎn)稱GUI)是一種圖形化的程序接口,是MATLAB和用戶進(jìn)行直接交互的重要手段。一個(gè)好的GUI程序給用戶提供一個(gè)良好的交互界面及豐富的控制按鈕,操作方便、快捷。MATLAB圖形用戶界面的設(shè)計(jì)方法有兩種,一種是使用可視化的界面編輯環(huán)境通過控件設(shè)計(jì)來實(shí)現(xiàn),另外一種是通過編寫程序?qū)崿F(xiàn),本節(jié)主要介紹使用可視化的界面編輯環(huán)境來設(shè)計(jì)圖形用戶界面。3.3.1GUI工作機(jī)制MATLAB的圖形用戶界面(GUI)是用戶與計(jì)算機(jī)程序之間的一種可視化交互方式。創(chuàng)建MATLAB用戶圖形界面必須包含三類基本元素:1.組件(Component)2.圖形窗口(Figure)3.響應(yīng)或回調(diào)函數(shù)(Callback)表3-6常用GUI組件元
素描
述圖形化控件PushbuttonTogglebuttonRadiobuttonCheckboxEditboxListboxPopupmenusSlider普通按鈕切換按鈕單選按鈕復(fù)選框編輯框列表框彈出菜單滾動(dòng)條靜態(tài)元素FrameTextfield窗口文本字符串菜單和坐標(biāo)系MenuitemsContextmenusaxes下拉菜單上下文菜單坐標(biāo)3.3.2創(chuàng)建GUI的基本步驟
在MATLAB中,圖形用戶界面(GUI)程序是通過GUI開發(fā)環(huán)境——guide命令來創(chuàng)建的。打開GUI的方法有兩種:(1)啟動(dòng)MATLAB后,選擇菜單“File”→“New”→“GUI”命令;(2)在MATLAB的命令窗口內(nèi),鍵入“guide”命令,出現(xiàn)如圖3.24所示界面。圖3.24guide快速開始界面
圖3.25可視化的圖形用戶窗口
若新建空白的圖形用戶界面則選擇“BlankGUI(Default)”,界面如下:根據(jù)需要在圖3.25所示的圖形用戶窗口上編輯各種按鈕、編輯框等對(duì)象構(gòu)成一個(gè)美觀友好的界面了,其GUI創(chuàng)建的基本步驟為如下五步:1.首先要決定GUI程序需要哪些組件及每個(gè)組件的功能如何,在紙上大致繪制一幅圖形,幫助分析和設(shè)計(jì);2.運(yùn)行g(shù)uide命令,產(chǎn)生一個(gè)窗口編輯器,其左側(cè)有一個(gè)GUI組件欄,用戶可以通過選中和拖放操作把設(shè)計(jì)所需要的組件放置在窗口編輯器中,并通過GUI編輯窗口頂部工具欄中的工具來調(diào)整GUI窗口的尺寸、組件對(duì)齊方式、空間布局等;3.通過GUI開發(fā)環(huán)境調(diào)用組件屬性編輯器,對(duì)組件命名、“Tag”屬性命名、并設(shè)置組件的字體、尺寸、顏色、顯示文本等屬性;4.保存圖形編輯窗口,將在指定的路徑中產(chǎn)生兩個(gè)擴(kuò)展名分別為“.fig”和“.m”的同名文件。擴(kuò)展名為.fig的文件包含了當(dāng)前的GUI圖形界面內(nèi)容,擴(kuò)展名為.m的文件包含了調(diào)用該圖形窗口的程序代碼及每個(gè)GUI組件的回調(diào)函數(shù);5、編寫與每個(gè)GUI組件相聯(lián)系的事件回調(diào)函數(shù)。3.3.3GUI應(yīng)用實(shí)例【例3.3.1】創(chuàng)建一個(gè)簡(jiǎn)單的GUI程序,在圖形用戶界面上通過按鈕控制顯示正弦曲線或余弦曲線。1.在MATLABcommand窗口輸入guide命令,創(chuàng)建一空的GUI程序。通過鼠標(biāo)左鍵拖動(dòng)GUI設(shè)計(jì)區(qū)右下角的小方形控制點(diǎn)將GUI顯示窗口放置到合適大小。然后點(diǎn)擊工具欄中的“pushbotton”按鈕和“Axes”按鈕,在設(shè)計(jì)區(qū)分別產(chǎn)生三個(gè)pushbotton組件按鈕、一個(gè)axes坐標(biāo)軸。2.右擊第一個(gè)“pushbotton”組件對(duì)象打開其屬性編輯器“PropertyInspector”,將其String屬性設(shè)置為“正弦曲線”,將其Tag屬性置為“sinx”;右擊第二個(gè)“pushbotton”組件對(duì)象打開其屬性編輯器“PropertyInspector”,將其String屬性設(shè)置為“余弦曲線”,將其Tag屬性置為“cosx”;右擊第三個(gè)“pushbotton”組件對(duì)象打開其屬性編輯器“PropertyInspector”,將其String屬性設(shè)置為“關(guān)閉”,將其Tag屬性置為“close”;組件的其它屬性如按鈕上字體、字號(hào)大小等都可根據(jù)情況適當(dāng)設(shè)置或?yàn)槟J(rèn)值。3.在GUI開發(fā)環(huán)境選擇File/Saveas菜單,將程序以名稱“MyFirstGui”保存在指定目錄內(nèi),這時(shí)在指定目錄會(huì)生成兩個(gè)文件MyFirstGui.m和MyFirstGui.fig。4.通過上述幾步操作,guide已經(jīng)自動(dòng)生成了GUI的輸入及輸出響應(yīng)過程,同時(shí)生成了尚未添加回調(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所示圖形用戶界面,再用鼠標(biāo)點(diǎn)擊“正弦曲線”按鈕、“余弦曲線”按鈕或“關(guān)閉”按鈕,就可看到點(diǎn)擊不同按鈕時(shí),圖形曲線的不同了。圖3.27運(yùn)行界面
例
創(chuàng)建一個(gè)用戶界面,使用單選按鈕選擇正弦函數(shù)的幅值,使用復(fù)選框輸入正弦函數(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ù)字矩陣的形式,并采用一定的算法對(duì)其進(jìn)行的必要計(jì)算,以提高圖像的視覺質(zhì)量或提取出有用信息的過程。MATLAB包含了功能非常強(qiáng)大的圖像處理工具箱-IPT(ImageProcessingTools)。本節(jié)主要介紹數(shù)字圖像的概念、表示、讀取、顯示與存儲(chǔ)技術(shù),后面幾節(jié)分別介紹一些常用圖像處理技術(shù)及其在MATLAB中的實(shí)現(xiàn)方法。3.4.1數(shù)字圖像的概念
從圖像處理的角度來看,則可以分為模擬和數(shù)字兩大類,前者包括光學(xué)系統(tǒng)成像、膠片影像等,后者是將模擬圖像經(jīng)抽樣離散化處理后形成的、計(jì)算機(jī)能夠辨識(shí)的點(diǎn)陣圖像。數(shù)字圖像存在的形式就是存儲(chǔ)在硬盤等介質(zhì)中的數(shù)字化后的二維數(shù)組?,F(xiàn)代數(shù)字圖像與模擬圖像相比具有不可比擬的優(yōu)點(diǎn),突出表現(xiàn)在易于存儲(chǔ)、便于處理、傳輸方便、高抗擾性和易于加密等。3.4.2數(shù)字圖像的表示
在圖像處理工具箱中,一幅灰度圖像表示為如下矩陣形式:fij代表像素(i,j)的亮度值,其范圍是從0~255,0表示黑,255表示白。彩色圖像是用紅、綠、藍(lán)三組二維矩陣來表示的,這時(shí)的f記為:[f(x,y)r,f(x,y)g,f(x,y)b],其中三組中的每個(gè)數(shù)值的范圍都是0~255。3.4.3圖像格式與圖像類型圖像格式是指用來存儲(chǔ)圖像的文件格式。圖像格式通常有好多種,常因操作系統(tǒng)和圖像處理軟件的不同而有所區(qū)別,但總的發(fā)展趨勢(shì)是格式變得更加統(tǒng)一。MATLAB圖像處理工具箱中常用的圖像格式如表3-7所示。格式名稱擴(kuò)展名格式描述JPEG.jpg.jpeg靜止圖像格式BMP.bmpWindows位圖TIFF.tif,.tiff加標(biāo)識(shí)信息的圖像文件格式GIF.gif圖形交換格式PNG.png可移植網(wǎng)絡(luò)圖形格式XWD.xwdXWindow存儲(chǔ)圖形格式表3-7MATLAB中常用圖像/圖形格式
與圖像格式的定義不同,圖像類型是依圖像數(shù)組中數(shù)值與像素顏色之間的關(guān)系不同而對(duì)圖像進(jìn)行的分類。圖像類型主要可分為四種:灰度圖像、索引圖像、二值圖像及RGB圖像。需要說明的是,在MATLAB中,無論是哪種類型的圖像,其存儲(chǔ)格式通常不外乎三種,即:uint8(8位無符號(hào)整型數(shù))、uint16(16位無符號(hào)整型數(shù))及double(雙精度數(shù)浮點(diǎn)數(shù))。1.灰度圖像灰度圖像是一個(gè)數(shù)據(jù)矩陣,該矩陣的每一個(gè)元素對(duì)應(yīng)于圖像中的一個(gè)像素點(diǎn)(pixel),元素的值代表一定范圍的灰度級(jí)。對(duì)于uint8類型的圖像,則灰度取值范圍為[0,255];對(duì)于uint16類型的圖像,則灰度取值范圍為[0,65535];對(duì)double類型的,則像素的取值為浮點(diǎn)數(shù)?;叶葓D像一般不自帶調(diào)色板,而使用默認(rèn)的系統(tǒng)調(diào)色板。2.索引圖像索引圖像是一種把圖像像素值直接作為RGB調(diào)色板下標(biāo)的圖像。通常索引圖像與灰度圖像的最大區(qū)別在于,一幅索引圖像除了包括圖像數(shù)據(jù)矩陣以外,還包含一個(gè)圖像調(diào)色板。調(diào)色板以256×d矩陣表示(d為色彩空間維度)?;叶人饕龍D像調(diào)色板最多只能有256種顏色。而RGB圖像轉(zhuǎn)換成索引圖像時(shí),系統(tǒng)會(huì)自動(dòng)根據(jù)圖像上的顏色為每個(gè)顏色分量歸納出能代表分量灰度的256種顏色,然后用256×3個(gè)不同灰度分量的組合來精確描述圖像上任一像素點(diǎn)的顏色信息。索引圖像主要用于網(wǎng)絡(luò)上的圖片傳輸和一些對(duì)圖像像素、大小等有嚴(yán)格要求的地方。3.二值圖像二值圖像是由0和1兩種邏輯值數(shù)組組成的數(shù)字圖像,邏
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版知識(shí)產(chǎn)權(quán)反擔(dān)保保證合同書2篇
- 2025版土地抵押權(quán)抵押資產(chǎn)證券化合同模板3篇
- 設(shè)備監(jiān)理合同-《設(shè)備監(jiān)理合同管理》押題密卷2
- 土壤污染治理與農(nóng)業(yè)生態(tài)環(huán)境保護(hù)考核試卷
- 唇部護(hù)理產(chǎn)品的選擇與涂抹技巧考核試卷
- 2025年銷售部勞動(dòng)合同加班時(shí)間規(guī)定范本2篇
- 2025年家政服務(wù)服務(wù)調(diào)整協(xié)議
- 2025年度木材行業(yè)綠色認(rèn)證及產(chǎn)品檢測(cè)服務(wù)合同范本4篇
- 2025年婚禮廣告合作協(xié)議
- 二零二五年度房地產(chǎn)項(xiàng)目納稅擔(dān)保及貸款擔(dān)保合同2篇
- 2024年安全教育培訓(xùn)試題附完整答案(奪冠系列)
- 神農(nóng)架研學(xué)課程設(shè)計(jì)
- 文化資本與民族認(rèn)同建構(gòu)-洞察分析
- 2025新譯林版英語七年級(jí)下單詞默寫表
- 《錫膏培訓(xùn)教材》課件
- 唯物史觀課件
- 2021-2022學(xué)年四川省成都市武侯區(qū)部編版四年級(jí)上冊(cè)期末考試語文試卷(解析版)
- 中國(guó)傳統(tǒng)文化服飾文化
- 大氣污染控制工程 第四版
- 淺析商務(wù)英語中模糊語言的語用功能
- 工程勘察資質(zhì)分級(jí)標(biāo)準(zhǔn)和工程設(shè)計(jì)資質(zhì)分級(jí)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論