MATLAB在數(shù)字圖像中的調(diào)用講課講稿_第1頁
MATLAB在數(shù)字圖像中的調(diào)用講課講稿_第2頁
MATLAB在數(shù)字圖像中的調(diào)用講課講稿_第3頁
MATLAB在數(shù)字圖像中的調(diào)用講課講稿_第4頁
MATLAB在數(shù)字圖像中的調(diào)用講課講稿_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。MATLAB在數(shù)字圖像中的調(diào)用-圖形圖像處理第一章緒論圖形圖像處理起源于20世紀(jì)20年代,當(dāng)時通過海底電纜從英國倫敦到美國紐約采用數(shù)字壓縮技術(shù)傳輸了第一幅數(shù)字照片,用來改善圖像的質(zhì)量。此后由于遙感等領(lǐng)域的應(yīng)用,使得圖形圖像處理技術(shù)逐步得到發(fā)展。一直到20世紀(jì)50年代,隨著大型數(shù)字計算機和太空科學(xué)研究計劃的出現(xiàn),人們才注意到圖像處理的潛力。1964年在美國航空總署的噴氣推進實驗室開始用計算機技術(shù)改善從太空探測器獲得的圖像。當(dāng)時利用計算機技術(shù)處理由太空船“徘徊者七號”(Ranger7)發(fā)回的月球照片,以校正

2、電視攝影機所存在的幾何失真或響應(yīng)失真。這標(biāo)志著第三代計算機問世后數(shù)字圖像處理開始得到普遍應(yīng)用。近年來隨著計算機與信息技術(shù)的高速發(fā)展,數(shù)字圖像處理技術(shù)也得到了快速的發(fā)展,目前已成為計算機科學(xué)、醫(yī)學(xué)、生物學(xué)、工程學(xué)、信息科學(xué)等領(lǐng)域各學(xué)科之間學(xué)習(xí)和研究的對象。1.1數(shù)字圖像圖像是用各種觀測系統(tǒng)以不同形式和手段觀測客觀世界而獲得的,可以直接或間接作用于人眼并進而產(chǎn)生視知覺的實體。其最廣義的觀點是指視覺信息。例如照片、圖畫、電視畫面以及光學(xué)成像等。人類的大部分信息都是從圖像中獲得的。用計算機進行圖像處理的前提是圖像必須以數(shù)字格式存儲,人們把以數(shù)字格式存放的圖像稱之為數(shù)字圖像。而我們常見的照片、海報、廣告

3、招貼畫等都屬于模擬圖像。若要將模擬圖像數(shù)字化后生成數(shù)字圖像,需要使用諸如掃描儀之類的數(shù)字化設(shè)備。模擬圖像經(jīng)過掃描儀進行數(shù)字化后,或者由數(shù)碼照相機拍攝的圖片,在計算機中均是以數(shù)字格式存儲的。為了把圖像數(shù)字化,必須進行在空間點陣上的抽樣和灰度量化兩個方面的工作。被抽樣的點稱為像素,抽樣的精度隨圖像的種類而不同。這樣一來,所謂數(shù)字圖像就是灰度值的二維數(shù)組。一個單色靜止圖像可以用一個二維的光強度函數(shù)f(x,y)來表示,其中x與y表示空間坐標(biāo),而在任意點(x,y)的f值與在該點圖像的亮度(或灰度)成正比。一個數(shù)字圖像是圖像f(x,y)在空間坐標(biāo)和亮度上都數(shù)字化后的圖像。可將數(shù)字圖像視作一個矩陣,矩陣行與

4、列的值決定一個點,而對應(yīng)的矩陣元素值就是該點的灰度。這種矩陣的元素就是像素,所對應(yīng)的灰度就是像素值。表1.1是以數(shù)據(jù)結(jié)構(gòu)的觀點進行分類的圖像種類。即在光譜方向、空間方向、時間軸方向上增加維數(shù)的圖像,可以用多個二維數(shù)組來表示。在這里,不管是一個數(shù)組還是其集合,總是要組成用計算機容易處理的形式。因此在傳送和復(fù)制時,只要在計算機內(nèi)部進行處理,就不會被破壞而能保持完好的再現(xiàn)性。這是數(shù)字處理的一大優(yōu)點。表1.1圖像的種類種類形式備注二值圖像f(x,y)0,1文字,曲線,指紋等灰度圖像0f(x,y)2n1通常的照片,n68是標(biāo)準(zhǔn)的彩色圖像fi(x,y),iR,G,B根據(jù)三基色的表示多光譜圖像fi(x,y)

5、,i1,m遙感圖像用,m多為48立體圖像fL,fR從左右視點得到的一對圖像,用于立體觀測運動圖像(時間序列圖像)ft(x,y),tt1,tn動態(tài)分析,動畫等早期在英文里一般用picture代表圖像,隨著數(shù)字技術(shù)的發(fā)展,現(xiàn)在用image代表離散化的數(shù)字圖像。圖像中每個基本單元叫做圖像元素,簡稱像素(pictureelement)。對于2-D圖像,英文中常用pixel代表象素。對于3-D圖像,英文中常用voxel代表其基本單元,簡稱體素(volumeelement)。1.2數(shù)字圖像處理1.2.1數(shù)字圖像處理的概念所謂數(shù)字圖像處理(digitalimageprocessing),就是利用計算機對圖像

6、進行去除噪聲、增強、恢復(fù)、分割、提取特征等的理論、方法和技術(shù)。由于圖像處理是利用計算機和實時硬件實現(xiàn)的,因此也被稱為計算機圖像處理(computerimageprocessing)。在計算機處理出現(xiàn)之前,圖像處理都是光學(xué)、照相處理和視頻信號處理等模擬處理。例如,在利用透鏡或棱鏡的光學(xué)演算中使用各種濾光鏡,利用膠卷具有的特性曲線進行的處理,在電子回路中的視頻信號的處理等,都屬于這一范疇。在人們的日常生活中,圖像處理已經(jīng)得到廣泛的應(yīng)用。例如,利用指紋、虹膜、面部特征等進行身份識別;自動售貨機鈔票的識別;電腦成像技術(shù)等。而在醫(yī)學(xué)領(lǐng)域,計算機圖像處理已經(jīng)成為疾病診斷的重要的手段,譬如顯微鏡照片、X射線

7、透視、X射線CT(ComputerTomograph,計算機斷層攝像)等。1.2.2數(shù)字圖像處理的目的數(shù)字圖像處理是利用計算機的計算,實現(xiàn)與光學(xué)系統(tǒng)模擬處理相同效果的過程。一般來說,數(shù)字圖像處理具有如下的目的:提高圖像的視覺質(zhì)量,以達到賞心悅目的目的。例如,去除稱之為噪聲等圖像質(zhì)量的退化因素;改變圖像的亮度、顏色;增強圖像中的某些成份、抑制某些成份;對圖像進行幾何變換等,從而改善圖像的質(zhì)量,以達到各種想要的藝術(shù)效果。提取圖像中所包含的某些特征或特殊信息,以便于計算機分析。如用作模式識別,計算機視覺的預(yù)處理等等。這些特征包括很多方面,如頻域特性、紋理特性、灰度/顏色特性、邊界/區(qū)域特性、形狀/拓

