2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  一.課程設(shè)計(jì)相關(guān)知識綜述......................................................................</p><p>  1.1 研究目的及意義..........................................................................3</p><p&

2、gt;  1.2 數(shù)字圖像處理研究的內(nèi)容...........................................................</p><p>  1.3 MATLAB 軟件的介紹..................................................................</p><p>  1.3.1 MATLAB

3、語言的特點(diǎn).........................................................</p><p>  1.3.2 MATLAB 圖像文件格式....................................................</p><p>  1.3.3 MATLAB 圖像處理工具箱簡介...................

4、.....................</p><p>  1.3.4 MATLAB 中的圖像類型....................................................</p><p>  1.3.5 MATLAB 的主要應(yīng)用........................................................</p&g

5、t;<p>  1.4 函數(shù)介紹........................................................................................</p><p>  二.課程設(shè)計(jì)內(nèi)容和要求...........................................................................

6、</p><p>  2.1 主要研究內(nèi)容................................................................................</p><p>  2.2 具體要求............................................................................

7、...........</p><p>  2.3 預(yù)期達(dá)到的目標(biāo)...........................................................................</p><p>  設(shè)計(jì)過程.........................................................................

8、......................</p><p>  3.1 設(shè)計(jì)方案及步驟............................................................................</p><p>  3.2 程序清單及注釋......................................................

9、.....................</p><p>  3.3 實(shí)驗(yàn)結(jié)果........................................................................................</p><p>  團(tuán)隊(duì)情況.....................................................

10、...........................................</p><p>  總結(jié).......................................................................................................</p><p>  參考文獻(xiàn)......................

11、.........................................................................</p><p>  課程設(shè)計(jì)相關(guān)知識綜述.</p><p>  1.1研究目的及意義</p><p>  圖像處理(image processing),用計(jì)算機(jī)對圖像進(jìn)行分析,以達(dá)到所需結(jié)果的技術(shù)。又稱影像處理。圖像處理

12、一般指數(shù)字圖像處理。數(shù)字圖像是指用工業(yè)相機(jī)、攝像機(jī)、掃描儀等設(shè)備經(jīng)過拍攝得到的一個(gè)大的二維數(shù)組,該數(shù)組的元素稱為像素,其值稱為灰度值。圖像處理技術(shù)的一般包括圖像壓縮,增強(qiáng)和復(fù)原,匹配、描述和識別3個(gè)部分。 常見的系統(tǒng)有康耐視系統(tǒng)、圖智能系統(tǒng)等,目前是正在逐漸興起的技術(shù)。</p><p>  21世紀(jì)是一個(gè)充滿信息的時(shí)代,圖像作為人類感知世界的視覺基礎(chǔ),是人類獲取信息、表達(dá)信息和傳遞信息的重要手段。數(shù)字圖像處理,即

13、用計(jì)算機(jī)對圖像進(jìn)行處理,其發(fā)展歷史并不長。數(shù)字圖像處理技術(shù)源于20世紀(jì)20年代,當(dāng)時(shí)通過海底電纜從英國倫敦到美國紐約傳輸了一幅照片,采用了數(shù)字壓縮技術(shù)。首先數(shù)字圖像處理技術(shù)可以幫助人們更客觀、準(zhǔn)確地認(rèn)識世界,人的視覺系統(tǒng)可以幫助人類從外界獲取3/4以上的信息,而圖像、圖形又是所有視覺信息的載體,盡管人眼的鑒別力很高,可以識別上千種顏色,但很多情況下,圖像對于人眼來說是模糊的甚至是不可見的,通過圖象增強(qiáng)技術(shù),可以使模糊甚至不可見的圖像變得

14、清晰明亮。</p><p>  1.2 數(shù)字圖像處理研究的內(nèi)容</p><p>  數(shù)字圖像處理(Digital Image Processing)是通過計(jì)算機(jī)對圖像進(jìn)行去除噪聲、增強(qiáng)、復(fù)原、分割、提取特征等處理的方法和技術(shù)。數(shù)字圖像處理的產(chǎn)生和迅速發(fā)展主要受三個(gè)因素的影響:一是計(jì)算機(jī)的發(fā)展;二是數(shù)學(xué)的發(fā)展(特別是離散數(shù)學(xué)理論的創(chuàng)立和完善);三是廣泛的農(nóng)牧業(yè)、林業(yè)、環(huán)境、軍事、工業(yè)和醫(yī)學(xué)等

15、方面的應(yīng)用需求的增長。</p><p><b>  一.主要目的</b></p><p>  (1)提高圖像的視感質(zhì)量,如進(jìn)行圖像的亮度、彩色變換,增強(qiáng)、抑制某些成分,對圖像進(jìn)行幾何變換等,以改善圖像的質(zhì)量。</p><p>  (2)提取圖像中所包含的某些特征或特殊信息,這些被提取的特征或信息往往為計(jì)算機(jī)分析圖像提供便利。提取特征或信息的過程

