




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章MATLAB圖形圖像處理第三章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)用,并且取得了巨大的成就。
MATLAB不僅具有強(qiáng)大的矩陣計(jì)算能力,
本章對(duì)圖形圖像處理的基本概念、基本內(nèi)容、命令格式和函數(shù)進(jìn)行介紹,主要從二維圖形的繪制、三維圖形的繪制、圖像的獲取及處理等三個(gè)方面進(jìn)行闡述,為圖形圖像處理在MATLAB中的應(yīng)用打下良好的基礎(chǔ)。本章對(duì)圖形圖像處理的基本概念、基本內(nèi)容、命令格3.1二維圖形的繪制3.2三維曲線作圖3.3圖形用戶界面3.4MATLAB數(shù)字圖像處理3.5圖像的灰度變換與直方圖3.6圖像的增強(qiáng)濾波3.7圖像的空間變換3.8圖像邊緣檢測(cè)與分割3.1二維圖形的繪制3.1二維圖形的繪制用MATLAB繪圖命令可以在圖形窗口內(nèi)畫出各種圖形曲線,并使用不同的線型、顏色、點(diǎn)型和標(biāo)注來修飾這些圖形曲線。
3.1二維圖形的繪制用MATLAB繪圖命令可以在圖繪圖的一般步驟
1.曲線數(shù)據(jù)準(zhǔn)備2.指定圖形窗口和子圖位置3.繪制圖形4.設(shè)置坐標(biāo)軸和圖形注釋5.僅對(duì)三維圖形使用的著色和視點(diǎn)等設(shè)置6.圖形的精細(xì)修飾7.按指定格式保存或?qū)С鰣D形繪圖的一般步驟1.曲線數(shù)據(jù)準(zhǔn)備3.1.1直角坐標(biāo)系中的繪圖plot命令:可用來繪制直角坐標(biāo)系中的各種曲線.它的主要格式為:plot(y)plot(x,y)plot(x,y,’s’)3.1.1直角坐標(biāo)系中的繪圖plot命令:可用來繪制直角坐plot()函數(shù)的應(yīng)用形式: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是向量,則plot(y)在直角坐標(biāo)系中繪制出一例:運(yùn)行下面的程序,畫出圖形。
>>y1=[1324623453];>>y2=[13246;23453];>>plot(y1);plot(y2);例:運(yùn)行下面的程序,畫出圖形。
①如果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的每列畫一條曲線。①如果x和y是向量,要求其具有相同長(zhǎng)度,命令plot(x圖示yxyxxx(1)(3)(2)yx圖示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=0:0.2:2*pi;圖3.2正弦曲例
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)例x是矩陣,分別繪制x與y1和x與y2的曲線,已知y1是向>>y2=[1111;2222;3333]y2=111122223333>>plot(x,y2);>>y2=[1111;2222;3333plot(x,y,’s’)x,y情況和第二種一樣,’s’是圖形的屬性字符串,這些屬性字符串包括三個(gè)方面,第一方面指定圖形曲線的顏色,第二方面指定數(shù)據(jù)點(diǎn)的標(biāo)記類型,第三方面指定線的類型,將在3.1.3節(jié)中介紹。plot(x,y,’s’)x,y情況和第二種一樣,’s’是圖為了讀圖時(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)格線。為了讀圖時(shí)了解圖中所表達(dá)的內(nèi)容,還需要增加標(biāo)題、坐標(biāo)軸標(biāo)簽和例:下面的語句將會(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;例:下面的語句將會(huì)產(chǎn)生帶有標(biāo)題,標(biāo)簽和網(wǎng)格線的函數(shù)圖形。結(jié)果3.1.2圖形的打印和輸出
1.圖形的打印有時(shí)需要把畫出的圖形打印出來。打印的方法是在圖形Figure窗口內(nèi),在File菜單中選擇“Print…”打印項(xiàng)就可以打印輸出了。另外還可以通過“PrintSetup…”打印設(shè)置窗口進(jìn)行設(shè)置打印到紙還是文件,并可以進(jìn)行“PageSetup…”頁面設(shè)置、“PrintPreview…”打印預(yù)覽等。3.1.2圖形的打印和輸出1.圖形的打印2.圖形的輸出在MATLAB中導(dǎo)出圖形文件使用菜單“File”→“ExportSetup…”。圖形文件的保存格式有fig、bmp、jpg等常用圖形文件格式。在圖形Figure窗口內(nèi),Edit菜單中選擇“CopyFigure”項(xiàng)就可以將圖形窗口中顯示的曲線復(fù)制下來,粘貼到其他文檔中了
.2.圖形的輸出在圖形Figure窗口內(nèi),Edit菜單中選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所示。3.1.3線型、點(diǎn)型、顏色MATLAB會(huì)自動(dòng)根注釋:m-magentac-cyans-squared-diamondp-pentagramh-hexagram注釋:m-magentac-cyans-squ例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)型和顏色的圖形
例3.1.1圖3.4不同線型、點(diǎn)型和顏色的圖形
為了說明圖中曲線的名稱或類型,用legend命令來制作圖例?;靖袷绞牵?/p>
legend('string1','string2',...,pos)
其中string1,string2,…是圖形中曲線圖例的字符串,說明對(duì)應(yīng)曲線的名稱或類型,而pos是一個(gè)整數(shù),用來指定圖例的位置。這些整數(shù)所代表的含義如表3-2所示。用legendoff命令將能去除多余的圖例。
為了說明圖中曲線的名稱或類型,用legend命令來制[經(jīng)濟(jì)學(xué)]第3章-MATLAB圖形圖像處理-1課件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;eg.3.1.4同一坐標(biāo)系內(nèi)多條曲線的繪制在一張圖形窗口的同一坐標(biāo)系上繪制多條曲線的方法有4種.3.1.4同一坐標(biāo)系內(nèi)多條曲線的繪制在一張圖形窗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è)定線型和顏色。1.使用plot(x,[y1;y2;…])例:運(yùn)行下列程序2.使用hold命令
在畫完前一張圖后,用holdon命令保持住,再畫下一條曲線.例如鍵入下列程序x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,y1);holdon;
2.使用hold命令在畫完前一張圖后,用hold執(zhí)行此程序時(shí),圖形窗口產(chǎn)生第一幅圖形,同時(shí)圖形處于保持狀態(tài)。再鍵入plot(x,y2,‘r’),就把第二幅以紅色的曲線畫在圖上。用這種方法時(shí),兩張圖各自的自變量長(zhǎng)度可以各不相同,只要每張圖各自的自變量和因變量同長(zhǎng)即可。執(zhí)行此程序時(shí),圖形窗口產(chǎn)生第一幅圖形,同時(shí)圖形處于保持狀態(tài)。注意:使用holdon以后的圖形都會(huì)在此圖上繪制,如果想將圖形繪制在新的圖形窗口中,可以鍵入holdoff命令及時(shí)解除保持狀態(tài)。
注意:使用holdon以后的圖形都會(huì)在此圖上繪制3.在plot后使用多輸入變量
使用這種方法,其語句格式:
plot(x1,y1,x2,y2,…,xn,yn)
該語句中xl、y1、x2、y2等分別為向量對(duì)。每一向量對(duì)可以繪出一條曲線,這樣就可以在一張圖上畫出多條曲線,每一向量對(duì)的長(zhǎng)度可以不同,在其后面都可加線型和顏色標(biāo)志符。3.在plot后使用多輸入變量使用這種方法,其語句格式: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)注在圖上。x=-pi:pi/20:pi;圖3.6多條曲線的繪制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;
4.使用plotyy命令plotyy設(shè)有兩個(gè)縱坐標(biāo),gtext命令縱坐標(biāo)軸和曲線的標(biāo)注可用gtext命令來放置。
gtext('x');gtext('y1');gtext('y2');gtext命令用鼠標(biāo)拖動(dòng)來確定標(biāo)注文字的位置,用起來比較方便。gtext命令縱坐標(biāo)軸和曲線的標(biāo)注可用gtext命令來放置。3.1.5多個(gè)圖形窗口在計(jì)算機(jī)圖形屏幕上可以同時(shí)打開幾個(gè)圖形窗口,也可以在一個(gè)圖形窗口內(nèi)繪制幾幅子圖,并且這幾幅分圖可用不同的坐標(biāo)顯示。
3.1.5多個(gè)圖形窗口在計(jì)算機(jī)圖形屏幕上可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”窗口。1.多個(gè)圖形窗口的創(chuàng)建MATLAB可以創(chuàng)相關(guān)的其他函數(shù):
gcf函數(shù)用于返回當(dāng)前圖形窗口數(shù)。
clf命令用于清除當(dāng)前圖形窗口的內(nèi)容。
close命令用于關(guān)閉圖形窗。相關(guān)的其他函數(shù):gcf函數(shù)用于返回當(dāng)前圖形窗口數(shù)。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)
2.子圖形窗口在一個(gè)圖形窗口內(nèi)可以創(chuàng)建例如運(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è)子窗口的圖形例如運(yùn)行下列程序,結(jié)果如圖3.8所示。figure(2)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所示圖形。3.1.6對(duì)數(shù)坐標(biāo)圖形在直角坐標(biāo)系中的坐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ù)刻度');x=0:0.1:10;圖3.9各種坐標(biāo)軸刻度圖形
圖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所示。3.1.7坐標(biāo)軸上下限的設(shè)置MA命令功能或意義v=axis此命令/函數(shù)返回4個(gè)數(shù)據(jù)[xminxmaxyminymax],分別表示x,y軸的上下限范圍axis([xminxmaxyminymax])xminxmax設(shè)定橫軸x的下限及上限,yminymax設(shè)定縱軸y的下限及上限axisequal橫軸、縱軸的長(zhǎng)度設(shè)置等長(zhǎng)刻度axissquare產(chǎn)生正方形坐標(biāo)值axisnormal以預(yù)設(shè)值畫縱軸及橫軸axisoff將縱軸及橫軸取消axison打開所有的軸背景(默認(rèn)情況)命令功能或意義v=axis此命令/函數(shù)返回4個(gè)數(shù)據(jù)45eg.畫一個(gè)球體sphere(25)pauseaxisequalpauseaxisnormalpauseaxissquarepauseaxisnormaleg.畫一個(gè)球體sphere(25)eg.畫出函數(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的圖形
eg.畫出函數(shù)f(x)=sin(x)從-2π到2π之
獲取當(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]的曲線
獲取當(dāng)前圖形中坐標(biāo)軸的上下限,鍵入axis命令3.1.8極坐標(biāo)下的繪圖
MATLAB中包括一個(gè)重要的函數(shù)叫做polar,它用于在極坐標(biāo)系中畫圖。基本格式如下:polar(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.8極坐標(biāo)下的繪圖MATLA3.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)3.1.9復(fù)數(shù)的繪圖由于復(fù)數(shù)數(shù)據(jù)既包運(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');運(yùn)行下面的程序,將得到如圖3.13所示的曲線。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í)部的圖形
2、plot(t,z)圖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í)部和虛部的圖形在復(fù)平面內(nèi)分別繪制函數(shù)的實(shí)部和虛部曲線,則須用hol3.
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.polar(theta,r)極坐標(biāo)系下繪圖,3.1.10特殊二維圖形的繪制在直角坐標(biāo)系中,除了上面我們已經(jīng)看到的各種曲線圖形外,MATLAB還支持其它的一些特殊圖形:
火柴桿圖(stem)、階梯圖(stair)條形圖(bar)、餅圖(pie)羅盤圖(compass)、直方圖(hist)3.1.10特殊二維圖形的繪制函數(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特殊二維圖形的類型
函數(shù)描述bar(x,y)繪制垂直的條形圖barh(x火柴桿圖、階梯圖、條形圖、餅圖、羅盤圖與普通的圖形差不多,它們的調(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];(b)階梯圖(c)條形圖(d)羅盤圖階梯圖、條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--');stem,stairs用于繪制離散數(shù)據(jù)eg.繪制y=e-t又稱為頻數(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í)繪制圖形。直方圖又稱為頻數(shù)直方圖,適于顯示數(shù)據(jù)集的分布情況并具有統(tǒng)計(jì)的功能。例
繪制直方圖統(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ù)例繪制直方圖統(tǒng)計(jì)并顯示數(shù)據(jù),如圖所示。x=randn(10餅圖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.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)型和顏色。
3.2三維曲線作圖3.2.1三維曲線的繪制例如繪制二維機(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)圖形
例如繪制二維機(jī)械系統(tǒng)振蕩衰減情況的曲線,x、y有一相同的圖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)繪制三維等高線圖形3.2.2三維表面、網(wǎng)格、等高線圖形的繪制函數(shù)描65
三維繪圖時(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的取值范圍。三維繪圖時(shí)需要已知x,y,才能求出z,從而畫圖.函數(shù)m為了創(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]。【例3.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)格圖
為了創(chuàng)建一個(gè)三維圖形,首先用meshgrid函數(shù)來建立x、y表面、等高線圖形類似于mesh函數(shù)的圖形只是把上述程序中的mesh換成surf或contour函數(shù)即可。如圖3.21和3.22所示。圖3.21三維表面圖圖3.22等高線圖表面、等高線圖形類似于mesh函數(shù)的圖形只是把上述程序中的m3.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)行的速度。3.2.3動(dòng)畫的制作MATLAB的動(dòng)畫可以【例3.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中了?!纠?.2.3】運(yùn)行下面的動(dòng)畫程序,將動(dòng)態(tài)顯示如圖3.23所再鍵入命令movie(M,10);MATLAB就把M中的圖形播放10次,形成動(dòng)畫效果。圖3.23動(dòng)畫的制作
再鍵入命令MATLAB就把M中的圖形播放10次,形成動(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)畫創(chuàng)建動(dòng)畫的步驟如下:例
以對(duì)象方式創(chuàng)建動(dòng)畫,顯示一個(gè)紅色圓點(diǎn)沿三維曲線移動(dòng)的動(dòng)畫。例以對(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;endx=0:0.1:20*pi;3.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圖形用戶界面圖形用戶界面(GraphicalUs3.3.1GUI工作機(jī)制MATLAB的圖形用戶界面(GUI)是用戶與計(jì)算機(jī)程序之間的一種可視化交互方式。創(chuàng)建MATLAB用戶圖形界面必須包含三類基本元素:1.組件(Component)2.圖形窗口(Figure)3.響應(yīng)或回調(diào)函數(shù)(Callback)3.3.1GUI工作機(jī)制MATLAB表3-6常用GUI組件元素描述圖形化控件PushbuttonTogglebuttonRadiobuttonCheckboxEditboxListboxPopupmenusSlider普通按鈕切換按鈕單選按鈕復(fù)選框編輯框列表框彈出菜單滾動(dòng)條靜態(tài)元素FrameTextfield窗口文本字符串菜單和坐標(biāo)系MenuitemsContextmenusaxes下拉菜單上下文菜單坐標(biāo)表3-6常用GUI組件元素描述圖形化控件Pushb3.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.3.2創(chuàng)建GUI的基本步驟在MAT圖3.25可視化的圖形用戶窗口
若新建空白的圖形用戶界面則選擇“BlankGUI(Default)”,界面如下:圖3.25可視化的圖形用戶窗口若新建空白的圖形用戶界面根據(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ì)齊方式、空間布局等;根據(jù)需要在圖3.25所示的圖形用戶窗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.通過GUI開發(fā)環(huán)境調(diào)用組件屬性編輯器,對(duì)組件命名、“Ta3.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)軸。3.3.3GUI應(yīng)用實(shí)例【例3.3.1】創(chuàng)建一個(gè)簡(jiǎn)單的G2.右擊第一個(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)值。2.右擊第一個(gè)“pushbotton”組件對(duì)象打開其屬性編輯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)添加代碼過程如下:3.在GUI開發(fā)環(huán)境選擇File/Saveas菜單,將程序(1)在functionsinx_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;(1)在functionsinx_Callback(h編輯完成并保存,選擇菜單“Tool”→“Run”,得到如圖3.27所示圖形用戶界面,再用鼠標(biāo)點(diǎn)擊“正弦曲線”按鈕、“余弦曲線”按鈕或“關(guān)閉”按鈕,就可看到點(diǎn)擊不同按鈕時(shí),圖形曲線的不同了。圖3.27運(yùn)行界面
編輯完成并保存,選擇菜單“Tool”→“R例
創(chuàng)建一個(gè)用戶界面,使用單選按鈕選擇正弦函數(shù)的幅值,使用復(fù)選框輸入正弦函數(shù)的時(shí)間范圍,正弦函數(shù)的行向量在文本框中顯示。例創(chuàng)建一個(gè)用戶界面,使用單選按鈕選擇正弦函數(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));在pushbutton1_Callback回調(diào)函數(shù)中添加程序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.4MATLAB數(shù)字圖像處理圖像處理就是將圖3.4.1數(shù)字圖像的概念
從圖像處理的角度來看,則可以分為模擬和數(shù)字兩大類,前者包括光學(xué)系統(tǒng)成像、膠片影像等,后者是將模擬圖像經(jīng)抽樣離散化處理后形成的、計(jì)算機(jī)能夠辨識(shí)的點(diǎn)陣圖像。數(shù)字圖像存在的形式就是存儲(chǔ)在硬盤等介質(zhì)中的數(shù)字化后的二維數(shù)組。現(xiàn)代數(shù)字圖像與模擬圖像相比具有不可比擬的優(yōu)點(diǎn),突出表現(xiàn)在易于存儲(chǔ)、便于處理、傳輸方便、高抗擾性和易于加密等。3.4.1數(shù)字圖像的概念從圖像處理的角度來看,則可以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.2數(shù)字圖像的表示在圖像處理工具箱中,一幅灰度圖像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中常用圖像/圖形格式
3.4.3圖像格式與圖像類型圖像格式是指用來存儲(chǔ)92與圖像格式的定義不同,圖像類型是依圖像數(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ù))。與圖像格式的定義不同,圖像類型是依圖像數(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)色板。1.灰度圖像灰度圖像是一個(gè)數(shù)據(jù)矩陣,該矩陣的每一個(gè)元素對(duì)應(yīng)于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)格要求的地方。2.索引圖像索引圖像是一種把圖像像素值直接作為RGB調(diào)色板下3.二值圖像二值圖像是由0和1兩種邏輯值數(shù)組組成的數(shù)字圖像,邏輯值0相當(dāng)于在灰度圖像中的0,邏輯值1相當(dāng)于灰度圖像中的255。二值圖像每一像素只有0和1兩種可能的數(shù)值或灰度等級(jí)狀態(tài)。二值圖像常用于對(duì)圖像內(nèi)容進(jìn)行標(biāo)記處理。3.二值圖像二值圖像是由0和1兩種邏輯值數(shù)組組成的數(shù)字圖像,4.RGB圖像RGB圖像通常稱為真彩色圖像,它直接來源于圖像傳感器件所采集的模擬信號(hào)量化后的輸出。每一像素點(diǎn)的數(shù)字量化輸出均由三個(gè)數(shù)值來分別標(biāo)明紅、綠、藍(lán)分量的幅值。在MATLAB中,一幅RGB圖像由m×n×3的數(shù)組來表示,其中m和n分別為圖像的寬度和長(zhǎng)度,3代表三個(gè)顏色分量。對(duì)于常用的RGB圖像,每個(gè)顏色分量均由一個(gè)字節(jié)來表示,這樣就構(gòu)成24位的RGB圖像。4.RGB圖像RGB圖像通常稱為真彩色圖像,它直接來源于圖像表3-8給出了圖像處理工具箱中常用圖像類型轉(zhuǎn)換函數(shù)。類型轉(zhuǎn)換函數(shù)函數(shù)功能描述rgb2grayrgb2indIm2bwind2graygray2inddither將一幅RGB圖像轉(zhuǎn)換為灰度圖像;將一幅RGB圖像轉(zhuǎn)換為索引圖像;使用閾值截取方法,將一幅灰度圖像、索引圖像或RGB圖像轉(zhuǎn)換為二值圖像;將一幅索引圖像轉(zhuǎn)換為灰度圖像;將一幅灰度圖像轉(zhuǎn)換為索引圖像;使用抖動(dòng)算法,將RGB圖像轉(zhuǎn)換為索引圖像,或?qū)⒒叶葓D像轉(zhuǎn)換為二值圖像。表3-8給出了圖像處理工具箱中常用圖像類型轉(zhuǎn)換函數(shù)。類型轉(zhuǎn)3.4.4數(shù)字圖像的讀取
在MATLAB中無論對(duì)圖像進(jìn)行何種處理,首選必須將目標(biāo)圖像讀入到MATLAB工作環(huán)境。MATLAB中使用imread函數(shù)讀取圖像,imread命令支持MATLABIPT支持的所有圖像格式,其語法格式為:imread(‘picname’)其中picname為一個(gè)圖像文件名,它包含了圖像文件的全名(含擴(kuò)展名)。
3.4.4數(shù)字圖像的讀取在MATLAB中無論對(duì)圖像進(jìn)行何種對(duì)于索引圖像的讀取,命令格式為(其中fmt為圖像格式,可選的值為bmp、hdf、ico、jpg、pcx、png和xwd):[p,map]=imread(picname,'fmt')除了使用命令whos檢查內(nèi)存中的圖像信息外,還可以使用命令imfinfo則了解更多的圖像信息,例如:>>imfinfofootball.jpgans=Filename:'D:\MATLAB7\toolbox\images\imdemos\football.jpg'FileModDate:'01-Mar-200108:52:38'FileSize:27130
Format:'jpg'FormatVersion:''Width:320
Height:256BitDepth:24ColorType:'truecolor'FormatSignature:''NumberOfSamples:3CodingMethod:'Huffman'CodingProcess:'Sequential'Comment:{}對(duì)于索引圖像的讀取,命令格式為(其中fmt為圖像格式,可選的3.4.5數(shù)字圖像的顯示與存儲(chǔ)
MATLAB進(jìn)行圖像處理時(shí),一般使用函數(shù)imshow或imview顯示圖像。imshow在一個(gè)單獨(dú)的圖形窗口顯示圖像,其基本語法格式為:imshow(p,G)或imshow(p,[lowhigh])imview的基本語法格式為:imview(p)或imview('gfootball.jpg')3.4.5數(shù)字圖像的顯示與存儲(chǔ)MATLAB進(jìn)行圖像處理imshow和imview顯示football.jpg的效果分別如圖3.28中(a)、(b)所示。(a)imshow顯示圖像(b)imview顯示圖像圖3.28分別用imshow及imview顯示football.jpg圖像imshow和imview顯示football.jpg的效果MATLAB圖像處理中使用函數(shù)imwrite來保存圖像,其基本語法格式為:imwrite(p,'picname')或imwrite(p,'picname','fmt')其中p為待保存的圖像數(shù)組,picname為保存時(shí)使用的文件名,fmt為圖像格式,可以保存為表3-7中的任一格式。特別地,在保存為jpg格式圖像時(shí),命令格式則為:imwrite(p,'picname','quality',q)MATLAB圖像處理中使用函數(shù)imwrite來保存圖像,其第三章MATLAB圖形圖像處理第三章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)用,并且取得了巨大的成就。
MATLAB不僅具有強(qiáng)大的矩陣計(jì)算能力,
本章對(duì)圖形圖像處理的基本概念、基本內(nèi)容、命令格式和函數(shù)進(jìn)行介紹,主要從二維圖形的繪制、三維圖形的繪制、圖像的獲取及處理等三個(gè)方面進(jìn)行闡述,為圖形圖像處理在MATLAB中的應(yīng)用打下良好的基礎(chǔ)。本章對(duì)圖形圖像處理的基本概念、基本內(nèi)容、命令格3.1二維圖形的繪制3.2三維曲線作圖3.3圖形用戶界面3.4MATLAB數(shù)字圖像處理3.5圖像的灰度變換與直方圖3.6圖像的增強(qiáng)濾波3.7圖像的空間變換3.8圖像邊緣檢測(cè)與分割3.1二維圖形的繪制3.1二維圖形的繪制用MATLAB繪圖命令可以在圖形窗口內(nèi)畫出各種圖形曲線,并使用不同的線型、顏色、點(diǎn)型和標(biāo)注來修飾這些圖形曲線。
3.1二維圖形的繪制用MATLAB繪圖命令可以在圖繪圖的一般步驟
1.曲線數(shù)據(jù)準(zhǔn)備2.指定圖形窗口和子圖位置3.繪制圖形4.設(shè)置坐標(biāo)軸和圖形注釋5.僅對(duì)三維圖形使用的著色和視點(diǎn)等設(shè)置6.圖形的精細(xì)修飾7.按指定格式保存或?qū)С鰣D形繪圖的一般步驟1.曲線數(shù)據(jù)準(zhǔn)備3.1.1直角坐標(biāo)系中的繪圖plot命令:可用來繪制直角坐標(biāo)系中的各種曲線.它的主要格式為:plot(y)plot(x,y)plot(x,y,’s’)3.1.1直角坐標(biāo)系中的繪圖plot命令:可用來繪制直角坐plot()函數(shù)的應(yīng)用形式: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是向量,則plot(y)在直角坐標(biāo)系中繪制出一例:運(yùn)行下面的程序,畫出圖形。
>>y1=[1324623453];>>y2=[13246;23453];>>plot(y1);plot(y2);例:運(yùn)行下面的程序,畫出圖形。
①如果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的每列畫一條曲線。①如果x和y是向量,要求其具有相同長(zhǎng)度,命令plot(x圖示yxyxxx(1)(3)(2)yx圖示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=0:0.2:2*pi;圖3.2正弦曲例
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)例x是矩陣,分別繪制x與y1和x與y2的曲線,已知y1是向>>y2=[1111;2222;3333]y2=111122223333>>plot(x,y2);>>y2=[1111;2222;3333plot(x,y,’s’)x,y情況和第二種一樣,’s’是圖形的屬性字符串,這些屬性字符串包括三個(gè)方面,第一方面指定圖形曲線的顏色,第二方面指定數(shù)據(jù)點(diǎn)的標(biāo)記類型,第三方面指定線的類型,將在3.1.3節(jié)中介紹。plot(x,y,’s’)x,y情況和第二種一樣,’s’是圖為了讀圖時(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)格線。為了讀圖時(shí)了解圖中所表達(dá)的內(nèi)容,還需要增加標(biāo)題、坐標(biāo)軸標(biāo)簽和例:下面的語句將會(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;例:下面的語句將會(huì)產(chǎn)生帶有標(biāo)題,標(biāo)簽和網(wǎng)格線的函數(shù)圖形。結(jié)果3.1.2圖形的打印和輸出
1.圖形的打印有時(shí)需要把畫出的圖形打印出來。打印的方法是在圖形Figure窗口內(nèi),在File菜單中選擇“Print…”打印項(xiàng)就可以打印輸出了。另外還可以通過“PrintSetup…”打印設(shè)置窗口進(jìn)行設(shè)置打印到紙還是文件,并可以進(jìn)行“PageSetup…”頁面設(shè)置、“PrintPreview…”打印預(yù)覽等。3.1.2圖形的打印和輸出1.圖形的打印2.圖形的輸出在MATLAB中導(dǎo)出圖形文件使用菜單“File”→“ExportSetup…”。圖形文件的保存格式有fig、bmp、jpg等常用圖形文件格式。在圖形Figure窗口內(nèi),Edit菜單中選擇“CopyFigure”項(xiàng)就可以將圖形窗口中顯示的曲線復(fù)制下來,粘貼到其他文檔中了
.2.圖形的輸出在圖形Figure窗口內(nèi),Edit菜單中選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所示。3.1.3線型、點(diǎn)型、顏色MATLAB會(huì)自動(dòng)根注釋:m-magentac-cyans-squared-diamondp-pentagramh-hexagram注釋:m-magentac-cyans-squ例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)型和顏色的圖形
例3.1.1圖3.4不同線型、點(diǎn)型和顏色的圖形
為了說明圖中曲線的名稱或類型,用legend命令來制作圖例?;靖袷绞牵?/p>
legend('string1','string2',...,pos)
其中string1,string2,…是圖形中曲線圖例的字符串,說明對(duì)應(yīng)曲線的名稱或類型,而pos是一個(gè)整數(shù),用來指定圖例的位置。這些整數(shù)所代表的含義如表3-2所示。用legendoff命令將能去除多余的圖例。
為了說明圖中曲線的名稱或類型,用legend命令來制[經(jīng)濟(jì)學(xué)]第3章-MATLAB圖形圖像處理-1課件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;eg.3.1.4同一坐標(biāo)系內(nèi)多條曲線的繪制在一張圖形窗口的同一坐標(biāo)系上繪制多條曲線的方法有4種.3.1.4同一坐標(biāo)系內(nèi)多條曲線的繪制在一張圖形窗1.使用plot(x,[y1;y2;…])例:運(yùn)行下列程序x=-pi:pi/20:pi;y1=sin(x);y2=cos(x);plot(x,[y1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年抗血小板藥項(xiàng)目建議書
- 2025年建筑防水卷材及制品項(xiàng)目建議書
- 企業(yè)臨時(shí)保安合同范本
- 合資合伙協(xié)議合同范本
- 醫(yī)院保安協(xié)議合同范本
- 合同范本 渠道疏浚
- 煤矸石燒結(jié)磚購(gòu)銷合同范本
- 農(nóng)村錯(cuò)車道工程合同范例
- 叉車變賣合同范本
- 幼兒園玩具設(shè)備采購(gòu)合同范本
- 合成生物學(xué)研發(fā)平臺(tái)與年產(chǎn)200噸合成生物制品項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 創(chuàng)傷性凝血病救治
- 2025年品控部工作計(jì)劃
- 《交通運(yùn)輸概論》課件
- GB/T 15314-2024精密工程測(cè)量規(guī)范
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- 五年(2020-2024)高考地理真題分類匯編(全國(guó))專題03地球上的大氣+原卷版
- 工資調(diào)級(jí)制度模版(3篇)
- 語文新課標(biāo)“整本書閱讀”深度解讀及案例
- 2024至2030年中國(guó)毛絨玩具數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 數(shù)字媒體藝術(shù)概論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論