8、撲特性以及關(guān)系結(jié)構(gòu)等。對圖像數(shù)據(jù)進行變換、編碼和壓縮,以便于圖像的存儲和傳輸。1.2.3數(shù)字圖像處理的內(nèi)容要有效解決眾多的圖像處理應(yīng)用問題,必須研究出專門的圖像處理方法,大致上可以將這些問題及其數(shù)字圖像處理方式歸納為以下幾類。1.圖像獲取、表示和表現(xiàn)(ImageAcquisition,RepresentationandPresentation)該過程主要是把模擬圖像信號轉(zhuǎn)化為計算機所能接受的數(shù)字形式,以及把數(shù)字圖像顯示和表現(xiàn)出來。這一過程主要包括攝取圖像、光電轉(zhuǎn)換及數(shù)字化等幾個步驟。2.圖像增強(ImageEnhancement)圖像增強是用來強調(diào)圖像的某些特征,以便于作進一步的分析或顯示。當(dāng)

9、無法得知圖像退化有關(guān)的定量信息時,可以使用圖像增強技術(shù)較為主觀地改善圖像的質(zhì)量。所以,圖像增強技術(shù)是用于改善圖像視感質(zhì)量所采取的一種重要手段。它所完成的工作包括去除圖像噪聲,增強圖像對比度等。例如,對比度的增強是用來使對比度低的圖像更容易顯現(xiàn)其特征,而低對比度的可能原因包括光線不足、圖像感應(yīng)器的動態(tài)范圍不夠以及在圖像攝取時光圈設(shè)定錯誤等。圖像增強的過程本身并沒有增加原始資料所包含的信息,僅僅是把圖像某些部分的特征更加強調(diào)罷了。圖像增強的算法通常是交互式的,而且與所考慮的應(yīng)用有著密切的聯(lián)系。3.圖像恢復(fù)(ImageRestoration)圖像恢復(fù)是指在圖像退化(圖像品質(zhì)下降)的原因已知時,對圖像

10、進行校正,重新獲得原始圖像的過程。使圖像降質(zhì)的因素有很多,包括感應(yīng)器或拍攝環(huán)境的干擾,感應(yīng)器的非線性幾何失真,沒有對焦精確所造成的模糊,攝象機與物體之間相對運動所造成的模糊等。圖像恢復(fù)最關(guān)鍵的是對每一種退化都需要建立一個合理的模型。退化模型和特定數(shù)據(jù)一起描述了圖像的退化,因此恢復(fù)技術(shù)是基于模型和數(shù)據(jù)的圖像恢復(fù),其目的是試圖將受污染或降質(zhì)的圖像帶回到原本不受污染的狀況下所應(yīng)得的干凈圖像,產(chǎn)生一個等價于理想成像系統(tǒng)獲得的圖像。雖然圖像恢復(fù)與圖像增強都會造成視覺上較佳的感受,但后者更關(guān)心的是圖像特征增強或抽取,而不是去除退化或污染。4.圖像重建(ImageReconstruction)圖像重建的工作

11、是由幾個一維的圖像投影來重建出更高維的物體圖像。它與圖像增強、圖像恢復(fù)等不同。圖像增強和圖像恢復(fù)的輸入都是圖像,處理后輸出的結(jié)果也是圖像。而圖像重建則是指從數(shù)據(jù)到圖像的處理,即輸入的是某種數(shù)據(jù),經(jīng)過處理后得到的結(jié)果是圖像。一個圖像的取得是以平行的X光或者其他的放射穿透光束照射物體,并在物體的背面接收此投影,接著在同一平面上改變光束照射的角度以獲得不同的投影,再以某些重建算法將這些投影組合成物體的一個橫剖面圖像。這種技術(shù)主要用于醫(yī)學(xué)圖像、雷達圖像處理、天文學(xué)星象觀測、地質(zhì)研究及無損壓縮等。5.圖像壓縮(ImageCompression)圖像壓縮的目的是降低代表數(shù)字圖像所需要的數(shù)據(jù)量,這樣做的好處

12、是可以減少圖像傳輸時間以及存儲空間。編碼是實現(xiàn)圖像壓縮的重要手段。圖像壓縮編碼主要是利用圖像信號的統(tǒng)計特性以及人類視覺的生理學(xué)和心理學(xué)特性,對圖像信號進行高效編碼,即研究數(shù)據(jù)壓縮技術(shù),其目的是在保證圖像質(zhì)量的前提下壓縮數(shù)據(jù),以解決圖像數(shù)據(jù)量大的矛盾。一般來說,圖像編碼的目的有三個:減少數(shù)據(jù)存儲量。降低數(shù)據(jù)率以減少傳輸帶寬。壓縮數(shù)據(jù)量,便于特征提取,為后續(xù)識別作準(zhǔn)備。從編碼技術(shù)的發(fā)展來看,Kunt提出了第一代、第二代的編碼概念。第一代編碼是以去除冗余為基礎(chǔ)的編碼方法,如PCM、DPCM、M、DCT、DFT、W-H變換編碼以及以此為基礎(chǔ)的混合編碼法。第二代編碼法多為20世紀(jì)80年代以后提出的,如F

13、ractal編碼法、金字塔編碼法、小波變換編碼法、模型基編碼法、基于神經(jīng)網(wǎng)絡(luò)的編碼法等等。這些編碼方法有如下特點:充分考慮人的視覺特性。恰當(dāng)?shù)乜紤]對圖像信號的分解與表述。采用圖像的合成與識別方案壓縮數(shù)據(jù)。6.圖像分割(ImageSegmentation)圖像分割就是把圖像分成區(qū)域的過程。這是從處理到分析的轉(zhuǎn)變關(guān)鍵,也是圖像自動分析的第一步。圖像中通常包含多個對象,圖像處理為達到識別和理解的目的,幾乎都必須按照一定的規(guī)則將圖像分割成區(qū)域,每個區(qū)域代表被成像的一個部分。圖像自動分割是圖像處理中最困難的問題之一。人類視覺系統(tǒng)能將所觀察的復(fù)雜景物中的對象分開,并識別出每個物體,但對于計算機來說卻是個難

14、題。目前,大部分圖像的自動分割還需要人工提供必須的信息來幫助識別,只有一部分領(lǐng)域開始使用。例如印刷字符自動識別(OCR),指紋識別等。7.圖像分析(ImageAnalysis)圖像分析是試圖從圖像中分割、提取并描述某些特征,從而有利于計算機對圖像的識別和理解,以產(chǎn)生有用的信息。圖像處理應(yīng)用的目標(biāo)幾乎都涉及到圖像分析。要做圖像分析,必須使計算機具有某種程度的智能。這些智能的特征包括:能從含有許多不相干細節(jié)的背景中找到所需的信息。能從范例中學(xué)習(xí)并將所學(xué)知識應(yīng)用推廣到其他狀況中。能從不完整的資料中推斷出完整的信息。1.3圖像工程1.3.1圖像工程的內(nèi)涵圖像技術(shù)在廣義上來說是各種與圖像有關(guān)的技術(shù)的總稱