16、是模式識別或計(jì)算機(jī)視覺的預(yù)處理。提取的特征可以包括很多方面,如頻域特征、灰度或顏色特征、邊界特征、區(qū)域特征、紋理特征、形狀特征、拓?fù)涮卣骱完P(guān)系結(jié)構(gòu)等。</p><p>  (3)圖像數(shù)據(jù)的變換、編碼和壓縮,以便于圖像的存儲和傳輸。</p><p>  不管是何種目的的圖像處理,都需要由計(jì)算機(jī)和圖像專用設(shè)備組成的圖像處理系統(tǒng)對圖像數(shù)據(jù)進(jìn)行輸入、加工和輸出。</p><p&

17、gt;<b>  二.常用方法</b></p><p>  1)圖像變換:由于圖像陣列很大,直接在空間域中進(jìn)行處理,涉及計(jì)算量很大。因此,往往采用各種圖像變換的方法,如傅立葉變換、沃爾什變換、離散余弦變換等間接處理技術(shù),將空間域的處理轉(zhuǎn)換為變換域處理,不僅可減少計(jì)算量,而且可獲得更有效的處理(如傅立葉變換可在頻域中進(jìn)行數(shù)字濾波處理)。新興研究的小波變換在時(shí)域和頻域中都具有良好的局部化特性,它

18、在圖像處理中也有著廣泛而有效的應(yīng)用。</p><p>  2 )圖像編碼壓縮:圖像編碼壓縮技術(shù)可減少描述圖像的數(shù)據(jù)量(即比特?cái)?shù)),以便節(jié)省圖像傳輸、處理時(shí)間和減少所占用的存儲器容量。壓縮可以在不失真的前提下獲得,也可以在允許的失真條件下進(jìn)行。編碼是壓縮技術(shù)中最重要的方法,它在圖像處理技術(shù)中是發(fā)展最早且比較成熟的技術(shù)。</p><p>  3 )圖像增強(qiáng)和復(fù)原:圖像增強(qiáng)和復(fù)原的目的是為了提高

19、圖像的質(zhì)量,如去除噪聲,提高圖像的清晰度等。圖像增強(qiáng)不考慮圖像降質(zhì)的原因,突出圖像中所感興趣的部分。如強(qiáng)化圖像高頻分量,可使圖像中物體輪廓清晰,細(xì)節(jié)明顯;如強(qiáng)化低頻分量可減少圖像中噪聲影響。圖像復(fù)原要求對圖像降質(zhì)的原因有一定的了解,一般講應(yīng)根據(jù)降質(zhì)過程建立"降質(zhì)模型",再采用某種濾波方法,恢復(fù)或重建原來的圖像。</p><p>  4 )圖像分割:圖像分割是數(shù)字圖像處理中的關(guān)鍵技術(shù)之一。圖像分

20、割是將圖像中有意義的特征部分提取出來,其有意義的特征有圖像中的邊緣、區(qū)域等,這是進(jìn)一步進(jìn)行圖像識別、分析和理解的基礎(chǔ)。雖然已研究出不少邊緣提取、區(qū)域分割的方法,但還沒有一種普遍適用于各種圖像的有效方法。因此,對圖像分割的研究還在不斷深入之中,是圖像處理中研究的熱點(diǎn)之一。</p><p>  5 )圖像描述:圖像描述是圖像識別和理解的必要前提。作為最簡單的二值圖像可采用其幾何特性描述物體的特性,一般圖像的描述方法采

21、用二維形狀描述,它有邊界描述和區(qū)域描述兩類方法。對于特殊的紋理圖像可采用二維紋理特征描述。隨著圖像處理研究的深入發(fā)展,已經(jīng)開始進(jìn)行三維物體描述的研究,提出了體積描述、表面描述、廣義圓柱體描述等方法。</p><p>  6 )圖像分類(識別):圖像分類(識別)屬于模式識別的范疇,其主要內(nèi)容是圖像經(jīng)過某些預(yù)處理(增強(qiáng)、復(fù)原、壓縮)后,進(jìn)行圖像分割和特征提取,從而進(jìn)行判決分類。圖像分類常采用經(jīng)典的模式識別方法,有統(tǒng)計(jì)

22、模式分類和句法(結(jié)構(gòu))模式分類,近年來新發(fā)展起來的模糊模式識別和人工神經(jīng)網(wǎng)絡(luò)模式分類在圖像識別中也越來越受到重視。</p><p>  1.3 MATLAB 軟件的介紹</p><p>  MATLAB(矩陣實(shí)驗(yàn)室)是MATrix LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業(yè)數(shù)學(xué)軟件。MATLAB是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級

