版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 計算機與通信學院</b></p><p><b> 2012年秋季學期</b></p><p><b> 圖像處理綜合訓練</b></p><p> 題 目: 圖像邊緣檢測課程設計 </p><p> 專業(yè)班級: <
2、;/p><p> 姓 名: </p><p> 學 號: </p><p> 指導教師: </p><p> 成 績: </p><p><b> 目 錄</b>
3、;</p><p><b> 摘 要1</b></p><p><b> 一、前言2</b></p><p> 二、算法分析與描述3</p><p> 三、詳細設計過程8</p><p> 四、調試過程中出現(xiàn)的問題及相應解決辦法10</p>
4、<p> 五、程序運行截圖及其說明11</p><p> 六、簡單操作手冊14</p><p><b> 設計總結16</b></p><p><b> 參考資料17</b></p><p><b> 致謝18</b></p>&
5、lt;p><b> 附錄19</b></p><p><b> 摘 要</b></p><p> 在實際圖像處理問題中,圖像的邊緣作為圖像的一種基本特征,經常被應用到較高層次的圖像應用中去。它在圖像識別,圖像分割,圖像增強以及圖像壓縮等的領域中有較為廣泛的應用,也是它們的基礎。</p><p> 邊緣檢
6、測是圖像處理與分析中最基礎的內容之一,也是至今仍沒有得到圓滿解決的一類問題。圖像的邊緣包含了圖像的位置、輪廓等特征,是圖像的基本特征之一,廣泛地應用于特征描述、圖像分割、圖像增強、圖像復原、模式識別、圖像壓縮等圖像分析和處理中。因此,圖像邊緣和輪廓特征的檢測與提取方法,一直是圖像處理與分析技術中的研究熱點,新理論、新方法不斷涌現(xiàn)。</p><p> 本文研究了一些邊緣檢測算法,包括傳統(tǒng)的Roberts、Sobe
7、l、Prewitt、Canny等算法。經典邊緣檢測方法的抗噪聲性能都較差,解決該問題的主要方法就是設置閾值,把得到的圖像高頻部分與閾值相比較以達到去噪的目的,所以閾值的選取顯得尤為重要。傳統(tǒng)方法中的閾值都是通過實驗確定的,沒有統(tǒng)一的閾值選取方法。本文利用邊緣的最大后驗概率估計,介紹一種新的邊緣估計方法,從理論上說明了怎樣選取最佳閾值。文章中關于這些方法都有較詳細的介紹,以及算法的實現(xiàn)步驟,對算法均進行了仿真實驗。</p>
8、<p> 關鍵詞:邊緣檢測; 圖像處理; Matlab; Sobel; 檢測算法</p><p><b> 前言</b></p><p> 隨著信息技術的不斷發(fā)展和用戶需求的不斷增長,嵌入式系統(tǒng)逐漸走進國民生產的方方面面,其應用也日益廣泛。目前國內一個普遍被認同的定義是:以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本
9、、體積、功耗嚴格要求的專用計算機系統(tǒng)。 嵌入式系統(tǒng)的應用領域也非常廣泛。嵌入式系統(tǒng)幾乎包括了生活中的所有電器設備,如掌上 PDA 、移動計算設備、手機上網、數(shù)字電視、多媒體、汽車、數(shù)字相機、電梯、空調、安全系統(tǒng)、自動售貨機、工業(yè)自動化儀表與醫(yī)療儀器等。 </p><p> 而圖像邊緣檢測則是圖像處理中非?;A但是及其重要步驟。邊緣是兩個不同區(qū)域之間的邊界。圖像邊緣檢測是圖像處理,圖像分析,模式識別等一系列圖像處
10、理過程中最重要的步驟。目前,學界上已經有許多種不同點的方法來實現(xiàn)邊緣檢測的功能,比如說差分法(Kirsch,1971)和曲線擬合法(Haralick,1984)。傳統(tǒng)的邊緣檢測方法,比如Sobel、Prewitt、Kirsch算法,通過計算第一階方向導數(shù)來決定邊緣的位置。零點交叉邊緣檢測法(Bovik,1998)運用了二階導數(shù)和拉普拉斯算符。而Canny算法(Canny,1986)是目前學界最流行并且應用最廣泛的的高斯邊緣檢測算法。盡管
11、高斯檢測算法(Yuksel,2007)相對來說有更好的性能表現(xiàn),但是所需要的計算也比傳統(tǒng)基于求導的檢測算法復雜的多。 </p><p> 近些年來,對于圖像處理在許多不同的科學和工程領域應用的研究越來越火熱。在嵌入式系統(tǒng)上實現(xiàn)圖像處理能夠很好的解決在一般PC或者工控機上實現(xiàn)圖像處理的不足之處,比如說便攜性差,功耗大,移動性,靈活性不強等。同時加之以集成度高,與網絡的耦合也越來越緊密等特點。嵌入式系統(tǒng)將是未來工
12、業(yè)控制和其他一些行業(yè)的主要發(fā)展方向。 </p><p> 本文主要闡述了圖像邊緣檢測算法的一些理論,并對檢測的效果加以比較,同時介紹了嵌入式系統(tǒng)開發(fā)的流程,為圖像類嵌入式開發(fā)系統(tǒng)開發(fā)提出可行的方案。最后設計實現(xiàn)了邊緣檢測系統(tǒng)。</p><p><b> 二、算法分析與描述</b></p><p> 2.1 Roberts算子</p
13、><p> 由Roberts提出的算子是一種利用局部差分算子尋找邊緣的算子,對于邊界陡峭且噪比較小的圖像檢測效果比較好,它在2×2鄰域上計算對角導數(shù),</p><p> G[i,j]又稱為Roberts交叉算子。在實際應用中,為簡化運算,用梯度函數(shù)的Roberts絕對值來近似:</p><p> 用卷積模板,上式變成:</p><p&
14、gt; 其中Gx和Gy由下面圖1所示的模板計算:</p><p> 圖1 Robert邊緣檢測算子的模板</p><p> Roberts算子是該點連續(xù)梯度的近似值,而不是所預期的點處的近似值。由上面兩個卷積算子對圖像運算后,代入2式,可求得圖像的梯度幅度值G[i,j],然后選取適當?shù)拈T限TH,作如下判斷:G[i,j]>TH,[i,j]為階躍狀邊緣點,{G[i,j]}為一個二值
15、圖像,也就是圖像的邊緣。由于利用局部差分檢測比較陡峭的邊緣,但對于噪聲比較敏感,經常會出現(xiàn)孤立點,于是人們又提出了Prewitt算子[4]。</p><p> 通過分析可知,Sobel算子法對高頻成分豐富的圖像處理效果好,對中低頻成分的圖像效果差。</p><p> 2.2 Prewitt算子</p><p> 為在檢測邊緣的同時減少噪聲的影響,Prewit
16、t算子從加大邊緣檢測算子出發(fā)。由2×2擴大到3×3來計算差分算子,所以其卷積模板為圖2所示:</p><p> 圖2 Prewitt邊緣檢測算子的模板</p><p> 在圖像中的每個像素位置都用這2個模板做卷積,Prewitt算子將方向差分運算與局部平均結合起來,表達式如下:</p><p> 根據兩式可以計算Prewitt梯度,選取適當
17、的閾值T,對梯度圖像二值化,得到一幅邊緣二值圖像。采用Prewitt算子不僅能檢測邊緣點,而且還能抵制噪聲的影響[5]。</p><p> 通過分析可知,Prewitt算子法對高頻成分豐富的圖像處理效果好,對中低頻成分的圖像效果差。</p><p> 2.3 Sobel算子</p><p> 傳統(tǒng)的Sobel圖像邊緣檢測方法,是在圖像空間利用兩個方向模板與圖
18、像進行鄰域卷積來完成的。這兩個方向模板一個檢測垂直邊緣,一個檢測水平邊緣,如圖3所示。圖中,模板內的數(shù)字為模板系數(shù),梯度方向與邊緣方向總是正交</p><p> 水平邊緣Sobel算子垂直邊緣Sobel算子</p><p> 圖3 Sobel算子</p><p> 模板元素和窗口像素之間的對應關系(以3×3窗口為例)定義如下:</p>
19、<p><b> 設窗口灰度為:</b></p><p> 模板卷積計算就是下式求乘積和的過程:</p><p> 式中,i=1,2分別代表垂直和水平模板。為模板卷積法邊緣檢測的輸出,,L為窗口寬度,對3×3窗口,l=1。將兩個卷積結果的最大值,賦給圖像中對應模板中心位置的像素,作為該像素的新灰度值,即:</p><p&
20、gt; 通過分析可知,Sobel算子法對高頻成分豐富的圖像處理效果好,對中低頻成分的圖像效果差。</p><p> 2.4 Laplacian算子</p><p> 拉普拉斯算子是二階導數(shù)的二維等效式。函數(shù)f(x,y)的拉普拉斯算子公式為:</p><p> 使用差分方程對x和y方向上的二階偏導數(shù)近似如下:</p><p> 這一
21、近似式是以點f[i,j+1]為中心的,用j-1替換j得到</p><p> 它是以點[i,j]為中心的二階偏導數(shù)的理想近似式,類似地,</p><p> 把式(2-3)和式(2-4)合并為一個算子,就成為式(2-5)能用來近似拉普拉斯算子的模板:</p><p> 有時候希望鄰域中心點具有更大的權值,比如下面式(2-6)的模板就是一種基于這種思想的近似拉普拉斯
22、算子:</p><p> 當拉普拉斯算子輸出出現(xiàn)過零點時就表明有邊緣存在,其中忽略無意義的過零點(均勻零區(qū))。原則上,過零點的位置精度可以通過線性內插方法精確到子像素分辨率。</p><p> 通過分析可知,它不過由于噪聲,以及由噪聲引起的邊緣兩端的不對稱性,結果可能不會很精確。</p><p> 2.5 Canny算子</p><p&g
23、t; Canny檢測階躍邊緣的基本思想是在圖像中找出具有局部最大梯度幅值的像素點。檢測階躍邊緣的大部分工作集中在尋找能夠用于實際圖像的梯度數(shù)字逼近。由于實際的圖像經過了攝像機光學系統(tǒng)和電路系統(tǒng)(帶寬限制)固有的低通濾波器的平滑,因此,圖像中的階躍邊緣不是十分陡立。圖像也受到攝像機噪聲和場景中不希望的細節(jié)的干擾。圖像梯度逼近必須滿足兩個要求:首先逼近必須能夠抑制噪聲效應;其次必須盡量精確地確定邊緣的位置。抑制噪聲和邊緣精確定位是無法同時
24、得到滿足的,也就是說,邊緣檢測算法通過圖像平滑算子去除了噪聲,但卻增加了邊緣定位的不確定性;反過來,若提高邊緣檢測算子對邊緣的敏感性,同時也提高了對噪聲的敏感性。有一種線性算子可以在抗噪聲干擾和精確定位之間提供最佳折衷方案,它就是高斯函數(shù)的一階導數(shù)。</p><p> 通過分析可知,采用高斯函數(shù)對圖像進行平滑處理,因此具有較強的噪聲抑制能力;同樣該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測和
25、連接邊緣,邊緣的連續(xù)性較好。</p><p><b> 詳細設計過程</b></p><p> Roberts算子、Sobel算子、Prewitt算子的檢測效果相差不大,三種算子的檢測效果較之Canny和Log算子還是存在一定的差距。這三種檢測算子的閾值選擇范圍與log和canny算子相比要小些。邊緣點不夠銳利和明確,線邊緣檢測要好于點邊緣檢測。總體而言由于Pre
26、witt 算子受噪聲影響較小,故檢測效果要略好于另外兩種。</p><p> 由于Roberts算子是利用圖像的兩個對角線的相鄰像素之差進行梯度幅值的檢測,所以求得的是在差分點處梯度幅值的近似值,并且檢測水平和垂直方向邊緣的性能好于斜線方向的邊緣,檢測精度比較高,但容易丟失一部分邊緣,同時由于沒經過圖像平滑計算,因此不能抑制噪聲,但該算子對具有陡峭的低噪聲圖像響應最好。</p><p>
27、 Prewitt算子和Sobel算子都是對圖像進行差分和濾波運算,僅在平滑部分的權值選擇上有些差異,因此兩者均對噪聲具有一定的抑制能力,但這種抗噪能力是通過像素平均來實現(xiàn)的,所以圖像產生了一定的模糊,而且還會檢測出一些偽邊緣,所以檢測精度比較低,該算子比較適合用于圖像邊緣灰度值比較尖銳且圖像噪聲比較小的情況。</p><p> Canny算子采用高斯函數(shù)對圖像進行平滑處理具有較強的去噪能力,容易平滑掉一些邊緣
28、信息,邊緣定位精度較高。該算子與其它邊緣檢測算子的不同之處在于,它使用2種不同的閾值分別檢測強邊緣和弱邊緣,并且僅當弱邊緣相連時才將弱邊緣包含在輸出圖像中,因此這種方法較其它方法而言不容易被噪聲“填充”更容易檢測出真正的弱邊緣。通過對lena圖的仿真實驗結果可以看出,該算子在上述幾種邊緣檢測算子當中效果最好。邊緣定位準確,連續(xù)性較好,虛假邊緣少且邊緣均具有單像素寬度。</p><p> LoG算子首先通過高斯函
29、數(shù)對圖像進行平滑處理,因此對噪聲的抑制作用比較明顯,但同時也可能將原有的邊緣也平滑了,造成某些邊緣無法檢測到,比外高斯分布因子的選擇對圖像邊緣檢測效果有較大的影響,越大,檢測到的圖像細節(jié)越豐富,但抗噪能力下降,從而出現(xiàn)偽邊緣,反之則抗噪能力提高,但邊緣精度下降,易丟失許多真邊緣,因此,對于不同圖像應選擇不同參數(shù)。</p><p> Roberts算子:采用對角線方向相鄰兩像素之差表示信號的突變,檢測水平和垂直方
30、向邊緣的性能好于斜線方向,定位精度比較高,但對噪聲敏感,檢測出的邊緣較細。</p><p> Prewitt算子:對噪聲有平滑作用,檢測出的邊緣比較粗,定位精度低,容易損失角點。</p><p> Sobel算子:產生的邊緣效果較好,對噪聲具有平滑作用。但存在偽邊緣,邊緣比較粗且定位精度低。</p><p> Laplacian算子:是二階微分算子,對圖像中的
31、階躍性邊緣點定位準確,對噪聲非常敏感,丟失一部分邊緣的方向信息,造成一些不連續(xù)的檢測邊緣。</p><p> Canny算子:采用高斯函數(shù)對圖像進行平滑處理,因此具有較強的噪聲抑制能力;同樣該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測和連接邊緣,邊緣的連續(xù)性較好。</p><p> 調試過程中出現(xiàn)的問題及相應解決辦法</p><p> 4.
32、1 代碼在運行過程中的錯誤:</p><p> [filename, pathname] = uigetfile( ... </p><p> {'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files (*.bmp, *.jpg, *.png, *.jpeg)'; ... </p><p>
33、 '*.*', 'All Files (*.*)'}, ... </p><p> 'Pick an image');</p><p> axes(handles.axes_src);</p><p> fpath=[pathname filename];<
34、/p><p> 此代碼缺少了imread讀入圖片,因此不能夠正確的運行。應在代碼后面加入如下代碼:</p><p> img_src=imread(fpath);</p><p> 4.2 圖像運行過程中出現(xiàn)的錯誤:</p><p> 應該將代碼中的I=rgb2gray();改為I=rgb2gray(I);</p><
35、p> 五、程序運行截圖及其說明</p><p> 5.1 Roberts算子圖像邊緣檢測截圖如圖(4)所示</p><p><b> 圖(4)</b></p><p> 5.2 Prewitt算子圖像邊緣檢測截圖如圖(5)所示</p><p><b> 圖(5)</b></
36、p><p> 5.3 Sobel算子圖像邊緣檢測如圖(6)所示</p><p><b> 圖(6)</b></p><p> 5.4 Laplacian算子圖像邊緣檢測如圖(7)所示</p><p><b> 圖(7)</b></p><p> 5.5 Canny算子圖
37、像邊緣檢測如圖(8)所示</p><p><b> 圖(8)</b></p><p><b> 簡單操作手冊</b></p><p> 本系統(tǒng)主要是對圖像邊緣檢測中一階微分算子,二階微分算子等的實現(xiàn),以Sobel為例,在程序實現(xiàn)的過程中主要步驟有以下幾點:</p><p> 6.1 程序執(zhí)行
38、的初始界面如圖(9)所示 </p><p><b> 圖(9)</b></p><p> 6.2 打開圖象進行Sobel算子邊緣檢測界面如圖(10)所示 </p><p><b> 圖(10)</b></p><p> 6.3 經Sobel算子處理后的圖象如圖(11)所示</p>
39、;<p><b> 圖(11)</b></p><p><b> 6.4 退出程序</b></p><p><b> 設計總結</b></p><p> 雖然這次課程設計只有二個星期的時間,但是我們對圖像處理的各種方法及應用有了更深的理解,學會了應用MATLAB軟件及GUI來實
40、現(xiàn)界面的操作和編程處理。MATLAB是我們在以前和以后的學習工作中都會經常應用到的軟件,但是在以前還是對其了解不足,操作不是很了解,在實習之初便因為這個問題而無從下手。于是我們尋找了許多這方面的書籍以及應用網絡教程來對其進行學習,逐漸的增強了對MATLAB及GUI的了解,能夠摸索著開始進行編寫。實習中也遇到了很多問題,但通過查閱書籍、同學間討論、請教老師以及網上查找最終能夠得以解決,完成這次實習。</p><p>
41、; 通過這次課程設計,對其的一些常見函數(shù)以及與圖像處理相關的函數(shù)都比較了解,并能夠應用這些函數(shù)來解決圖像處理的問題。GUI對于我們是一個新的知識,通過各方面的學習,我們最終對GUI也有了比較深的了解,能夠很順利的應用GUI來設計出適合并且美觀的界面。圖像處理是我們這學期的一門很重要的課程,在課上雖然學習了很多知識,但是不經過自己動手操作而只看到書上的一些概念和處理的圖片并不能很清楚的了解到各種操作的效果,并且不動手操作,知識就只能局限
42、于書本上。經過這次課程設計,不但能夠讓我們再次復習了本學期所學的圖像處理的知識,加深了對這些知識的記憶,并且讓我們對圖像處理的各種處理方法如Sobel算子、Robert算子、Priwitt算子、拉普拉斯算子、Canny等對圖像產生的效果有了更加直觀的了解,不但加深了記憶也能因此更加了解各種處理方法的應用,可以用MATLAB軟件來對這些處理來實現(xiàn)。</p><p> 這次課程設計要實現(xiàn)的內容比較多,其中有一些易操
43、作的也有一些比較復雜的,在實習過程中也會遇到一些難以突破的問題,但是在這個過程中需要我們耐心的學習,一步一步通過各種途經學習到解決的方法,也培養(yǎng)了我們的耐心和學習的能力。這次是兩人一組的實習,因此合理的分工合作也是很重要的,通過實習也培養(yǎng)了我們之間分工協(xié)作互幫互助的精神。</p><p> 總體來說,我們的這次課程設計還是比較成功的,較為成功的完成了我們的邊緣圖像檢測,并且達到到了我們這次課程設計的目的。<
44、;/p><p><b> 參考資料</b></p><p> [1] 朱虹. 數(shù)字圖像處理基礎[M]. 科學出版社, 2005</p><p> [2] R C.Gonzalez, R E.Woods著,阮秋琦,阮宇智等譯.數(shù)字圖像處理(第2版).北京:電子工業(yè)出版社,2003</p><p> [3] K.R.Ca
45、stleman. 數(shù)字圖像處理.北京:電子工業(yè)出版社,2002</p><p> [4] 章毓晉.圖像處理與分析-圖像工程(上冊),清華大學,2001</p><p> [5] 何斌等編著.Visual C++數(shù)字圖像處理.人民郵電出版社,2002 </p><p> [6] 張宏林編著.Visual C++數(shù)字圖像模式識別技術及工程實踐.人民郵電出版社,20
46、03.</p><p> [7] 黃維通.Visual C++面向對象與可視化程序設計.清華大學出版社,2003</p><p> [8] R C.Gonzalez, R E.Woods, S L. Eddins著,阮秋琦,阮宇智等譯.數(shù)字圖像處理(MATLAB版).北京:電子工業(yè)出版社,2005</p><p> [9] 李赤楓, 王 俊, 李 克, 等.
47、自生Mg2Si顆粒增強Al基復合材料的組織細化[J]. 中國有色金屬學報, 2004, 14(2): 233-237.</p><p> [10] 殷 聲. 燃燒合成[M]. 北京: 冶金工業(yè)出版社, 2004: 25-44.</p><p> [11] 王文新.大象征收過路費. 2006.5.21</p><p><b> 致謝</b>
48、;</p><p> 在這次課程設計的設計過程中,我得到了許多人的幫助。 首先我要感謝我的老師在課程設計上給予我的指導、提供給我的支持和幫助,這是我能順利完成這次報告的主要原因,更重要的是老師幫我解決了許多技術上的難題,讓我能把系統(tǒng)做得更加完善。在此期間,我不僅學到了許多新的知識,而且也開闊了視野,提高了自己的設計能力。 其次,我要感謝幫助過我的同學,他們也為我解決了不少我不太明白的代碼難題,
49、在一個個小問題上給了我很大的幫助。 最后再一次感謝所有在設計中曾經幫助過我的良師益友和同學。</p><p><b> 附錄</b></p><p> function varargout = Mywork(varargin)</p><p> gui_Singleton = 1;</p><p> gu
50、i_State = struct('gui_Name', mfilename, ...</p><p> 'gui_Singleton', gui_Singleton, ...</p><p> 'gui_OpeningFcn', @Mywork_OpeningFcn, ...</p><p> &
51、#39;gui_OutputFcn', @Mywork_OutputFcn, ...</p><p> 'gui_LayoutFcn', [] , ...</p><p> 'gui_Callback', []);</p><p> if nargin && ischar(varargin{1})
52、</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_State, v
53、arargin{:});</p><p><b> else</b></p><p> gui_mainfcn(gui_State, varargin{:});</p><p><b> end</b></p><p> function Mywork_OpeningFcn(hObject,
54、 eventdata, handles, varargin)</p><p> setappdata(handles.figure_Mywork,'img_src',0);</p><p> handles.output = hObject;</p><p> guidata(hObject, handles);</p><
55、p> function varargout = Mywork_OutputFcn(hObject, eventdata, handles) </p><p> varargout{1} = handles.output;</p><p> function m_file_Callback(hObject, eventdata, handles)</p><p
56、> function m_file_open_Callback(hObject, eventdata, handles) </p><p> [filename, pathname] = uigetfile( ... </p><p> {'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files (*.bmp, *.j
57、pg, *.png, *.jpeg)'; ... </p><p> '*.*', 'All Files (*.*)'}, ... </p><p> 'Pick an image');</p><p> axes(handles.axes_src);%用
58、axes命令設定當前操作的坐標軸是axes_src </p><p> fpath=[pathname filename];%將文件名和目錄名組合成一個完整的路徑 </p><p> img_src=imread(fpath);%用imread讀入圖片,并用imshow在axes_src上顯示</p><p> imshow(img_src);</p&g
59、t;<p> title('原圖');</p><p> setappdata(handles.figure_Mywork,'img_src',img_src);</p><p> function m_file_save_Callback(hObject, eventdata, handles)</p><p>
60、 [filename, pathname] = uigetfile( ... </p><p> {'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files (*.bmp, *.jpg, *.png, *.jpeg)'; ... </p><p> '*.*',
61、'All Files (*.*)'}, ... </p><p> 'Pick an image');</p><p> axes(handles.axes_src);%用axes命令設定當前操作的坐標軸是axes_src </p><p> fpath=[pathname filename];%將文件名和目錄名組合
62、成一個完整的路徑 </p><p> img_src=imread(fpath);imshow(img_src);</p><p> img_src=getappdata(handles.figure_Mywork,'img_src');</p><p> function m_file_exit_Callback(hObject, event
63、data, handles)</p><p> close(handles.figure_Mywork);</p><p> function m_image_Callback(hObject, eventdata, handles)</p><p> function m_sobel_Callback(hObject, eventdata, handles)
64、</p><p> axes(handles.axes_src);%用axes命令設定當前操作的坐標軸是axes_src </p><p> img_src=getappdata(handles.figure_Mywork,'img_src');</p><p> A=img_src;</p><p> axes(ha
65、ndles.axes_src);</p><p> imshow(A);title('原圖');</p><p> y_mask = [-1 -2 -1;0 0 0;1 2 1]; % 建立Y方向的模板</p><p> x_mask = y_mask'; % 建立X方向的模板</p><p> I = i
66、m2double(A); % 將圖像數(shù)據轉化為雙精度</p><p> dx = imfilter(I, x_mask); % 計算X方向的梯度分量</p><p> dy = imfilter(I, y_mask); % 計算Y方向的梯度分量</p><p> grad = sqrt(dx.*dx + dy.*dy); % 計算梯度</p>
67、;<p> grad = mat2gray(grad); % 將梯度矩陣轉換為灰度圖像</p><p> level = graythresh(grad); % 計算灰度閾值</p><p> axes(handles.axes_dst);</p><p> BW = im2bw(grad,level); % 用閾值分割梯度圖像</
68、p><p> imshow(BW); % 顯示分割后的圖像即邊緣圖像</p><p> title('Sobel')</p><p> function m_Roberts_Callback(hObject, eventdata, handles)</p><p> img_src=getappdata(handles.
69、figure_Mywork,'img_src');</p><p> A=img_src;</p><p> axes(handles.axes_src);</p><p> imshow(A);title('原圖');</p><p> x_mask = [1 0;0 -1]; % 建立X方向的模板
70、</p><p> y_mask = rot90(x_mask); % 建立Y方向的模板</p><p> I = im2double(A); % 將圖像數(shù)據轉化為雙精度</p><p> dx = imfilter(I, x_mask); % 計算X方向的梯度分量</p><p> dy = imfilter(I, y_mas
71、k); % 計算Y方向的梯度分量</p><p> grad = sqrt(dx.*dx + dy.*dy); % 計算梯度</p><p> grad = mat2gray(grad); % 將梯度矩陣轉換為灰度圖像</p><p> level = graythresh(grad); % 計算灰度閾值</p><p> a
72、xes(handles.axes_dst);</p><p> BW = im2bw(grad,level); % 用閾值分割梯度圖像</p><p> imshow(BW); % 顯示分割后的圖像即邊緣圖像</p><p> title('Roberts')</p><p> function m_priwitt
73、_Callback(hObject, eventdata, handles)</p><p> img_src=getappdata(handles.figure_Mywork,'img_src');</p><p> A=img_src;</p><p> axes(handles.axes_src);</p><p>
74、; imshow(A);title('原圖');</p><p> y_mask = [-1 -1 -1;0 0 0;1 1 1]; % 建立Y方向的模板</p><p> x_mask = y_mask'; % 建立X方向的模板</p><p> I = im2double(A); % 將圖像數(shù)據轉化為雙精度</p&g
75、t;<p> dx = imfilter(I, x_mask); % 計算X方向的梯度分量</p><p> dy = imfilter(I, y_mask); % 計算Y方向的梯度分量</p><p> grad = sqrt(dx.*dx + dy.*dy); % 計算梯度</p><p> grad = mat2gray(grad)
76、; % 將梯度矩陣轉換為灰度圖像</p><p> level = graythresh(grad); % 計算灰度閾值</p><p> axes(handles.axes_dst);</p><p> BW = im2bw(grad,level); % 用閾值分割梯度圖像</p><p> imshow(BW); % 顯
77、示分割后的圖像即邊緣圖像</p><p> title('Prewitt')</p><p> function m_lapacian_Callback(hObject, eventdata, handles)</p><p> img_src=getappdata(handles.figure_Mywork,'img_src'
78、);</p><p> A=img_src;</p><p> axes(handles.axes_src);</p><p> imshow(A);title('原圖'); </p><p> mask=[0,-1,0;-1,4,-1;0,-1,0]; % 建立模板</p><p> I
79、 = im2double(A); % 將數(shù)據圖像轉化為雙精度</p><p> dx = imfilter(I, mask); % 計算梯度矩陣</p><p> grad = mat2gray(dx); % 將梯度矩陣轉化為灰度圖像</p><p> axes(handles.axes_dst);</p><p> BW =
80、im2bw(grad,0.58); % 用閾值分割梯度圖像</p><p> imshow(BW); % 顯示分割后的圖像,即梯度圖像</p><p> title('Laplacian')</p><p> function m_canny_Callback(hObject, eventdata, handles)</p>
81、<p> img_src=getappdata(handles.figure_Mywork,'img_src');</p><p> I=img_src;</p><p> axes(handles.axes_src);</p><p> imshow(I);title('原圖');</p><p
82、> I=rgb2gray(I);</p><p> axes(handles.axes_dst);</p><p> BW = edge(I,'canny'); % 調用canny函數(shù) </p><p> imshow(BW); % 顯示分割后的圖像,即梯度圖像 </p><p> title('c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖像邊緣檢測課程設計報告
- 圖像邊緣檢測系統(tǒng)設計-數(shù)字圖像處理_課程設計說明書
- 圖像邊緣檢測系統(tǒng)設計-數(shù)字圖像處理_課程設計說明書
- 圖像邊緣檢測系統(tǒng)設計-數(shù)字圖像處理_課程設計說明書
- 圖像邊緣檢測
- 數(shù)字圖像處理課程設計--人臉檢測
- 實驗三圖像邊緣檢測
- 圖像邊緣檢測算法
- 圖像分割與邊緣檢測
- 圖像處理課程設計
- 圖像處理課程設計
- 圖像增強課程設計
- 圖像邊緣檢測方法研究.pdf
- 外文翻譯---圖像的邊緣檢測
- 圖形圖像課程設計---圖像銳化
- 數(shù)字圖像課程設計
- matlab課程設計--圖像處理
- 基于FPGA的圖像邊緣檢測系統(tǒng)設計.pdf
- mtalab圖像處理課程設計
- 圖像邊緣檢測與應用.pdf
評論
0/150
提交評論