15、。目前人們主要研究的是數(shù)字圖像,主要應(yīng)用的是計算機圖像技術(shù)。這包括利用計算機和其它電子設(shè)備進行和完成的一系列工作,以及為完成各種功能而進行的硬件設(shè)計及制作等方面的技術(shù)。計算機圖像技術(shù)的歷史可以追溯到1946年世界上第一臺電子計算機的誕生,但在20世紀(jì)50年代計算機主要還是用于數(shù)值計算。到20世紀(jì)60年代,第三代計算機的研制成功,以及快速傅立葉變換算法的發(fā)現(xiàn)和應(yīng)用,使得對圖像的某些計算得以實際實現(xiàn)。20世紀(jì)70年代,圖像技術(shù)有了長足進步,而且第一本重要的圖像處理專著(Rosenfeld1976)也得以出版。進入20世紀(jì)80年代,各種硬件的發(fā)展使得人們開始處理3-D圖像。由于圖像技術(shù)得到了極大的重

16、視和長足的發(fā)展,人們需要對它們進行綜合研究和集成應(yīng)用,由此出現(xiàn)了圖像工程。圖像工程的概念在1982年首先提出,當(dāng)時主要包括有關(guān)圖像的理論技術(shù),對圖像數(shù)據(jù)的分析管理以及各種應(yīng)用。圖像工程的內(nèi)容非常豐富,根據(jù)抽象程度和研究方法等的不同,可分為圖像處理、圖像分析和圖像理解三個層次。換句話說,圖像工程是既有聯(lián)系又有區(qū)別的圖像處理、圖像分析及圖像理解三者的有機結(jié)合,另外還包括它們的工程應(yīng)用。1.圖像處理圖像處理的重點是圖像之間進行的變換。雖然人們常用圖像處理泛指各種圖像技術(shù),但比較狹義的圖像處理主要是對圖像進行各種加工,以改善圖像的視覺效果并為自動識別打基礎(chǔ),或?qū)D像進行壓縮編碼以減少所需的存儲空間。2

17、.圖像分析圖像分析主要是對圖像中感興趣的目標(biāo)進行檢測和測量,以獲得它們的客觀信息,從而建立對圖像的描述。如果說圖像處理是一個從圖像到圖像的過程,則圖像分析則是一個從圖像到數(shù)據(jù)的過程。這里的數(shù)據(jù)可以是目標(biāo)特征的測量結(jié)果,或是基于測量的符號表示,它們描述了目標(biāo)的特點和性質(zhì)。3.圖像理解圖像理解的重點是在圖像分析的基礎(chǔ)上,進一步研究圖像中各目標(biāo)的性質(zhì)和它們之間的相互關(guān)系,并得出對圖像內(nèi)容含義的理解以及對原來客觀場景的解釋,從而指導(dǎo)決策。如果說圖像分析主要是以觀察者為中心來研究客觀世界,那么圖像理解在一定程度上就是以客觀世界為中心,借助知識、經(jīng)驗等來把握整個客觀世界。綜上所述,圖像處理、圖像分析和圖像

18、理解是處在三個抽象程度和數(shù)據(jù)量各有特點的不同層次上。圖像處理是比較低層次的操作,它主要在圖像像素級上進行處理,處理的數(shù)據(jù)量非常大。圖像分析則進入了中層,分割和特征提取把原來以像素描述的圖像轉(zhuǎn)變成比較簡潔的非圖像形式的描述。圖像理解主要是高層操作,基本上是對從描述抽象出來的符號進行運算,其處理過程和方法與人類的思維推理有許多相似之處。1.3.2相關(guān)學(xué)科和領(lǐng)域圖像工程是一門系統(tǒng)地研究各種圖像理論、技術(shù)和應(yīng)用的交叉學(xué)科。從它的研究方法來看,它可以與數(shù)字、物理學(xué)、生物學(xué)、心理學(xué)、電子學(xué)、計算機科學(xué)等許多學(xué)科相互借鑒。從它的研究范圍來看,它與模式識別、計算機視覺、計算機圖形學(xué)等多個專業(yè)相互交叉。圖像工程

19、的研究進展還與人工智能、神經(jīng)網(wǎng)絡(luò)、遺傳算法、模糊邏輯等理論和技術(shù)有密切的聯(lián)系。它的發(fā)展應(yīng)用與醫(yī)學(xué)、遙感、通信、文檔處理和工業(yè)自動化等許多領(lǐng)域也是密不可分的。圖像工程與計算機圖形學(xué)(ComputerGraphics)、計算機視覺(ComputerVision)、模式識別(PatternRecognition)等有著密切的關(guān)系。圖形學(xué)原本是指用圖形、圖表、繪圖等形式來表達數(shù)據(jù)信息的科學(xué)。而計算機圖形學(xué)研究的就是用計算機技術(shù)生成這些形式的理論、方法和技術(shù),即由非圖像形式的數(shù)據(jù)描述來生成逼真的圖像。它既可以生成現(xiàn)實世界中已經(jīng)存在的物體的圖形,也可以生成虛擬物體的圖形,它和圖像分析的對象和輸出結(jié)果正好對

20、調(diào)。從狹義上講,模式識別指的是把基于特征的多維模式空間分成不同類別的識別理論。特別是指不依賴于圖形和圖像,適用于其他一般的模式分類的理論。模式識別和圖形分析比較相似,只是前者試圖把圖像分解成可用符號較抽象地描述的類別。計算機視覺主要強調(diào)用計算機實現(xiàn)人的視覺功能,要用到圖像工程三個層次的許多技術(shù),目前的研究內(nèi)容主要與圖像理解相結(jié)合。1.4數(shù)字圖像處理的應(yīng)用概括的說,數(shù)字圖像處理技術(shù)的主要應(yīng)用領(lǐng)域如下:通訊。包括圖像傳輸、電視電話、電視會議等,主要是進行圖像壓縮甚至理解基礎(chǔ)上的壓縮。宇宙探測。由于太空技術(shù)的發(fā)展,需要用數(shù)字圖像處理技術(shù)處理大量的星體照片。遙感。航空遙感和衛(wèi)星遙感圖像需要用數(shù)字技術(shù)加

21、工處理,并提取有用的信息。主要用于地形地質(zhì)分析,礦藏探勘,森林、海洋、水利、農(nóng)業(yè)等資源調(diào)查,環(huán)境污染監(jiān)測,自然災(zāi)害預(yù)測預(yù)報,氣象衛(wèi)星云圖處理以及地面軍事目標(biāo)的識別等。由于數(shù)據(jù)量龐大,因此尋求處理及分析這些圖像的自動方法,特別是圖像對比度增強、分割及圖像識別的技術(shù)顯得極為重要。生物醫(yī)學(xué)領(lǐng)域中的應(yīng)用。圖像處理在這一領(lǐng)域的應(yīng)用非常廣泛,無論是臨床診斷還是病理研究都大量采用圖像處理技術(shù)。它的直觀、無創(chuàng)傷、安全方便等優(yōu)點備受青睞。圖像處理首先應(yīng)用于細胞分類、染色體分類和放射圖像等。20世紀(jì)70年代數(shù)字圖像處理在醫(yī)學(xué)上的應(yīng)用有了重大突破。1972年,X射線斷層掃描CT得到實用;1977年,白血球自動分類儀