23、技術(shù)計(jì)算語言和交互式環(huán)境。除了矩陣運(yùn)算、繪制函數(shù)/數(shù)據(jù)圖像等常用功能外,MATLAB還可以用來創(chuàng)建用戶界面及與調(diào)用其它語言(包括C,C++和FORTRAN)編寫的程序。</p><p>  盡管MATLAB主要用于數(shù)值運(yùn)算,但利用為數(shù)眾多的附加工具箱(Toolbox)它也適合不同領(lǐng)域的應(yīng)用,例如控制系統(tǒng)設(shè)計(jì)與分析、圖像處理、信號處理與通訊、金融建模和分析等。另外還有一個(gè)配套軟件包Simulink,提供了一個(gè)可視化

24、開發(fā)環(huán)境,常用于系統(tǒng)模擬、動態(tài)/嵌入式系統(tǒng)開發(fā)等方面。</p><p>  MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計(jì)與分析等領(lǐng)域。</p><p&

25、gt;  MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點(diǎn),MATLAB成為一個(gè)強(qiáng)大的數(shù)學(xué)軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C++,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫的實(shí)用程序?qū)氲組ATLAB函數(shù)庫中方便自己以后調(diào)用,此外許多的MATLAB愛好者

26、都編寫了一些經(jīng)典的程序,用戶可以直接進(jìn)行下載就可以用。</p><p>  1.3.1 MATLAB 語言的特點(diǎn)</p><p>  1.高效的矩陣運(yùn)算機(jī)制</p><p>  MATLAB軟件是基于矩陣計(jì)算開發(fā)的,在其他編程語言中需要使用多個(gè)for語句才能完成的操作,在MATLAB中直接使用矩陣即可完成計(jì)算,因而MATLAB在數(shù)據(jù)計(jì)算分析,特別是對海量數(shù)據(jù)的處理方

27、面表現(xiàn)出相比其他的編程語言更大的優(yōu)勢。</p><p>  2.多樣化的操作途徑</p><p>  MATLAB語言為用戶提供了多種操作方式選擇。用戶可以編寫代碼實(shí)現(xiàn)各種功能,代碼可重復(fù)利用,同時(shí),不擅長編程的用戶也可以通過MATLAB圖形界面操作,完成MATLAB的相應(yīng)功能。</p><p>  3.功能強(qiáng)大的工具箱</p><p>  

28、對于算法的開發(fā),MATLAB提供了大量現(xiàn)成的函數(shù),用戶可以直接調(diào)用。MATLAB軟件對目前主流的算法都提供了現(xiàn)成的函數(shù),并封裝成一個(gè)個(gè)適用于不同領(lǐng)域的算法工具箱。常用的工具箱包括數(shù)學(xué)類、經(jīng)濟(jì)類、信號處理類工具箱,同時(shí)隨著MATLAB軟件版本的更新,不斷有功能更強(qiáng)大的工具箱添加到MATLAB中。MATLAB語言的這一特點(diǎn),將大大節(jié)省算法開發(fā)的時(shí)間,用戶無須詳細(xì)了解算法的細(xì)節(jié),只要掌握MATLAB中算法相應(yīng)函數(shù)的調(diào)用即可。</p>

29、;<p><b>  4.良好的擴(kuò)展能力</b></p><p>  利用MATLAB語言編寫的程序具有良好的擴(kuò)展能力,可以方便地與各種編程語言鏈接。用戶可以方便地在MATLAB中調(diào)用其他語言已編寫好的程序,同時(shí)在其他語言中也可以方便地調(diào)用MATLAB的程序。MATLAB語言具有良好的接口編程技術(shù)。</p><p><b>  5.完善的幫助系

30、統(tǒng)</b></p><p>  完善的幫助系統(tǒng)是MATLAB的又一突出特點(diǎn),MATLAB向用戶提供了多種幫助途徑,在1.4節(jié)中將詳細(xì)介紹MATLAB強(qiáng)大的幫助系統(tǒng)。通過MATLAB的幫助系統(tǒng),用戶可以獲取MATLAB常用函數(shù)的使用方法及應(yīng)用實(shí)例,而且這種幫助可以是實(shí)時(shí)的、在線的。同時(shí),為了便于用戶更好地使用MATLAB軟件,在MATLAB中的主要算法都是可以直接看到源代碼的。</p>&

31、lt;p>  1.3.2 MATLAB 圖像文件格式</p><p>  (1) JPEG(Joint Photogyaphic Expeyts Group):一種稱為聯(lián)合圖像專家組的圖像壓縮格式。</p><p>  (2) BMP(Windows Bitmap):有1位、4位、8位、24位非壓縮圖像,<WBR>8位RLE(Run length Encoded)的圖像。

