版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 . . . *實踐教學實踐教學*理工大學理工大學計算機與通信學院2012 年秋季學期 圖像處理圖像處理綜合訓練綜合訓練題 目:圖像邊緣檢測程序設(shè)計專業(yè)班級:姓 名:學 號:指導教師:成 績: . . . 目目 錄錄摘要 1一、前言 2二、算法分析與描述 3三、詳細設(shè)計過程 7四、調(diào)試過程中出現(xiàn)的問題與相應解決辦法 11五、程序運行截圖與其說明 12六、簡單操作手冊 15設(shè)計總結(jié) 18參考資料 19致 20附錄 21 . . . 0 / 31摘摘 要要圖像處理就是對圖像信息加工以滿足人的視覺心理或應用需求的方法。圖像處理方法有光學方法和電子學方法。數(shù)字圖像處理是利用數(shù)字計算機或其它的硬件設(shè)備對
2、圖像信息轉(zhuǎn)換而得到的電信號進行某些數(shù)學處理以提高圖像的實用性。邊緣檢測是目前圖像分析領(lǐng)域中的基礎(chǔ)技術(shù),也是數(shù)字圖像處理中的一項重要容。它利用圖像一階倒數(shù)的極值或二階倒數(shù)的過零點信息來提取邊緣。本文對圖像邊緣檢測的幾種經(jīng)典算法包括一階微分的 Sobel 算子、Robert 算子、Priwitt 算子,二階微分 laplacian 算子與 Canny 算子。通過實例圖像對不同邊緣檢測算法的效果進行分析,比較了不同算法的特點和適用圍。關(guān)鍵詞:圖像處理;邊緣檢測;一階微分;二階微分 . . . 1 / 31一、前言一、前言在實際圖像邊緣檢測問題中圖像的邊緣作為圖像的一種基本特征經(jīng)常被應用到較高層次的圖
3、像應用中去。它在圖像識別圖像分割圖像增強以與圖像壓縮等的領(lǐng)域中有較為廣泛的應用也是它們的基礎(chǔ)。圖像邊緣是圖像最基本的特征之一往往攜帶著一幅圖像的大部分信息。而邊緣存在于圖像的不規(guī)則結(jié)構(gòu)和不平穩(wěn)現(xiàn)象中也即存在于信號的突變點處這些點給出了圖像輪廓的位置。這些輪廓常常是我們在圖像邊緣檢測時所需要的非常重要的一些特征條件這就需要我們對一幅圖像檢測并提取出它的邊緣。邊緣是以圖像的局部特征不連續(xù)的形式出現(xiàn)的,也就是指圖像局部亮度變化最顯著的部分,同時邊緣也是不同區(qū)域的分界處。邊緣檢測是圖像特征提取的重要技術(shù)之一, 邊緣常常意味著一個區(qū)域的終結(jié)和另一個區(qū)域的開始。 圖像的邊緣包含了物體形狀的重要信息,它不僅
4、在分析圖像時大幅度地減少了要處理的信息量,而且還保護了目標的邊界結(jié)構(gòu),它對于我們進行高層次的特征描述、識別和理解等有著重大的影響。又由于邊緣檢測是圖像分割、目標區(qū)域的識別、區(qū)域形狀提取等圖像分析領(lǐng)域十分重要的基礎(chǔ),是圖像識別中提取圖像特征的一個重要屬性。圖像理解和分析的第一步往往就是邊緣檢測。在工程應用中占有十分重要的地位,所以人們一直在致力于研究和解決如何構(gòu)造出具有良好性質(zhì)與好的效果的邊緣檢測算子的問題。本次的目的是從理論上對幾種經(jīng)典的邊緣檢測算法(Sobel 算子、Robert 算子、Priwitt 算子、laplacian 算子與 Canny 算子)進行分析,并用實現(xiàn)這些算法。最后,通過
5、實例圖像對不同邊緣檢測算法的效果進行分析,找出各種算法的適用圍。 . . . 2 / 31二、算法分析與描述二、算法分析與描述2.12.1 基于一階微分的邊緣的檢測1、Sobel 算子Sobel 算子和P rew it t 算子都是一階的微分算子,都是先對圖像進行平滑處理, 雖然兩者都是加權(quán)平均濾波, 但是前者鄰域的像素對當前像素產(chǎn)生的影響不是等價的, 距離不同的像素具有不同的權(quán)值, 對算子結(jié)果產(chǎn)生的影響也不同。這兩種算子對噪聲都有一定的抑制作用, 但不能完全排除檢測結(jié)果中出現(xiàn)虛假邊緣的情況。這兩者對灰度漸變低噪聲的圖像有較好的檢測效果, 但是對于混合多復雜噪聲的圖像處理效果就不理想了。正如前
6、面所講,采用鄰域可以避免在像素之間插點上計算梯度考慮一下33上圖中所示的點周圍點的排列Sobel 算子也是一種梯度幅值, , i j (11)Mssxy22其中的偏導數(shù)用下式計算:(12) )()()()(456210670432acaaacaasacaaacaasyx其中常數(shù)2c和其他的梯度算子一樣,和可用卷積模板來實現(xiàn),如圖 1.1 所示:sxsy101202101xs121000121ys 圖 11請注意這一算子把重點放在接近于模板中心的像素點Sobel 算子是邊緣檢測器中最常用的算子之一 (圖 12)45637210,aaaajiaaaa . . . 3 / 31圖 12 用于說明 S
7、obel 算子和 Prewitt 算子的鄰域像素點標記 Prewitt 算子與 Sobel 算子的方程完全一樣,只是常量 c=1所以 (13)101101101xs111000111ys請注意,與 Sobel 算子不同,這一算子沒有把重點放在接近模板中心的像素點如圖 1.3 所示2、Robert 算子 Robert 算子邊緣檢測算子也叫交叉差分算子,是一種利用局部差分尋找邊緣的算子,用領(lǐng)域的處理。22邊緣,是指周圍像素灰度有階躍變化或屋頂?shù)茸兓哪切┫袼氐募?。圖像的邊緣對應著圖像灰度的不連續(xù)性。顯然圖像的邊緣很少是從一個灰度跳到另一個灰度這樣的理想狀況。真實圖像的邊緣通常都具有有限的寬度呈現(xiàn)
8、出陡峭的斜坡狀。 邊緣的銳利程度由圖像灰度的梯度決定。梯度是一個向量,f 指出灰度變化最快的方向和變化量。 (1.5),(fyfxf (1.6)22yfxff (1.7)xfyf梯度大小由確定。而梯度方向則由確定,因此最簡單的邊緣檢測算子是用圖像的垂直和水平差分來逼近梯度算子: (1.8)1,(),(, 1,(yxfyxfyxfyxff因此當我們尋找邊緣的時候,最簡單的方法是對每一個像素計算出(1.8)的向量,然后求出它的絕對值。利用這種思想就得到了Roberts算子: (1.9)2122), 1() 1,()1, 1(),(),(yxfyxfyxfyxfyxg . . . 4 / 31其中f
9、(x,y)是具有整數(shù)像素坐標的輸入圖像。其中 g(x,y)由下面的模板計算: (13) Gx1001Gy0110同前面的梯度算子一樣,差分值將在插點x+1/2;y+1/2處計算Roberts22算子是該點連續(xù)梯度的近似值,而不是所預期的點x,y處的近似值。3、laplacian 算子平滑過的階躍邊緣二階導數(shù)是一個在邊緣點處過零的函數(shù)。拉普拉斯算子是二階導數(shù)邊緣算子。函數(shù)的拉普拉斯算子公式為),(yxf (17)22222ffxfy使用差分方程對 和方向上的二階偏導數(shù)近似如下:xy5(18) 這一近似式是以點x,y+1為中心的。用 y-1 替換 y,得到 (19)22xf 1,),2 1,(ji
10、fjifjif它是以點為中心的二階偏導數(shù)的理想近似式,類似地, , i j (110)22yf, 1),2, 1(jifjifjif把這兩個式子合并為一個算子,就成為下面能用來近似拉普拉斯算子的模板:(111)0101410102當拉普拉斯算子輸出出現(xiàn)過零點時就表明有邊緣存在,其中忽略無意義的過零點(均勻零區(qū))。原則上,過零點的位置精度可以通過線性插方法精確到子像素分辨率,不過由于噪聲,結(jié)果可能不會很精確。4Canny 算子 . . . 5 / 31檢測階躍邊緣的基本思想是在圖像中找出具有局部最大梯度幅值的像素點。檢測階躍邊緣的大部分工作集中在尋找。 Canny邊緣檢測器是高斯函數(shù)的一階導數(shù),
11、是對信噪比與定位之乘積的最優(yōu)化逼近算子Canny 1986。我們將通過下面的符號對Canny邊緣檢測器算法作一概括說明。用表示圖像,使用可分離濾波方法求圖像與高斯平滑濾波器卷,jiI積,得到的結(jié)果是一個已平滑數(shù)據(jù)陣列, ,;,jiIjiGjiS其中是高斯函數(shù)的散布參數(shù),它控制著平滑程度。 已平滑數(shù)據(jù)陣列的梯度可以使用一階有限差分近似來計算 與S i j , 22x偏導數(shù)的兩個陣列與:y,jiP,jiQ (112)2/)1, 1 1, 1,(,2/), 1 1, 1, 1,(,jiSjiSjiSjiSjiQjiSjiSjiSjiSjiP在這個正方形求有限差分的均值,以便在圖像中的同一點計算 x
12、和 y 的偏22導數(shù)梯度。幅值和方位角可用直角坐標到極坐標的坐標轉(zhuǎn)化公式來計算: (113) 22,jiQjiPjiM (114) ,/ ,(arctan,jiPjiQji其中,反正切函數(shù)包含了兩個參量,它表示一個角度,其取值圍是整個圓周圍。為高效率地計算這些函數(shù),盡量不用浮點運算梯度的幅度和方向也可以通過查找表由偏導數(shù)計算。 . . . 6 / 313 3、詳細設(shè)計過程詳細設(shè)計過程1、分析圖像的大部分主要信息都存在于圖像的邊緣中,主要表現(xiàn)為圖像局部特征的不連續(xù)性,是圖像中灰度變化比較劇烈的地方,即通常所說的信號發(fā)生奇異變化的地方。奇異信號沿邊緣走向的灰度變化劇烈,通常將邊緣劃分為階躍狀和屋頂
13、狀兩種類型如圖 3.1 所示。階躍邊緣中兩邊的灰度值有明顯的變化;而屋頂狀邊緣位于灰度增加與減少的交界處。在數(shù)學上可利用灰度的導數(shù)來刻畫邊緣點的變化,對階躍邊緣、屋頂狀邊緣分別求其一階、二階導數(shù)。圖 3.1 階躍邊緣和屋頂狀邊緣處一階和二階導數(shù)變化規(guī)律(其中第一排為理想信號,第二排對應實際信號)2、工作流程分析系統(tǒng)工作流程較為簡單,功能用于對圖像進行邊緣檢測,工作流程并不復雜。雙擊 ch1_1.exe 文件,系統(tǒng)界面就出現(xiàn)了,點擊文件,然后選擇打開,打 . . . 7 / 31開 BMP 格式的圖片文件,此時圖片就會顯示在工作區(qū)域;主要模塊的系統(tǒng)過程如圖 3.2 所示 圖 3.24、一階微分算
14、法的實驗結(jié)果與分析(1)Sobel 算子公式的定義為:(2)實驗結(jié)果分析 以 cameraman 圖片為例,用 Sobel 算法,分別給檢測結(jié)果。 理論上 Sobel 算子可以輕易在空間上實現(xiàn),Sobel 邊緣檢測器不但可以產(chǎn)生較好的邊緣檢測效果由 5.2 圖可以看出 Sobel 算子雖然檢測到的邊緣信息很豐富,也較為連續(xù),但是邊緣很模糊,嚴重的影響了視覺效果。 開始 讀取待測圖片 邊緣檢測Sobel 算子Robert 算子Priwitt 算子laplacian算子 保存 退出Canny 算子) 1, 1() 1,(2) 1, 1(|),(yxfyxfyxfyxGX| ) 1, 1() 1,(
15、2) 1, 1(yxfyxfyxf) 1, 1(), 1(2) 1, 1(|),(yxfyxfyxfyxGy| ) 1, 1(), 1(2) 1, 1(yxfyxfyxf . . . 8 / 31(4)Robert 算子的公式定義為:2122), 1() 1,()1, 1(),(),(yxfyxfyxfyxfyxg(5)Prewitt 算子:Prewitt 算子與 Soble 算子不同的地方在于沒有把重點放在接近模板中心的像素點。Prewitt 算子首先進行鄰域平均或加權(quán)平均,然后進行微分。(6)實驗結(jié)果分析 以 cameraman 圖片為例,分別用 Roberts、Prewitt 兩種算法,
16、分別給檢測結(jié)果。 通過圖 5.3 和圖 5.4 知, Roberts 算子、Prewitt 算子,都能夠比較準確的檢測出圖像的邊緣。 基于一階微分的邊緣檢測算子具有實現(xiàn)簡單、運算速度快等特點,檢測結(jié)果不可靠,不能準確判定邊緣的存在與邊緣的準確位置,造成這種情況的原因:(1)實際邊緣灰度與理想邊緣灰度值間存在差異,這類算子可能檢測出多個邊緣;(2)邊緣存在的尺度圍各不一樣,這類算子固定的大小不利于檢測出不同尺度上的所有邊緣;(3)對噪聲都比較敏感。5、二階微分算法的實驗結(jié)果與分析(1)Laplacian 算子的公式為: 22222ffxfy(2)Canny 算子的公式為:,;,jiIjiGjiS
17、(3)實驗結(jié)果分析 以 cameraman 圖片為例,分別用 Laplacian、Canny 兩種算法,分別給檢測結(jié)果。 由圖 5.5 可以看出 Laplacian 算子:對圖像中的階躍性邊緣點定位準確。 Canny:采用高斯函數(shù)對圖像進行平滑處理,該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測和連接邊緣,邊緣的連續(xù)性較好。 Laplacian 算子是對二維函數(shù)進行運算的二階導數(shù)算子,與方向無關(guān),對取向不敏感,因而計算量要小。根據(jù)邊緣的特性,Laplacian 算子可以作為邊緣提 . . . 9 / 31取算子,計算數(shù)字圖像的 Laplacian 值可以借助模板實現(xiàn),它相當于
18、高通濾波,常會出現(xiàn)一些虛假邊緣。Canny 算子是一個具有濾波、增強和檢測的多階段的優(yōu)化算子。 在進行處理前,Canny 算子增強邊緣是將鄰域(或局部)強度值有顯著變化的點突出來,一般通過計算梯度幅值來完成。Canny 分割算法采用一階偏導的有限差分來計算梯度的幅值和方向。對一個邊緣來說,其一階導數(shù)在邊界處存在一個向上的階躍,或者其二階導數(shù)過零點。在處理過程中,Canny 算法還將經(jīng)過一個非極大值抑制的過程。最后 Canny 算法將采用兩個閾值來連接邊緣。但也有不足之處,Canny 算法對整幅圖像采用同一高斯函數(shù)進行濾波,無法顧與圖像局部特征信息,邊緣檢測的閾值需要預先設(shè)定。先確定一個閾值系數(shù)
19、,該系數(shù)定義為梯度小于閾值的像素數(shù)所占邊緣像素總數(shù)的比例,以此來確定閾值。這種方法沒有利用圖像自身的信息,不具有自適應能力。 . . . 10 / 31四、調(diào)試過程中出現(xiàn)的問題與相應解決辦法四、調(diào)試過程中出現(xiàn)的問題與相應解決辦法Matlab 語言是一種解釋執(zhí)行的語言,它靈活、方便,其調(diào)試程序手段豐富,調(diào)試速度快。 。Matlab 語言與其它語言相比,把編輯、編譯、連接和執(zhí)行融為一體。它能在同一畫面上進行靈活操作快速排除輸入程序中的書寫錯誤、語法錯誤以至語意錯誤,從而加快了用戶編寫、修改和調(diào)試程序的速度,可以說在編程和調(diào)試過程中它是一種非常簡單的語言。但之前并沒有熟悉 Matlab 的編譯,出現(xiàn)
20、直接把程序復制粘貼的錯誤,后來才學習正確的編譯運行過程。代碼在運行過程中的錯誤:filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, All Files (*.*), . Pick an image);axes(handles.axes_src);fpath=pathname filename;此代碼缺少了imread讀入圖片,因此不能夠正確的運行。應在代碼后面加入如下代碼:img_src=imread(fpath); . . .
21、 11 / 31五、程序運行截圖與其說明五、程序運行截圖與其說明1、圖 5.1:是原圖,做為參考圖片 圖 5.2、圖 5.2:是 Sobel 算子運行出來后的圖片,能檢測到的邊緣信息較為連續(xù),但邊緣很模糊。 圖 5.2 . . . 12 / 313、圖 5.3:是 Roberts 算子運行出來后所得的圖片,但邊緣較細。圖 5.34、圖 5.4:是 Prewitt 算子運行后的圖片,所得的圖片精度不高,邊緣較粗。圖5.4 . . . 13 / 315、圖 5.5:是 Laplacian 算子所得,對圖像中的階躍性邊緣點定位準確,有信息丟失,邊緣不夠連續(xù)。圖 5.56、圖 5.6:是 Canny
22、算子所得,邊緣較聯(lián)系,但還是有丟失邊緣信息。圖 5.6 . . . 14 / 31六、簡單操作手六、簡單操作手1、Matlab 運行環(huán)境簡介 1)啟動 Matlab 可由下列方法之一進入 Matlab 命令行窗口: (1)開始 程序 Matlab。 (2)雙擊桌面 Matlab 圖標。2)編制、運行 Matlab 程序可用下列方法之一編制和運行 Matlab 程序選擇菜單條中的“File Open (或 New)進入 Matlab 程序編輯器,在編輯器中編輯程序。 A. 命令行以“, ”或“;”結(jié)尾。以“, ” 結(jié)尾運行時顯示該命令運行結(jié)果,以“;” 結(jié)尾不顯示該命令運行結(jié)果。 B. 注釋前加
23、“%” 。 C. 運行操作可使用命令快捷鍵。2、圖像文件的讀、寫和顯示 圖像文件的讀取 讀圖像文件的函數(shù)格式: A=imread(路徑、文件名與文件后綴 ) ,如 I=imread(e:image.bmp ) 其含義:將 e 盤中的 bmp 文件 image 賦給變量 I,bmp(windows bitmap)為位圖文件。3、得到的窗口如圖 6.1,文件菜單里包括:打開,保存,退出按鈕;圖像處理菜單里包括:Sobel 算子、Robert 算子、Priwitt 算子、laplacian 算子、Canny 算子功能相應的按鈕,分別為Sobel、Robert、Priwitt、laplacian、Ca
24、nny。 . . . 15 / 31 圖 6.14、打開圖片信息:點擊文件菜單里的打開選擇所要打開文件夾里的圖片,則有如圖 6.2 所示。 圖 6.2 . . . 16 / 315、圖像邊緣檢測:點擊圖像處理菜單,選擇里面的算子所對應的按鈕進行操作,然后選擇文件菜單里的保存按鈕保存圖片,保存到相應的文件夾,則得到的圖如圖 6.3 所示。圖 6.36、退出:若要退出,點擊文件菜單里的退出按鈕,則可退出圖像處理界面。 . . . 17 / 31設(shè)計總結(jié)設(shè)計總結(jié)通過分析幾種應用于數(shù)字圖像處理中的邊緣檢測算子,根據(jù)它們在實踐中的應用結(jié)果進行研究,主要包括:Sobel 邊緣算子、Robert 邊緣算子、
25、Prewitt 邊緣算子、laplacian 算子、Canny 邊緣算子對圖像的邊緣檢測。Sobel 算子:根據(jù)像素點上下、左右鄰點灰度加權(quán)差,在邊緣處達到極值這一現(xiàn)象檢測邊緣。提供較為精確的邊緣方向信息,邊緣定位精度不夠高。當對精度要求不是很高時,是一種較為常用的邊緣檢測方法。Robert 算子:采用對角線方向相鄰兩像素之差表示信號的突變,檢測水平和垂直方向邊緣的性能好于斜線方向,定位精度比較高,檢測出的邊緣較細。Prewitt 算子:凡灰度新值大于或等于閾值的像素點都是邊緣點。即選擇適當?shù)拈撝?T,若 P(i,j)T,則(i,j)為邊緣點,P(i,j)為邊緣圖像。這種判定是欠合理的,會造成
26、邊緣點的誤判。檢測出的邊緣比較粗,定位精度低,容易損失角點。Laplacian 算子:是二階微分算子,對圖像中的階躍性邊緣點定位準確,但會丟失一部分邊緣的方向信息,造成一些不連續(xù)的檢測邊緣。Canny 算子:采用高斯函數(shù)對圖像進行平滑處理,該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測和連接邊緣,邊緣的連續(xù)性較好。 通過這次數(shù)字圖像課程設(shè)計,讓我可以熟悉 Matlab 這個軟件。Matlab 在工業(yè)方面的應用很廣泛,我希望能有機會更深刻的學習理解它。 在指導教師的指導下,我順利的完成了這次數(shù)字圖像的課程設(shè)計,課設(shè)題目有點難度,但對我們的課程學習,和知識的運用有著很好的作用???/p>
27、之,我認為這次課程設(shè)計是不錯的,收獲也是豐富的。 . . . 18 / 31參考資料參考資料1 朱虹. 數(shù)字圖像處理基礎(chǔ)M. : 科學. 2005.4:217-2202余成波. 數(shù)字圖像處理與 MATLAB 實現(xiàn)M. : 大學出版 社.2003.7:356-3593深潔,杜宇人,高浩軍.圖像邊緣檢測技術(shù)研究J.信息技術(shù),2005(12).4建媛. 圖像處理中邊緣檢測算法的研究J. 科技信息. 2008,(4):30-325屹數(shù)字圖像處理技術(shù)與應用M:電子工業(yè),1997:35-396 王予生,卜佳俊,純.一種基于積分變換的邊緣檢測算法J. 中國圖象圖形學報. 2002,7(2):145149 .
28、 . . 19 / 31致致通過兩周的的努力,我的課程設(shè)計終于完成了。在整個課程設(shè)計中,我在學習上和思想上都受益非淺,這除了自身的努力外,與指導的老師、同學和朋友的關(guān)心、支持和鼓勵是分不開的。 在課程設(shè)計的編寫過程中, 指導老師傾注了大量的心血,一遍又一遍地指出每次編程里的具體問題,詳細講解課題,你的細心指導,嚴格把關(guān),循循善誘,在此我表示衷心感。同時我還要感在我做課設(shè)期間給予我?guī)椭耐瑢W們,沒有你們的幫助,我的課設(shè)不會那么順利。 做課程設(shè)計是一次再系統(tǒng)的學習,讓我們鞏固了我們所學的知識,讓我們以后能更好的運用于實踐打下了一定基礎(chǔ)。同時課程設(shè)計的的完成,讓我在其中學到了許多,尤其是學會了幫助合
29、作,懂得了幫助合作造就的效益和成果。在這里再次感幫助我的的同學,還有對我們精心指導的老師! . . . 20 / 31附錄附錄源程序:function varargout = Mywork(varargin)% MYWORK MATLAB code for Mywork.fig% MYWORK, by itself, creates a new MYWORK or raises the existing% singleton*.% H = MYWORK returns the handle to a new MYWORK or the handle to% the existing singl
30、eton*.% MYWORK(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in MYWORK.M with the given input arguments.% MYWORK(Property,Value,.) creates a new MYWORK or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before Myw
31、ork_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to Mywork_OpeningFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton). . . . 21 / 31% See also: GUIDE, GUID
32、ATA, GUIHANDLES% Edit the above text to modify the response to help Mywork% Last Modified by GUIDE v2.5 08-Jan-2013 20:09:06% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, Mywork_OpeningFcn, . gui_Ou
33、tputFcn, Mywork_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Exe
34、cutes just before Mywork is made visible.function Mywork_OpeningFcn(hObject, eventdata, handles, varargin) . . . 22 / 31setappdata(handles.figure_Mywork,img_src,0);% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of
35、MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to Mywork (see VARARGIN)% Choose default command line output for Myworkhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes Mywork wait for user response (see UI
36、RESUME)% uiwait(handles.figure_Mywork);% - Outputs from this function are returned to the command line.function varargout = Mywork_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in
37、 a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles.output; . . . 23 / 31% -function m_file_Callback(hObject, eventdata, handles)% hObject handle to m_file (see GCBO)% eventdata reserved -
38、 to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% -function m_file_open_Callback(hObject, eventdata, handles) filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, All Files (*.*), . Pick
39、an image);axes(handles.axes_src);%用axes命令設(shè)定當前操作的坐標軸是axes_src fpath=pathname filename;%將文件名和目錄名組合成一個完整的路徑 img_src=imread(fpath);%用imread讀入圖片,并用imshow在axes_src上顯示imshow(img_src);title(原圖);setappdata(handles.figure_Mywork,img_src,img_src);% hObject handle to m_file_open (see GCBO)% eventdata reserved -
40、 to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% - . . . 24 / 31function m_file_save_Callback(hObject, eventdata, handles)filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, All Files (
41、*.*), . Pick an image);axes(handles.axes_src);%用axes命令設(shè)定當前操作的坐標軸是axes_src fpath=pathname filename;%將文件名和目錄名組合成一個完整的路徑 img_src=imread(fpath);imshow(img_src);img_src=getappdata(handles.figure_Mywork,img_src);% hObject handle to m_file_save (see GCBO)% eventdata reserved - to be defined in a future ver
42、sion of MATLAB% handles structure with handles and user data (see GUIDATA)% -function m_file_exit_Callback(hObject, eventdata, handles)close(handles.figure_Mywork);% hObject handle to m_file_exit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with han
43、dles and user data (see GUIDATA)% -function m_image_Callback(hObject, eventdata, handles)% hObject handle to m_image (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB . . . 25 / 31% handles structure with handles and user data (see GUIDATA)% -function m_sobel_Callback(hObj
44、ect, eventdata, handles)axes(handles.axes_src);%用axes命令設(shè)定當前操作的坐標軸是axes_src img_src=getappdata(handles.figure_Mywork,img_src);A=img_src;axes(handles.axes_src);imshow(A);title(原圖);y_mask = -1 -2 -1;0 0 0;1 2 1; % 建立Y方向的模板x_mask = y_mask; % 建立X方向的模板I = im2double(A); % 將圖像數(shù)據(jù)轉(zhuǎn)化為雙精度dx = imfilter(I, x_mask
45、); % 計算X方向的梯度分量dy = imfilter(I, y_mask); % 計算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 計算梯度grad = mat2gray(grad); % 將梯度矩陣轉(zhuǎn)換為灰度圖像level = graythresh(grad); % 計算灰度閾值axes(handles.axes_dst);BW = im2bw(grad,level); % 用閾值分割梯度圖像imshow(BW); % 顯示分割后的圖像即邊緣圖像title(Sobel)% hObject handle to m_sobel (see GCBO)% eve
46、ntdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% - . . . 26 / 31-function m_Roberts_Callback(hObject, eventdata, handles)img_src=getappdata(handles.figure_Mywork,img_src);A=img_src;axes(handles.axes_src);imshow(A);title(原圖);x_
47、mask = 1 0;0 -1; % 建立X方向的模板y_mask = rot90(x_mask); % 建立Y方向的模板I = im2double(A); % 將圖像數(shù)據(jù)轉(zhuǎn)化為雙精度dx = imfilter(I, x_mask); % 計算X方向的梯度分量dy = imfilter(I, y_mask); % 計算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 計算梯度grad = mat2gray(grad); % 將梯度矩陣轉(zhuǎn)換為灰度圖像level = graythresh(grad); % 計算灰度閾值axes(handles.axes_dst);BW
48、 = im2bw(grad,level); % 用閾值分割梯度圖像imshow(BW); % 顯示分割后的圖像即邊緣圖像title(Roberts)% hObject handle to m_Roberts (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% -function m_priwitt_Callback(hObject, eventdata, handles)img_src=getappdata(handles.figure_Mywork,img_src);A=img_src;axes(handl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《我國老年人權(quán)利法律保障研究》
- 2024年太陽能光伏組件高空清洗高空作業(yè)人員安全生產(chǎn)責任認定合同3篇
- 2023年臺州市建設(shè)市政工程檢測中心有限公司招聘筆試真題
- 2024年生產(chǎn)車間承包與人力資源派遣合作協(xié)議3篇
- 義務教育質(zhì)量評價指標心得(7篇)
- 高效培訓學校培訓服務合同
- 不會再犯錯的保證書(14篇)
- 股東退股協(xié)議書格式示例
- 購房合同中的產(chǎn)權(quán)瑕疵
- 鋼筋采購協(xié)議書范本
- 新能源船舶發(fā)展現(xiàn)狀與趨勢探討
- 湖南長沙市湘一芙蓉二中學2023-2024學年數(shù)學七年級第一學期期末檢測試題含解析
- 高速鐵路牽引供電系統(tǒng)概論全套教學課件
- 科技館科普服務工作總結(jié)報告
- 大學生職業(yè)生涯規(guī)劃與就業(yè)指導(高等職業(yè))全套教學課件
- 國開電大法學本科《國際私法》期末考試總題庫(2024版)
- 不積跬步無以至千里課件
- 成人肺炎臨床診療指南
- 我的成長與收獲年度總結(jié)
- 《敘利亞戰(zhàn)局分析》課件
- 細菌分類表完整版20180720
評論
0/150
提交評論