22、問世;1980年,人們實現(xiàn)了CT的立體重建。醫(yī)學(xué)圖像的種類包括X光圖像、同位素圖像、核磁共振圖像、超聲波圖像、紅外線圖像以及顯微圖像等。對這些圖像作對比度增強或偽彩色等的處理可幫助醫(yī)生診斷疫病。工業(yè)生產(chǎn)中的應(yīng)用。在生產(chǎn)線中對產(chǎn)品及其部件進行無損檢測是圖像處理技術(shù)的一個重要應(yīng)用領(lǐng)域。這一領(lǐng)域的應(yīng)用從20世紀(jì)70年代起取得了迅猛的發(fā)展,主要有產(chǎn)品質(zhì)量檢測;生產(chǎn)過程的自動控制;CAD和CAM等。軍事、公安等方面的應(yīng)用。例如軍事目標(biāo)的偵察、制導(dǎo)和警戒系統(tǒng)、自動滅火器的控制及反偽裝;公安部門的現(xiàn)場照片、指紋、手跡、人像等的處理和辨識;歷史文字和圖片檔案的修復(fù)和管理等。機器人視覺。機器視覺作為智能機器人的

23、重要感覺器官,其主要任務(wù)是進行三維景物理解和識別。機器視覺主要用于軍事偵察或處于危險環(huán)境的自主機器人;郵政、醫(yī)院和家政服務(wù)的智能機器人;裝配線工件識別、定位;太空機器人的自動操作等??茖W(xué)可視化。圖像處理和圖形學(xué)的緊密結(jié)合,形成了科學(xué)研究領(lǐng)域新型的研究工具。例如考古學(xué)可用圖像處理方法恢復(fù)模糊或其他降質(zhì)狀況的珍貴文物圖像。視頻和多媒體系統(tǒng)。電視制作系統(tǒng)中廣泛使用圖像處理、變換、合成;多媒體系統(tǒng)中靜止圖像和動態(tài)圖像的采集、壓縮、處理、存儲和傳輸?shù)?。電子商?wù)。圖像處理技術(shù)在這一領(lǐng)域大有可為,如身份認(rèn)證、產(chǎn)品防偽、水印技術(shù)等。1.5數(shù)字圖像處理的發(fā)展方向目前圖像處理面臨的主要任務(wù)是研究新的處理方法,構(gòu)造

24、新的處理系統(tǒng),開拓新的應(yīng)用領(lǐng)域。需要進一步研究的問題有如下幾個方面:在進一步提高精度的同時著重解決處理速度問題。加強軟件研究,開發(fā)新的處理方法,特別是要注意移植和見解借鑒其他學(xué)科的技術(shù)和研究成果,創(chuàng)造出新的處理方法。加強邊緣學(xué)科的研究工作,促進圖像處理技術(shù)的發(fā)展。加強理論研究,逐步形成圖像處理科學(xué)自身的理論體系。圖像處理領(lǐng)域的標(biāo)準(zhǔn)化。圖像處理技術(shù)未來發(fā)展方向大致可歸納為:圖像處理的發(fā)展將圍繞高清晰度電視的研制,開展實時圖像處理的理論及技術(shù)研究,向著高速、高分辨率、立體化、多媒體化、智能化和標(biāo)準(zhǔn)化方向發(fā)展。圖像、圖形相結(jié)合,朝著三維成像或多維成像的方向發(fā)展。硬件芯片研究。把圖像處理的眾多功能固化

25、在芯片上,使之更便于應(yīng)用。新理論與新算法的研究。近年來隨著一些新理論的引入及新算法的研究,將會成為今后圖像處理理論與技術(shù)的研究熱點。例如小波分析(Wavelet)、人工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetworks)、分形幾何(Fractal)、形態(tài)學(xué)(Morphology)、遺傳算法(GennticAlgorithms)等。隨著科學(xué)技術(shù)的進步以及人類需求的不斷增加,圖像處理科學(xué)無論是在理論上還是實踐上,都會取得更大的發(fā)展。MATLAB圖像處理基礎(chǔ)2.2.1圖像文件格式及圖像類型1MATLAB支持的幾種圖像文件格式:JPEG(JointPhotogyaphicExpeytsGrou

26、p):一種稱為聯(lián)合圖像專家組的圖像壓縮格式。BMP(WindowsBitmap):有1位、4位、8位、24位非壓縮圖像,8位RLE(RunlengthEncoded)的圖像。文件內(nèi)容包括文件頭(一個BITMAPFILEHEADER數(shù)據(jù)結(jié)構(gòu))、位圖信息數(shù)據(jù)塊(位圖信息頭BITMAPINFOHEADER和一個顏色表)和圖像數(shù)據(jù)。PCX(WindowsPaintbrush):可處理1位、4位、8位、16位、24位等圖像數(shù)據(jù)。文件內(nèi)容包括文件頭、圖像數(shù)據(jù)和擴展色圖數(shù)據(jù)。TIFF(TaggedIamgeFileFormat):處理1位、4位、8位、24位非壓縮圖像,1位、4位、8位、24位packbit

27、壓縮圖像,1位CCITT壓縮圖像等。文件內(nèi)容包括文件頭、參數(shù)指針表與參數(shù)域、參數(shù)數(shù)據(jù)表和圖像數(shù)據(jù)四部分。PNG(PortableNetworkGraphics):包括1位、2位、4位、8位和16位灰度圖像,8位和16位索引圖像,24位和48位真彩色圖像。GIF(GraphicsInterchangeFormat):任何1位到8位的可交換的圖像。HDF(HierarchialDataFormat):有8位、24位光柵圖像數(shù)據(jù)集。ICO(WindowsIconresource):有1位、4位、8位非壓縮圖像。CUR(WindowsCursorresource):有1位、4位、8位非壓縮圖像。XWD

28、(XWindowsDump):包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。RAS(SunRasterimage):有1位bitmap、8位索引、24位真彩色和帶有透明度的32位真彩色。PBM(PortableBitmap)。PGM(PortableGraymap)。PPM(PortablePixmap)。2MATLAB支持五種圖像類型,即二值圖像、索引圖像、灰度圖像、RGB圖像和多幀圖像陣列。有關(guān)它們的定義見下表2.1。表2.1圖像類型及其對應(yīng)的像素數(shù)據(jù)類型圖像類型Double數(shù)據(jù)uint8和uint16數(shù)據(jù)二值圖像圖像為mn的整數(shù)矩陣,元素值范圍0,1圖像為m

29、n的整數(shù)矩陣,元素值范圍0,1索引圖像圖像為mn的整數(shù)矩陣,元素值范圍0,p圖像為mn的整數(shù)矩陣,元素值范圍0,p-1灰度圖像圖像為mn的浮點數(shù)矩陣,元素值范圍0,1圖像為mn的整數(shù)矩陣,元素值范圍0,255或0,65535RGB圖像圖像為mn3的浮點數(shù)矩陣,元素值范圍0,1圖像為mn3的整數(shù)矩陣,元素值范圍0,255或0,65535其中,多幀圖像陣列是由多幀圖像組成的,每一幀圖像可以為前四種圖像中的一種,但組成一個多幀圖像陣列的圖像必須為同一種。cat函數(shù)可以將具有相同尺寸的幾個獨立圖像存成多幀文件。對于多幀圖像也可以從中提取單幀。2.2.2圖像類型判斷及轉(zhuǎn)換1在MATLAB中如果要判斷一個