32、文件內(nèi)容包括文件頭(一個(gè)BITMAP FILEHEADER數(shù)據(jù)結(jié)構(gòu))、位圖信息數(shù)據(jù)塊(<WBR>位圖信息頭BITMAP INFOHEADER和一個(gè)顏色表)和圖像數(shù)據(jù)。</p><p>  (3) PCX(Windows Paintbrush):可處理1位、4位、8位、16位、<WBR>24位等圖像數(shù)據(jù)。文件內(nèi)容包括文件頭、<WBR>圖像數(shù)據(jù)和擴(kuò)展色圖數(shù)據(jù)。</p>

33、<p>  (4) TIFF(Tagged Iamge File Format):處理1位、4位、8位、24位非壓縮圖像,<WBR>1位、4位、8位、24位packbit壓縮圖像,<WBR>1位CCITT壓縮圖像等。文件內(nèi)容包括文件頭、<WBR>參數(shù)指針表與參數(shù)域、參數(shù)數(shù)據(jù)表和圖像數(shù)據(jù)四部分。</p><p>  (5) PNG(Portable Network G

34、raphics):包括1位、2位、4位、<WBR>8位和16位灰度圖像,8位和16位索引圖像,<WBR>24位和48位真彩色圖像。</p><p>  (6) GIF(Graphics Interchange Format):任何1位到8位的可交換的圖像。</p><p>  (7) HDF(Hierarchial Data Format):有8位、24位光柵圖像數(shù)

35、據(jù)集。</p><p>  (8) ICO(Windows Icon resource):有1位、4位、8位非壓縮圖像。</p><p>  (9) CUR(Windows Cursor resource):有1位、4位、8位非壓縮圖像。</p><p>  (10) XWD(X Windows Dump):包括1位、8位Zpixmaps,<WBR>XY

36、Bitmaps,XYPixmmmaps。</p><p>  (11) RAS(Sun Raster image):有1位bitmap、8位索引、<WBR>24位真彩色和帶有透明度的32位真彩色。</p><p>  (12) PBM(Portable Bitmap)。</p><p>  (13) PGM(Portable Graymap)。</

37、p><p>  (14) PPM(Portable Pixmap)。</p><p>  1.3.3 MATLAB 圖像處理工具箱簡介</p><p>  圖像處理工具箱提供了一套全方位的參照標(biāo)準(zhǔn)算法和圖形工具,用于進(jìn)行圖形處理、分析、可視化和算法開發(fā)。可進(jìn)行圖像增強(qiáng)、圖像去模糊、特征檢測、降噪、圖像分割、空間轉(zhuǎn)換和圖像配準(zhǔn)。該工具箱的許多功能支持多線程,可發(fā)揮多核多處

38、理器計(jì)算機(jī)的性能。</p><p>  圖像處理工具箱支持多種多樣的圖像類型,包括高動態(tài)范圍,千兆像素分辨率、ICC兼容色彩和斷層掃描圖像。圖形工具可用于探索圖像、檢查像素區(qū)域、調(diào)節(jié)對比度、創(chuàng)建輪廓或柱狀圖以及操作感興趣區(qū)域(ROI)。工具箱算法可用于還原退化的圖像、檢查和測量特征、分析形狀和紋理并調(diào)節(jié)圖像的色彩平衡。</p><p>  1.3.4 MATLAB 中的圖像類型</p

39、><p><b>  1、索引圖像</b></p><p>  索引圖像包括一個(gè)數(shù)據(jù)矩陣X,一個(gè)顏色映像矩陣Map。其中Map是一個(gè)包含三列、若干行的數(shù)據(jù)陣列,其中每個(gè)元素的值均為[0, 1]之間的雙精度浮點(diǎn)型數(shù)據(jù)。Map矩陣的每一行分別表示紅色、綠色和藍(lán)色的顏色值。在MATLAB中,索引圖像是從像素值到顏色映射表值的“直接映射”。像素顏色由數(shù)據(jù)矩陣X作為索引指向矩陣Ma

40、p進(jìn)行索引,例如,值1指向矩陣Map中的第一行,值2指向第二行,以此類推。</p><p>  顏色映射表通常和索引圖像存在一起,當(dāng)用戶在調(diào)用函數(shù)imread時(shí),MATLAB自動將顏色映射表與圖像同時(shí)加載,在MATLAB中可以選擇所需要的顏色映射表,而不必局限于使用默認(rèn)的顏色映射表。我們可以使用屬性CDataMapping來選取其他的顏色映射表,包括用戶自定義的顏色映射表。</p><p>

41、;  如果圖像數(shù)據(jù)矩陣是雙精度的數(shù)據(jù)類型,則值1指向矩陣Map中的第一行,值2指向第二行,但如果圖像矩陣是8位無符號的整數(shù)類型或16位無符號的整數(shù)類型,則由于存在一個(gè)偏移量,因而使值0指向矩陣Map中的第一行,以此類推。</p><p><b>  2、灰度圖像</b></p><p>  在MATLAB中,一幅灰度圖像是一個(gè)數(shù)據(jù)矩陣I,I中的數(shù)據(jù)均代表了在一定范圍內(nèi)

