版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- matlab課程設(shè)計(jì)報(bào)告-數(shù)字圖像處理研究
- 數(shù)字圖像處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- 數(shù)字圖像處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- 圖像處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- 數(shù)字圖像處理課程設(shè)計(jì)---數(shù)字圖像處理
- 數(shù)字信號處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- 數(shù)字圖像處理課程設(shè)計(jì)
- 數(shù)字圖像處理課程設(shè)計(jì)
- 數(shù)字圖像處理課程設(shè)計(jì)
- 2013數(shù)字圖像處理課程設(shè)計(jì)報(bào)告
- 數(shù)字圖像處理課程設(shè)計(jì)--數(shù)字圖像處理系統(tǒng)
- 數(shù)字圖像處理課程設(shè)計(jì)----matlab實(shí)現(xiàn)數(shù)字圖象銳化處理
- 數(shù)字圖像處理課程設(shè)計(jì)
- 數(shù)字圖像處理課程設(shè)計(jì)
- 信息方向課程設(shè)計(jì)報(bào)告---數(shù)字圖像處理
- 數(shù)字圖像處理課程設(shè)計(jì)報(bào)告---車輛識別
- 數(shù)字圖像處理課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 數(shù)字圖像處理課程設(shè)計(jì)論文
- 數(shù)字圖像處理課程設(shè)計(jì)報(bào)告-- 彩色圖像增強(qiáng)軟件
- 數(shù)字圖像處理課程設(shè)計(jì) (2)
評論
0/150
提交評論