30、圖像文件的類型,可使用如下指令:lisbw:若圖像為二值圖像,則返回真。lisgray:若圖像為灰度圖像,則返回真。lisind:若圖像為索引圖像,則返回真。lisrgb:若圖像為RGB圖像,則返回真。2在MATLAB系統(tǒng)中,要將一個類型的圖像文件轉(zhuǎn)換成另一個類型的圖像文件,只需將前一個文件的圖像數(shù)據(jù)用imread讀出,再用imwrite以適當(dāng)?shù)母袷綄懙胶笠粋€圖像文件中去即可。另外,要將灰度圖像I轉(zhuǎn)換成RGB圖像,可運用cat指令。cat函數(shù)可以把一些單一的圖像合并成圖像序列。在圖像序列中每個圖像需有相同的大小,如果是索引圖像,色圖也要一致。此外,MATLAB還提供了若干函數(shù),用于圖像類型的轉(zhuǎn)

31、換。這些函數(shù)有:ldither:用抖動法(dithering)轉(zhuǎn)換圖像。該函數(shù)通過顏色抖動(顏色抖動即改變邊沿像素的顏色,使像素周圍的顏色近似于原始圖像的顏色,從而以空間分辨率來換取顏色分辨率)來增強輸出圖像的顏色分辨率。該函數(shù)可以把RGB圖像轉(zhuǎn)換成索引圖像或把灰度圖像轉(zhuǎn)換成二值圖像。lgray2ind:灰度圖像或二值圖像向索引圖像轉(zhuǎn)換。lgrayslice:設(shè)定閾值將灰度圖像轉(zhuǎn)換為索引圖像。lim2bw:設(shè)定閾值將灰度、索引、RGB圖像轉(zhuǎn)換為二值圖像。lim2double:將圖像數(shù)組轉(zhuǎn)換為double型。lim2uint8:將圖像數(shù)組轉(zhuǎn)換為uint8型。lim2uint16:將圖像數(shù)組轉(zhuǎn)換為

32、uint16型。該函數(shù)不支持二值圖像序列的轉(zhuǎn)換。lind2gray:索引圖像向灰度圖像轉(zhuǎn)換。lind2rgb:索引圖像向RGB圖像轉(zhuǎn)換。lmat2gray:將一個數(shù)據(jù)矩陣轉(zhuǎn)換為灰度圖像。lrgb2gray:RGB圖像向灰度圖像轉(zhuǎn)換或?qū)⒉噬珗D轉(zhuǎn)換成灰度色圖。lrgb2ind:RGB圖像向索引圖像轉(zhuǎn)換。包含三種不同方法:均衡量化、最小值量化、色圖映射。lim2java:一般圖像向Java圖像轉(zhuǎn)換。llabel2rgb:標(biāo)志圖像向RGB圖像轉(zhuǎn)換。2.2.3圖像的查詢及讀寫在MATLAB中要查詢一個圖像文件的信息,只要用imfinfo指令加上文件及其完整路徑名即可。函數(shù)調(diào)用格式為:info=imfi

33、nfo(filename,fmt)info=imfinfo(filename)參數(shù)fmt對應(yīng)于所有圖像處理工具箱中所有支持的圖像文件格式。MATLAB提供了兩個重要的用于圖像文件的讀寫的指令,分別是從圖像文件中讀取數(shù)據(jù)的imread,以及將數(shù)據(jù)寫入到圖像文件中的imwrite。1imread的常見調(diào)用格式為:A=imread(filename,fmt)其作用是將文件名用字符串filename表示的,擴展名用fmt表示的圖像文件中的數(shù)據(jù)讀到矩陣A中。如果filename所指的為灰度級圖像,則A為一個二維矩陣;如果filename所指的為RGB圖像,則A為一個mn3的三維矩陣。Filename表示

34、的文件名必須在MATLAB的搜索路徑范圍內(nèi),否則需指出其完整路徑。imread的其他幾種重要的調(diào)用格式為:X,map=imread(filename.fmt)=imread(filename)=imread(URL,)=imread(,idx)(CUR,ICOandTIFFonly)=imread(,frames,idx)(GIFonly)=imread(,ref)(HDFonly)=imread(,BackgroundColor,BG)(PNGonly)A,map,alpha=imread()(ICO,CURandPNGonly)上面一些參數(shù)的含義如下:idx是指讀取圖標(biāo)(cur、ico、t

35、iff)文件中第idx個圖像,默認(rèn)值為1。frame,idx是指讀取gif文件中的圖像幀,idx值可以是數(shù)量、向量或all。ref是指整數(shù)值。alpha是指透明度。2imwrite的常用調(diào)用格式為:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(,filename)imwrite(,Param1,Val1,Param2,Val2)其中imwrite(,Param1,Val1,Param2,Val2)可以讓用戶控制HDF、JPEG、TIFF等一些圖像文件格式的輸出特性。在MATLAB中,默認(rèn)的保存類型是uint8。由于PNG和T

36、IFF格式支持16位的圖像,所以保存這類圖像時,保存類型就是uint16。2.2.4圖像的顯示顯示圖像的最基本的手段是使用image函數(shù)。該函數(shù)還產(chǎn)生了圖像對象的句柄,并允許對對象的屬性進行設(shè)置。此外,imagesc函數(shù)也具有image的功能,所不同的是imagesc函數(shù)還自動將輸入數(shù)據(jù)比例化,以全色圖的方式顯示。imshow函數(shù)比image和imagesc更常用,它能自動設(shè)置句柄圖像的各種屬性。imshow可用于顯示各類圖像。對于每類圖像,調(diào)用方法如下:limshowfilename:顯示圖像文件。limshow(BW):顯示二值圖像,BW為黑白二值圖像矩陣。limshow(X,map):顯

37、示索引圖像,X為索引圖像矩陣,map為色彩圖示。limshow(I):顯示灰度圖像,I為二值圖像矩陣。limshow(RGB):顯示RGB圖像,RGB為RGB圖像矩陣。limshow(I,lowhigh):將非圖像數(shù)據(jù)顯示為圖像,這需要考慮數(shù)據(jù)是否超出了所顯示類型的最大允許范圍,其中l(wèi)owhigh用于定義待顯示數(shù)據(jù)的范圍。有關(guān)圖像顯示的函數(shù)或其輔助函數(shù),除了上述的以外,MATLAB還提供了一些用于進行圖像的特殊顯示的函數(shù)。lcolorbar:為圖像的顯示增加一個顏色條,這一用法對于了解被顯示圖像的灰度級別特別有用。lgetimage:獲取圖像數(shù)據(jù)。limmovie:將多幀索引圖像制作成連續(xù)圖像