42、的圖像灰度值。MATLAB把灰度圖像存儲為一個(gè)數(shù)據(jù)矩陣,該矩陣中的元素分別代表了圖像中的像素。矩陣中的元素可以是雙精度的浮點(diǎn)類型、8位或16位無符號的整數(shù)類型。大多數(shù)情況下,灰度圖像很少和顏色映射表一起保存,但是在顯示灰度圖像時(shí),MATLAB仍然在后臺使用系統(tǒng)預(yù)定義的默認(rèn)灰度顏色映射表。</p><p><b>  3、RGB圖像</b></p><p>  RGB圖

43、像即真菜圖像,在MATLAB中存儲為n*m*3的數(shù)據(jù)矩陣。數(shù)組中的元素定義了圖像中的每一個(gè)像素的紅、綠、藍(lán)顏色值。需指出的是,RGB圖像不是用windows的顏色映射表,像素的顏色由保存在像素位置上的紅、綠、藍(lán)的灰度值的組合來確定。圖形文件格式把RGB圖像存儲為24位的圖像,紅、綠、藍(lán)分別占8位,這樣可以有1000多萬種顏色。</p><p><b>  4、二值圖像</b></p&g

44、t;<p>  與灰度圖像相同,二值圖像只需要一個(gè)數(shù)據(jù)矩陣,每個(gè)像素只取兩個(gè)灰度值。</p><p>  1.3.5 MATLAB 的主要應(yīng)用</p><p>  MATLAB 的應(yīng)用范圍非常廣,包括信號和圖像處理、通訊、控制系統(tǒng)設(shè)計(jì)、測試和測量、財(cái)務(wù)建模和分析以及計(jì)算生物學(xué)等眾多應(yīng)用領(lǐng)域。附加的工具箱(單獨(dú)提供的專用MATLAB函數(shù)集)擴(kuò)展了MATLAB 環(huán)境,以解決這些應(yīng)

45、用領(lǐng)域內(nèi)特定類型的問題。</p><p>  MATLAB 產(chǎn)品族可以用來進(jìn)行以下各種工作:</p><p> ?、贁?shù)值分析 ②數(shù)值和符號計(jì)算 ③工程與科學(xué)繪圖 ④控制系統(tǒng)的設(shè)計(jì)與仿真</p><p> ?、輸?shù)字圖像處理技術(shù) ⑥數(shù)字信號處理技術(shù) ⑦通訊系統(tǒng)設(shè)計(jì)與仿真</p><p> ?、嘭?cái)務(wù)與金融工程 ⑨管理與調(diào)度

46、優(yōu)化計(jì)算(運(yùn)籌學(xué))</p><p><b>  1.4 函數(shù)介紹</b></p><p>  Imshow 顯示圖像</p><p>  Im2bw 轉(zhuǎn)換圖像為二進(jìn)制圖像</p><p>  Imread 從圖像文件中讀?。ㄝd入)圖像</p><p>  Edge 圖像邊緣檢測</p&

47、gt;<p>  Graythresh 使用最大類間方差法找到圖片的一個(gè)合適的閾值。</p><p>  Rgb2gray 轉(zhuǎn)換RGB圖像或顏色映像表為灰色圖像</p><p>  Double 轉(zhuǎn)換數(shù)據(jù)為雙精度型</p><p>  Asind 反正弦函數(shù)</p><p>  Regionprops 用來度量圖像區(qū)域

48、屬性的函數(shù),常用來統(tǒng)計(jì)被標(biāo)記的區(qū)域的面積積分,顯示區(qū)域總數(shù)。</p><p><b>  課程設(shè)計(jì)內(nèi)容和要求</b></p><p>  2.1 主要研究內(nèi)容</p><p>  從所拍攝的圖像中檢測多邊形目標(biāo)區(qū)域的幾何中心、周長、面積和主軸方向。</p><p><b>  三.設(shè)計(jì)過程.</b>

49、</p><p>  3.1 設(shè)計(jì)方案及步驟</p><p>  (1)U盤圖像,先進(jìn)行灰度化、中值濾波等基本操作,平滑背景噪聲。</p><p>  (2)二值化,并進(jìn)行形態(tài)學(xué)開閉運(yùn)行,去除背景的雜點(diǎn)噪聲。</p><p> ?。?)定位左上角、右上角、左下角,進(jìn)而利用直線擬合知識,得到直線方程。</p><p> 

50、 (4)根據(jù)U盤矩形特點(diǎn),繪制平行線,通過計(jì)算交點(diǎn)定位出右下角。</p><p>  (5)得到四周邊界后,可以生成二值化蒙版圖像,進(jìn)而計(jì)算周長、質(zhì)心、面積等基本參數(shù)。</p><p>  3.2 程序清單及注釋.</p><p>  function varargout = MainForm(varargin)</p><p>  % MA