38、格式。其調(diào)用格式為:mov=immovie(D,map)不過這種功能只對索引圖像有效,其中D為多幀索引圖像陣列,map為索引圖像的對應(yīng)色階。對于其他類型圖像,則需要首先將其轉(zhuǎn)換為索引圖像。lmontage:多幀圖像的一次顯示。它能將每一幀分別顯示在一幅圖像的不同區(qū)域,所有子區(qū)的圖像都用同一個色彩條。lmovie:播放多幀連續(xù)圖像。lsubimage:在一個圖形區(qū)域內(nèi)顯示多個圖像。ltruesize:調(diào)整圖像顯示的尺寸。lwarp:顯示圖像的紋理表面圖。前面提到的圖像顯示手段都只能在二維平面上顯示,MATLAB6.5的一個強大功能是能將平面圖像顯示在空間三維曲面上。這是由warp函數(shù)的紋理成圖功

39、能來實現(xiàn)的,該功能能通過雙線性插值將平面圖像投影到三維曲面上。lzoom:將圖像或二維圖形進行放大或縮小顯示。zoom本身是是一個開關(guān)鍵,zoomon用于打開縮放模式,zoomoff用于關(guān)閉該模式,zoomin用于放大局部圖像,zoomout用于縮小圖像。至于多個圖像的顯示,則可分為兩個方面:在不同的圖形窗口顯示不同的圖像,可以用figure指令來實現(xiàn);在同一個圖形窗口顯示多圖,可以用subplot來實現(xiàn)。第三章圖像運算3.1圖像的點運算點運算將輸入圖像映射為輸出圖像,輸出圖像每個像素點的灰度值僅由對應(yīng)的輸入像素點的值決定。它常用于改變圖像的灰度范圍及分布,是圖像數(shù)字化及圖像顯示的重要工具。點

40、運算因其作用性質(zhì),也被稱為對比度增強、對比度拉伸或灰度變換。在真正進行圖像處理之前,有時可以用點運算來克服圖像數(shù)字化設(shè)備的局限性。點運算實際上是灰度到灰度的映射過程。點運算不會改變圖像內(nèi)像素點之間的空間關(guān)系。設(shè)輸入圖像為A(x,y),輸出圖像為B(x,y),則點運算可表示為:B(x,y)=fA(x,y)(3-1)點運算可完全由灰度變換(gray-scaletransformation)函數(shù)s=f(r)決定,后者描述了輸入灰度級與輸出灰度級之間的映射關(guān)系。圖像的點運算分為線性點運算和非線性點運算兩種。3.1.1線性點運算線性點運算是指灰度變換函數(shù)f為線性函數(shù)時的運算。如圖3.1,當(dāng)a1時,輸出圖

41、像對比度增大;當(dāng)a1時,輸出圖像對比度降低;當(dāng)a1,b0時,輸出圖像就是輸入圖像的簡單復(fù)制;當(dāng)a1,b0時,僅使輸出圖像的灰度值上移或下移,其效果是使整個圖像更亮或更暗。如果a為負值,暗區(qū)域?qū)⒆兞?,亮區(qū)域?qū)⒆儼担c運算完成了圖像求補。除了調(diào)節(jié)對比度以外,還有一種典型的線性點運算的應(yīng)用就是灰度標(biāo)準(zhǔn)化。設(shè)灰度圖像為IWH,其中W表示圖像寬度,H表示圖像的高度,那么灰度圖像的平均灰度和方圖3.1線性函數(shù)差由如下計算公式得到:平均灰度:(3-2)方差:(3-3)可以將其變換為具有相同均值和方差的變換函數(shù)(線性映射),其形式如下:(3-4)其中0和u0為給定的變換參數(shù)?;叶葮?biāo)準(zhǔn)化可以用來生成一些常用的平

42、均模型。3.1.2非線性點運算非線性點運算對應(yīng)于非線性映射函數(shù),典型的映射包括平方函數(shù)、對數(shù)函數(shù)、截取函數(shù)(窗口函數(shù))、域值函數(shù)、多值量化函數(shù)等。閾值化處理是最常用的一種非線性點運算,它的功能是選擇一閾值,將圖像二值化,然后使用生成的二進制圖像進行圖像分割及邊緣跟蹤等處理。直方圖均衡化也是一種非常常用的非線性點運算。它是指將一個已知灰度分布的圖像使用某種非線性灰度變換函數(shù)進行計算,使運算結(jié)果變成一幅具有均勻灰度分布的新圖像。經(jīng)過直方圖均衡化的點運算處理后,實際的直方圖將呈現(xiàn)參差不齊的外形,這是由于灰度級的可能個數(shù)是限造成的。在一些灰度級處可能沒有像素,在另外一些灰度級處則像素很擁擠。點運算的M

43、ATLAB實現(xiàn):I=imread(rice.png);rice=double(I);rice2=rice*0.5+50;J=uint8(rice2);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);MATLAB在數(shù)字圖像處理中的應(yīng)用21幾個基本術(shù)語在運用MATLAB進行數(shù)字圖像處理之前,我們必須明確幾個基本術(shù)語:1)位圖:是根據(jù)圖像的尺寸和分辨率創(chuàng)建和保存的圖像,由掃描輸入。2)矢量圖:使用專用軟件繪制的,以數(shù)學(xué)方程式的方式保存的圖像,所以矢量圖的清晰度與分辨率無關(guān)。3)象素:是圖像在計算機顯示中的度量單位,可以變化,可大可小。4)分辨率:是

44、用于度量圖像在顯示器中清晰程度的一個參數(shù),分辨率越高,圖像越清晰。分辨率是與象素相關(guān)的,即單位長度上的象素數(shù)就是分辨率。由此可知,分辨率越高,象素的幾何尺寸就越小。5)圖像文件的大小:指一幅圖像在計算機中保存時所占用的磁盤空間,其大小與所用的顏色模式有關(guān)?;叶葓D像中的每一個灰度象素只占用一個字節(jié)(8位),RGB圖像中紅、綠、藍各占用一個字節(jié)。另外,圖像文件的大小也直接與其分辨率有關(guān),原因是當(dāng)分辨率增加時,一幅圖像所包含的象素量急劇增加。6)句柄:通俗地說就是對象的代號或標(biāo)志,它能使計算機方便地從眾多對象中找到所需要的對象并對之加以相應(yīng)的操作。MATLAB中的句柄圖形對象包括軸、文本、菜單、控制

45、框、圖像等。2.2MATLAB圖像文件格式簡介針對MATLAB的數(shù)字圖像處理功能,我們討論它可以處理的幾種圖像文件格式:A)PCX格式。可處理1、4、8、16、24位等圖像數(shù)據(jù)。文件內(nèi)容包括文件頭、圖像數(shù)據(jù)、擴展調(diào)色板數(shù)據(jù)。B)BMP格式,即位圖文件,整幅圖可視為一個數(shù)字矩陣。它包括1、4、8、24位非壓縮圖像,8位RLE(行程編碼)圖像。文件內(nèi)容包含文件頭、位圖信息數(shù)據(jù)塊和圖像數(shù)據(jù)。選擇BMP格式保存一幅灰度模式圖像時,可選擇以Windows格式保存。而且在選中4位或8位位圖時,還可選壓縮(RLE)項,在用RLE方式壓縮保存后圖像將毫無損失。這是用得最廣的圖像格式之一,在本文中都對這種格式的

46、圖像進行操作。C)HDF格式。有8位,24位光柵圖像數(shù)據(jù)集。D)JPEG格式。是一種聯(lián)合圖像專家組的圖像壓縮格式,是目前所用對靜止灰度或彩色圖像的壓縮標(biāo)準(zhǔn)。它實際上定義了3種編碼系統(tǒng):a基于DCT的有損編碼基本系統(tǒng),可用于絕大多數(shù)壓縮場合;b用于高壓縮比、高精度或漸進重建應(yīng)用的擴展編碼系統(tǒng);c用于無失真應(yīng)用場合的無損系統(tǒng)。JPEG沒有規(guī)定文件格式、圖像分辨率或所用的彩色空間模型,這使它就有可能適用于MATLAB。D)TIFF格式。處理1、4、8、24位非壓縮圖像,1、4、8、24位packbit壓縮圖像,1位CCITT壓縮圖像等。文件內(nèi)容包括:文件頭、參數(shù)指針表與參數(shù)域、參數(shù)數(shù)據(jù)表和圖像數(shù)據(jù)四

47、部分。它是一種用途廣泛的文件格式,其特點是可移植性好,幾乎所有的掃描儀及在Windows、Macintosh平臺上常用的版面設(shè)計軟件都支持TIFF文件格式。以這種格式保存的圖像文件結(jié)構(gòu)比較復(fù)雜,在不壓縮存放時文件比較大。E)XWD格式。1、8位Zpixmaps,Xybitmaps,1位XYPixmaps。F)TGA格式。處理1、4、8、16、24位非壓縮圖像和行程編碼圖像。文件包由5個固定長度字段和3個可變長度字段組成。2.3MATLAB圖像文件類型根據(jù)數(shù)據(jù)矩陣和圖像象素點顏色的匹配關(guān)系,MATLAB中的圖像可分為三類:索引圖像、灰度圖像和RGB圖像。1)索引圖像:它的數(shù)據(jù)信息包括一個數(shù)據(jù)矩陣

48、和一個雙精度色圖矩陣,它的數(shù)據(jù)矩陣中的值直接指定該點的顏色為色圖矩陣中的某一種。色圖矩陣中,每一行表示一種顏色,每行有三個數(shù)據(jù),分別表示該種顏色中紅、綠、藍的比例情況,所有元素值都在0,1內(nèi)。2)灰度圖像:它的數(shù)據(jù)矩陣中的元素值一般都在0,1或0,255之間,灰度圖像根據(jù)這些數(shù)據(jù)利用線性插值來和色圖中的顏色種類匹配。3)RGB圖像:圖像中每個象素的顏色用三個數(shù)據(jù)來存儲,分別指定紅、綠、藍三原色在象素顏色中的比例關(guān)系,組成一個三維數(shù)組。2.4MATLAB中圖像的存儲運算和顯示方式在MATLAB中,數(shù)值一般都采用double型(64位)存儲和運算,為了節(jié)省存儲空間,MATLAB為圖像提供了特殊的數(shù)

49、據(jù)類型uint8(8位無符號整數(shù)),以此方式存儲的圖像稱為8位型像。函數(shù)image能夠直接顯示8位圖像,但8位型數(shù)據(jù)和double型數(shù)據(jù)在image中意義不一樣,對于索引圖像,數(shù)據(jù)矩陣中的值指定該像素的顏色種類在色圖矩陣中的行數(shù)。當(dāng)數(shù)據(jù)矩陣中的值為0時,表示用色圖矩陣中第一行表示的顏色繪制;當(dāng)數(shù)據(jù)矩陣中的值為1時,表示用色圖矩陣中的第二行表示的顏色繪制該像素,數(shù)據(jù)與色圖矩陣中的行數(shù)總是相差1。所以,索引圖像double型和uint8型在顯示方法上沒有什么不同,只是8位數(shù)據(jù)矩陣的值和顏色種類之間有一個偏差1。調(diào)用格式均為image(x);colormap(map);對于灰度圖像,uint8表示范