51、INFORM MATLAB code for MainForm.fig</p><p>  % MAINFORM, by itself, creates a new MAINFORM or raises the existing</p><p>  % singleton*.</p><p><b>  %</b></

52、p><p>  % H = MAINFORM returns the handle to a new MAINFORM or the handle to</p><p>  % the existing singleton*.</p><p><b>  %</b></p><p>  % MA

53、INFORM('CALLBACK',hObject,eventData,handles,...) calls the local</p><p>  % function named CALLBACK in MAINFORM.M with the given input arguments.</p><p><b>  %</b></p

54、><p>  % MAINFORM('Property','Value',...) creates a new MAINFORM or raises the</p><p>  % existing singleton*. Starting from the left, property value pairs are</p>

55、<p>  % applied to the GUI before MainForm_OpeningFcn gets called. An</p><p>  % unrecognized property name or invalid value makes property application</p><p>  % stop. Al

56、l inputs are passed to MainForm_OpeningFcn via varargin.</p><p><b>  %</b></p><p>  % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one</p>&l

57、t;p>  % instance to run (singleton)".</p><p><b>  %</b></p><p>  % See also: GUIDE, GUIDATA, GUIHANDLES</p><p>  % Edit the above text to modify the respons

58、e to help MainForm</p><p>  % Last Modified by GUIDE v2.5 08-Jul-2016 10:09:38</p><p>  % Begin initialization code - DO NOT EDIT</p><p>  gui_Singleton = 1;</p><p>  g

59、ui_State = struct('gui_Name', mfilename, ...</p><p>  'gui_Singleton', gui_Singleton, ...</p><p>  'gui_OpeningFcn', @MainForm_OpeningFcn, ...</p><p>

60、  'gui_OutputFcn', @MainForm_OutputFcn, ...</p><p>  'gui_LayoutFcn', [] , ...</p><p>  'gui_Callback', []);</p><p>  if nargin && ischar(varargi

61、n{1})</p><p>  gui_State.gui_Callback = str2func(varargin{1});</p><p><b>  end</b></p><p>  if nargout</p><p>  [varargout{1:nargout}] = gui_mainfcn(gui_Sta

62、te, varargin{:});</p><p><b>  else</b></p><p>  gui_mainfcn(gui_State, varargin{:});</p><p><b>  end</b></p><p>  % End initialization code - DO

63、 NOT EDIT</p><p>  % --- Executes just before MainForm is made visible.</p><p>  function MainForm_OpeningFcn(hObject, eventdata, handles, varargin)</p><p>  % This function has no

64、output args, see OutputFcn.</p><p>  % hObject handle to figure</p><p>  % eventdata reserved - to be defined in a future version of MATLAB</p><p>  % handles structure with

65、handles and user data (see GUIDATA)</p><p>  % varargin command line arguments to MainForm (see VARARGIN)</p><p>  % Choose default command line output for MainForm</p><p>  handl

66、es.output = hObject;</p><p>  InitAxes(handles);</p><p>  handles.Img = 0;</p><p>  handles.I = 0;</p><p>  handles.I2 = 0;</p><p>  handles.bw = 0;</p&

67、gt;<p>  handles.bw2 = 0;</p><p>  handles.wd = 5;</p><p>  handles.mask = 0;</p><p>  % Update handles structure</p><p>  guidata(hObject, handles);</p>

68、<p>  % UIWAIT makes MainForm wait for user response (see UIRESUME)</p><p>  % uiwait(handles.figure1);</p><p>  % --- Outputs from this function are returned to the command line.</p>

69、<p>  function varargout = MainForm_OutputFcn(hObject, eventdata, handles) </p><p>  % varargout cell array for returning output args (see VARARGOUT);</p><p>  % hObject handle to fig

70、ure</p><p>  % eventdata reserved - to be defined in a future version of MATLAB</p><p>  % handles structure with handles and user data (see GUIDATA)</p><p>  % Get default comm

71、and line output from handles structure</p><p>  varargout{1} = handles.output;</p><p>  ------------------載入圖像-------------------------------</p><p>  % --- Executes on button press

72、 in pushbutton1.</p><p>  function pushbutton1_Callback(hObject, eventdata, handles)</p><p>  % hObject handle to pushbutton1 (see GCBO)</p><p>  % eventdata reserved - to be de

73、fined in a future version of MATLAB</p><p>  % handles structure with handles and user data (see GUIDATA)</p><p>  filename = fullfile(pwd, '5.JPG');%圖像的路徑 </p><p>  Img

74、= imread(filename);%讀入圖像</p><p>  axes(handles.axes1); imshow(Img, []);</p><p>  title('原圖像');</p><p>  handles.Img = Img;</p><p>  guidata(hObject, handles);&l