50、圍0,255,double型表示范圍0,1??梢?,double型和uint8型灰度圖像不一樣,二者轉(zhuǎn)換格式為:I8=uint8(round(I64*255);I64=double(I8)/255;反之,imread根據(jù)文件中的圖像種類作不同的處理。當(dāng)文件中的圖像為灰度圖像時,imread把圖像存入一個8位矩陣中,把色圖矩陣轉(zhuǎn)換為雙精度矩陣,矩陣中每個元素值在0,1內(nèi);當(dāng)為RGB圖像時,imread把數(shù)據(jù)存入到一個8位RGB矩陣中。本軟件的處理統(tǒng)一針對BMP格式的灰度圖。在編程時圖像讀入與輸出均要求轉(zhuǎn)換為uint8型,中間運算處理過程則要用double型。25從零開始學(xué)用MATLABMATLAB

51、對于我來說是一門全新的語言,一般在編輯框中編程存盤后在命令框內(nèi)運行,在Figure框中顯示圖像。在用它作數(shù)字圖像處理的過程中,最常碰到的問題有:圖像讀入imread(文件名.格式,格式),必須是上文提過的MATLAB支持的7種格式之一,而用Photoshop制作的PSD圖像保存了所有通道和圖層的信息,不能直接用MATLAB來處理。顯示圖像用imshow(h)語句,h為圖像句柄;在一幅圖片中顯示子圖用subplot規(guī)定子圖的位置和大小,用subimage(h)輸出子圖。輸出圖像若需要永久保存,則可用imwrite(h,map,filename.bmp,bmp),寫入存儲器。注意在該語句前要設(shè)置調(diào)

52、色板,即map=(gray(256)。結(jié)構(gòu)化程序語句寫法不同于C語言。比如if,for之后要用end表示這一塊結(jié)束。有關(guān)條件的語句都不用加括號,而用冒號來表示遞增,如fori=1:3:10表示i從1以步長3遞增到10,即做三次循環(huán)。要注意圖像格式的轉(zhuǎn)化。須知不同的圖像格式對應(yīng)不同的處理方式,如果處理與格式不符,將引起錯誤。比如范例中的圖片lena256.bmp表現(xiàn)為灰度圖,但其實質(zhì)仍為RGB圖像。如果不用語句rgb2gray將其轉(zhuǎn)化為256級灰度圖,經(jīng)變換后圖像會變紅或變藍。數(shù)組的定義方式與C語言不同。由于C語言中含N個元素的一維數(shù)組A的下標(biāo)從0到N-1,數(shù)組定義為AN;同樣的數(shù)組,MATLA

53、B規(guī)定的下標(biāo)是從1到N,所以不能再用AN來表示數(shù)組,只能用它表示數(shù)組的第N個元素。賦值時用A代表數(shù)組。由于在本演示軟件中,涉及較多點運算,所以運行速度較慢。等待時未知其是否順利運行。這時最好在最外層循環(huán)加上計數(shù)標(biāo)志,即變量名,這樣對程序運行的影響不大,卻可以知道程序的運行情況,有助于查錯。但如果在內(nèi)層循環(huán)加標(biāo)志的話,將大大減慢運行速度。盡管MATLAB允許未定義使用數(shù)組,但在實際應(yīng)用中這樣經(jīng)常出錯,特別是遇到在double和uint8型之間的轉(zhuǎn)換時。所以最好還是養(yǎng)成用前定義的習(xí)慣,避免出現(xiàn)不必要的錯誤。在做完一定量的運算后,一般要用Clear清除內(nèi)存變量,以防影響后面的程序運行。matlab調(diào)

54、試工具在開發(fā)函數(shù)M文件過程中,不可避免地出現(xiàn)錯誤,即故障。MATLAB提供了很多函數(shù)和方法,幫助調(diào)試函數(shù)。在MATLAB表達式中,有兩類錯誤:語法錯誤和運行錯誤。當(dāng)MATLAB計算一個表達式的值或一個函數(shù)被編譯到內(nèi)存時會發(fā)現(xiàn)語法錯誤。一旦發(fā)現(xiàn)語法錯誤,MATLAB立即標(biāo)志這些錯誤,并提供有關(guān)所遇到的錯誤類型,以及發(fā)生錯誤處M文件的行數(shù)。給定這些反饋信息,就很容易糾正這些錯誤。而另一方面,即使MATLAB標(biāo)志了運行錯誤,但找出錯誤一般比較困難。當(dāng)發(fā)現(xiàn)運行錯誤時,MATLAB把控制權(quán)返回給命令窗口和MATLAB的工作空間。失去了對發(fā)生錯誤的函數(shù)空間的訪問權(quán),因此,用戶不能詢問函數(shù)工作空間中的內(nèi)容排

55、除問題。根據(jù)作者的經(jīng)驗,當(dāng)一些操作結(jié)果導(dǎo)致空矩陣或NaNs時,最容易發(fā)生運行錯誤。所有有關(guān)NaNs的操作都返回NaNs值。因此,如果有可能出現(xiàn)NaNs結(jié)果,則當(dāng)出現(xiàn)NaNs時,最好運用邏輯函數(shù)isnan來執(zhí)行一些缺省操作。因為空矩陣為零維,所以對空矩陣尋址常常導(dǎo)致錯誤。函數(shù)find表示了可產(chǎn)生空矩陣結(jié)果的一般情況。如果函數(shù)find的空矩陣輸出用于索引其它數(shù)組,所返回的值也將是空的。這樣,空矩陣具有傳播性質(zhì)。例如:x=pi*(1:4)%exampledatai=find(x20)%usefindfunctiony=2*x(i)%propagatetheemptymatrix很清楚,當(dāng)希望y具有有

56、限維數(shù)和值時,可能發(fā)生運行錯誤。當(dāng)執(zhí)行一個操作或使用可返回空結(jié)果的函數(shù)時,邏輯函數(shù)isempty有利于為空矩陣定義一個缺省值,這樣避免運行錯誤。有幾種調(diào)試函數(shù)M文件的方法。對于簡單的問題,可直接使用下列的方法組合:1、去掉文件中所選擇的行的分號,以便中間結(jié)果顯示在命令窗口中。2、在文件中加入顯示感興趣的變量的語句3、把keyboard命令放在文件中所選擇的地方,給鍵盤暫時控制權(quán)。這樣,可以查詢函數(shù)空間并按需要改變其值。4、在M文件開始,在function語句前加上%,將函數(shù)M文件改變?yōu)槟_本M文件。當(dāng)MATLAB執(zhí)行該腳本M文件時,該空間就是MATLAB工作空間。這樣,當(dāng)發(fā)生錯誤時可以詢問。當(dāng)M

57、文件大,遞歸調(diào)用或者多次嵌套(即調(diào)用其它M文件函數(shù),被調(diào)用M文件函數(shù)又調(diào)用其它M文件函數(shù),等等)時,用MATLAB的調(diào)試函數(shù)會更方便。與上述所列方法相反,這些調(diào)試函數(shù)不要求將有問題的M文件進行編輯。表16.1所給出的這些函數(shù)類似于其它高級編程語言中所提供的函數(shù)。有關(guān)進一步的信息,以及它們的使用實例,參閱MATLAB用戶指南。表16.1MATLAB調(diào)試函數(shù)dbclear:取消斷點dbcont:在斷點后恢復(fù)運行dbdown:工作空間下移dbquit:退出調(diào)試模式dbstack:列出誰調(diào)用誰dbstatus:列出所用的斷點dbstep:執(zhí)行一行或多行dbstop:設(shè)置斷點dbtype:列出帶行號的M

58、文件dbup:工作空間上移圖像類型轉(zhuǎn)換函數(shù)HYPERLINK/zhizhu666/archive/2007/05/12/1606312.aspxMATLAB命令默認(rèn)情況下,matlab將圖象中的數(shù)據(jù)存儲為double型,即64位浮點數(shù);matlab還支持無符號整型(uint8和uint16);uint型的優(yōu)勢在于節(jié)省空間,涉及運算時要轉(zhuǎn)換成double型。im2double():將圖象數(shù)組轉(zhuǎn)換成double精度類型im2uint8():將圖象數(shù)組轉(zhuǎn)換成unit8類型im2uint16():將圖象數(shù)組轉(zhuǎn)換成unit16類型圖像類型轉(zhuǎn)換函數(shù):dither()通過顏色抖動,把真彩圖像轉(zhuǎn)換成索引圖像或

59、灰度圖象轉(zhuǎn)換成二值圖像gray2ind()將灰度圖像(或二值圖像)轉(zhuǎn)換成索引圖像grayslice()通過設(shè)定的閾值將灰度圖象轉(zhuǎn)換成索引圖像im2bw()通過設(shè)定亮度閾值將灰度、真彩、索引圖象轉(zhuǎn)換成二值圖像ind2gray()將索引圖象轉(zhuǎn)換成灰度圖象ind2rgb()將索引圖象轉(zhuǎn)換成真彩色圖像mat2gray()將一個數(shù)據(jù)矩陣轉(zhuǎn)換成一幅灰度圖象rgb2gray()將真彩轉(zhuǎn)換成灰度圖象rgb2ind()將真彩轉(zhuǎn)換成索引圖象圖像類型與類型間的轉(zhuǎn)換1。索引圖像:包括一個數(shù)據(jù)矩陣X和一個色圖陣MAP。矩陣元素值指向MAP中的特定顏色向量。2?;叶葓D像:數(shù)據(jù)矩陣I,I中的數(shù)據(jù)代表了顏色灰度值。矩陣中的元

60、素可以是double類型、8位或16位無符號的整數(shù)類型。3。RGB圖像:即真彩圖像。矩陣中每個元素為一個數(shù)組,數(shù)組的元素定義了像素的紅、綠、藍顏色值。RGB數(shù)組可以是double類型、8位或16位無符號的整數(shù)類型。4。二值圖像:一個數(shù)據(jù)陣列,每個象素只能取0或1。矩陣的基本運算行列式求值:det(A)矩陣加減:+、-矩陣相乘:*矩陣左除:A/B%相當(dāng)于inv(A)*B矩陣右除:AB%相當(dāng)于A*inv(B)矩陣的冪:矩陣轉(zhuǎn)置:矩陣求共軛(實部相同,虛部相反):conj(X)矩陣求逆:inv(X)級數(shù)的求和與收斂symsum(fun,var,a,b):其中fun是通項表達式,var為求和變量,a為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論