75、t;/p><p>  ---------------------------圖像灰度化-----------------------------------------------</p><p>  % --- Executes on button press in pushbutton2.</p><p>  function pushbutton2_Callbac

76、k(hObject, eventdata, handles)</p><p>  % hObject handle to pushbutton2 (see GCBO)</p><p>  % eventdata reserved - to be defined in a future version of MATLAB</p><p>  % handles

77、 structure with handles and user data (see GUIDATA)</p><p>  if isequal(handles.Img, 0)</p><p><b>  return;</b></p><p><b>  end</b></p><p>&l

78、t;b>  % 灰度化</b></p><p>  Img = handles.Img;</p><p>  if ndims(Img) == 3</p><p>  I = rgb2gray(Img);</p><p><b>  else</b></p><p><b&

79、gt;  I = Img;</b></p><p><b>  end</b></p><p>  axes(handles.axes2); imshow(I, []);</p><p>  title('灰度圖像');</p><p>  handles.I = I;</p>

80、<p>  guidata(hObject, handles);</p><p>  -----------------濾波去噪----------------------- </p><p>  % --- Executes on button press in pushbutton3.</p><p>  function pushbutton3_Ca

81、llback(hObject, eventdata, handles)</p><p>  % hObject handle to pushbutton3 (see GCBO)</p><p>  % eventdata reserved - to be defined in a future version of MATLAB</p><p>  % ha

82、ndles structure with handles and user data (see GUIDATA)</p><p>  if isequal(handles.I, 0)</p><p><b>  return;</b></p><p><b>  end</b></p><p>

83、;<b>  % 中值濾波</b></p><p>  I2 = medfilt2(handles.I);</p><p>  I2 = mat2gray(I2);</p><p>  axes(handles.axes3); imshow(I2, []);</p><p>  title('濾波圖像')

84、;</p><p>  handles.I2 = I2;</p><p>  guidata(hObject, handles);</p><p>  ------------------ 二值化---------------------</p><p>  % --- Executes on button press in pushbutt

85、on4.</p><p>  function pushbutton4_Callback(hObject, eventdata, handles)</p><p>  % hObject handle to pushbutton4 (see GCBO)</p><p>  % eventdata reserved - to be defined in a f

86、uture version of MATLAB</p><p>  % handles structure with handles and user data (see GUIDATA)</p><p>  if isequal(handles.I2, 0)</p><p><b>  return;</b></p>&l

87、t;p><b>  end</b></p><p>  I2 = handles.I2;</p><p>  bw = im2bw(I2, graythresh(I2));%圖像的二值化 </p><p>  bw = ~bw;%取反</p><p>  axes(handles.axes4); imshow(bw

88、, []);</p><p>  title('二值化圖像');</p><p>  handles.bw = bw;</p><p>  guidata(hObject, handles);</p><p>  ---------------形態(tài)學(xué)濾波------------------------- </p>

89、<p>  % --- Executes on button press in pushbutton5.</p><p>  function pushbutton5_Callback(hObject, eventdata, handles)</p><p>  % hObject handle to pushbutton5 (see GCBO)</p>&

90、lt;p>  % eventdata reserved - to be defined in a future version of MATLAB</p><p>  % handles structure with handles and user data (see GUIDATA)</p><p>  if isequal(handles.bw, 0)</p>

91、;<p><b>  return;</b></p><p><b>  end</b></p><p><b>  % 形態(tài)學(xué)濾波</b></p><p>  bw = handles.bw;</p><p>  bw = imfill(bw, 'hol

92、es');</p><p>  bw = imopen(bw, strel('square', handles.wd));</p><p>  axes(handles.axes4); imshow(bw, []);</p><p>  title('形態(tài)學(xué)濾波圖像');</p><p>  handl

93、es.bw2 = bw;</p><p>  guidata(hObject, handles);</p><p>  ---------------邊界擬合--------------------------</p><p>  % --- Executes on button press in pushbutton6.</p><p> 

94、 function pushbutton6_Callback(hObject, eventdata, handles)</p><p>  % hObject handle to pushbutton6 (see GCBO)</p><p>  % eventdata reserved - to be defined in a future version of MATLAB<

95、;/p><p>  % handles structure with handles and user data (see GUIDATA)</p><p>  if isequal(handles.bw2, 0)</p><p><b>  return;</b></p><p><b>  end<

96、/b></p><p>  bw = handles.bw2;</p><p>  wd = handles.wd;</p><p><b>  % 定位大致區(qū)域</b></p><p>  [r, c] = find(bw);</p><p><b>  % 定位有效角點(diǎn)<

97、/b></p><p>  [~, ind_min_r] = min(r);</p><p>  [~, ind_min_c] = min(c);</p><p>  [~, ind_max_c] = max(c);</p><p><b>  % 角點(diǎn)信息</b></p><p>  pt

98、_up = [c(ind_min_r)+wd r(ind_min_r)-wd];</p><p>  pt_left = [c(ind_min_c)-wd r(ind_min_c)+wd];</p><p>  pt_right = [c(ind_max_c)+wd r(ind_max_c)];</p><p><b>  % 擬合上邊界</b>

99、;</p><p>  k1 = (pt_right(2)-pt_up(2))/(pt_right(1)-pt_up(1));</p><p>  x1 = linspace(min([pt_up(1) pt_right(1)]), max([pt_up(1) pt_right(1)]), 500);</p><p>  y1 = k1*(x1-pt_up(1))

100、+ pt_up(2);</p><p><b>  % 擬合左邊界</b></p><p>  k2 = (pt_left(2)-pt_up(2))/(pt_left(1)-pt_up(1));</p><p>  x2 = linspace(min([pt_up(1) pt_left(1)]), max([pt_up(1) pt_left(1

101、)]), 500);</p><p>  y2 = k2*(x2-pt_up(1)) + pt_up(2);</p><p><b>  % 計(jì)算右下角點(diǎn)</b></p><p>  b1 = pt_left(2) - k1*pt_left(1);</p><p>  b2 = pt_right(2) - k2*pt

102、_right(1);</p><p>  [xt, yt] = linecross(k1, b1, k2, b2);</p><p>  xt = xt + 2*wd;</p><p>  yt = yt - wd;</p><p><b>  % 擬合下邊界</b></p><p>  k3 =

103、 (yt-pt_left(2))/(xt-pt_left(1));</p><p>  x3 = linspace(min([xt pt_left(1)]), max([xt pt_left(1)]), 500);</p><p>  y3 = k3*(x3-pt_left(1)) + pt_left(2);</p><p><b>  % 擬合右邊界&l

104、t;/b></p><p>  k4 = (yt-pt_right(2))/(xt-pt_right(1));</p><p>  x4 = linspace(min([xt pt_right(1)]), max([xt pt_right(1)]), 500);</p><p>  y4 = k4*(x4-pt_right(1)) + pt_right(2);

105、</p><p><b>  % 顯示</b></p><p>  axes(handles.axes3); imshow(handles.I2, []);</p><p>  title('邊界擬合');</p><p><b>  hold on;</b></p>

106、<p>  plot(pt_up(1), pt_up(2), 'r+');</p><p>  plot(pt_left(1), pt_left(2), 'g+');</p><p>  plot(pt_right(1), pt_right(2), 'b+');</p><p>  plot(x1, y1,

107、'y:');</p><p>  plot(x2, y2, 'm:');</p><p>  plot(x3, y3, 'y-.');</p><p>  plot(x4, y4, 'm-.');</p><p>  plot(xt, yt, 'c+');<

108、/p><p><b>  hold off;</b></p><p><b>  % 制作蒙版</b></p><p>  mask = zeros(size(bw));</p><p>  for i = 1 : length(x1)</p><p>  mask(round(

109、y1(i)), round(x1(i))) = 1;</p><p><b>  end</b></p><p>  for i = 1 : length(x2)</p><p>  mask(round(y2(i)), round(x2(i))) = 1;</p><p><b>  end</b>

110、;</p><p>  for i = 1 : length(x3)</p><p>  mask(round(y3(i)), round(x3(i))) = 1;</p><p><b>  end</b></p><p>  for i = 1 : length(x4)</p><p>  m

111、ask(round(y4(i)), round(x4(i))) = 1;</p><p><b>  end</b></p><p><b>  % 形態(tài)學(xué)填充</b></p><p>  mask = imfill(mask, 'holes');</p><p>  mask =

112、logical(mask);</p><p><b>  % 邊緣點(diǎn)</b></p><p>  ms = bwperim(mask);</p><p>  [r, c] = find(ms);</p><p>  axes(handles.axes4); imshow(handles.Img, []);</p&g

113、t;<p><b>  hold on;</b></p><p><b>  % 標(biāo)記區(qū)域邊緣</b></p><p>  for i = 1 : length(r)</p><p>  plot(c(i), r(i), 'r.');</p><p><b>

114、  end</b></p><p><b>  hold off;</b></p><p>  title('目標(biāo)區(qū)域');</p><p>  handles.mask = mask;</p><p>  guidata(hObject, handles);</p><p

115、>  -----------------參數(shù)測量--------------------------</p><p>  % --- Executes on button press in pushbutton7.</p><p>  function pushbutton7_Callback(hObject, eventdata, handles)</p><p

116、>  % hObject handle to pushbutton7 (see GCBO)</p><p>  % eventdata reserved - to be defined in a future version of MATLAB</p><p>  % handles structure with handles and user data (see G

117、UIDATA)</p><p>  if isequal(handles.mask, 0)</p><p><b>  return;</b></p><p><b>  end</b></p><p>  bw = handles.mask;</p><p><b&g

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論