版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 . . . *實(shí)踐教學(xué)實(shí)踐教學(xué)*理工大學(xué)理工大學(xué)計(jì)算機(jī)與通信學(xué)院2012 年秋季學(xué)期 圖像處理圖像處理綜合訓(xùn)練綜合訓(xùn)練題 目:圖像邊緣檢測(cè)程序設(shè)計(jì)專業(yè)班級(jí):姓 名:學(xué) 號(hào):指導(dǎo)教師:成 績(jī): . . . 目目 錄錄摘要 1一、前言 2二、算法分析與描述 3三、詳細(xì)設(shè)計(jì)過程 7四、調(diào)試過程中出現(xiàn)的問題與相應(yīng)解決辦法 11五、程序運(yùn)行截圖與其說明 12六、簡(jiǎn)單操作手冊(cè) 15設(shè)計(jì)總結(jié) 18參考資料 19致 20附錄 21 . . . 0 / 31摘摘 要要圖像處理就是對(duì)圖像信息加工以滿足人的視覺心理或應(yīng)用需求的方法。圖像處理方法有光學(xué)方法和電子學(xué)方法。數(shù)字圖像處理是利用數(shù)字計(jì)算機(jī)或其它的硬件設(shè)備對(duì)
2、圖像信息轉(zhuǎn)換而得到的電信號(hào)進(jìn)行某些數(shù)學(xué)處理以提高圖像的實(shí)用性。邊緣檢測(cè)是目前圖像分析領(lǐng)域中的基礎(chǔ)技術(shù),也是數(shù)字圖像處理中的一項(xiàng)重要容。它利用圖像一階倒數(shù)的極值或二階倒數(shù)的過零點(diǎn)信息來提取邊緣。本文對(duì)圖像邊緣檢測(cè)的幾種經(jīng)典算法包括一階微分的 Sobel 算子、Robert 算子、Priwitt 算子,二階微分 laplacian 算子與 Canny 算子。通過實(shí)例圖像對(duì)不同邊緣檢測(cè)算法的效果進(jìn)行分析,比較了不同算法的特點(diǎn)和適用圍。關(guān)鍵詞:圖像處理;邊緣檢測(cè);一階微分;二階微分 . . . 1 / 31一、前言一、前言在實(shí)際圖像邊緣檢測(cè)問題中圖像的邊緣作為圖像的一種基本特征經(jīng)常被應(yīng)用到較高層次的圖
3、像應(yīng)用中去。它在圖像識(shí)別圖像分割圖像增強(qiáng)以與圖像壓縮等的領(lǐng)域中有較為廣泛的應(yīng)用也是它們的基礎(chǔ)。圖像邊緣是圖像最基本的特征之一往往攜帶著一幅圖像的大部分信息。而邊緣存在于圖像的不規(guī)則結(jié)構(gòu)和不平穩(wěn)現(xiàn)象中也即存在于信號(hào)的突變點(diǎn)處這些點(diǎn)給出了圖像輪廓的位置。這些輪廓常常是我們?cè)趫D像邊緣檢測(cè)時(shí)所需要的非常重要的一些特征條件這就需要我們對(duì)一幅圖像檢測(cè)并提取出它的邊緣。邊緣是以圖像的局部特征不連續(xù)的形式出現(xiàn)的,也就是指圖像局部亮度變化最顯著的部分,同時(shí)邊緣也是不同區(qū)域的分界處。邊緣檢測(cè)是圖像特征提取的重要技術(shù)之一, 邊緣常常意味著一個(gè)區(qū)域的終結(jié)和另一個(gè)區(qū)域的開始。 圖像的邊緣包含了物體形狀的重要信息,它不僅
4、在分析圖像時(shí)大幅度地減少了要處理的信息量,而且還保護(hù)了目標(biāo)的邊界結(jié)構(gòu),它對(duì)于我們進(jìn)行高層次的特征描述、識(shí)別和理解等有著重大的影響。又由于邊緣檢測(cè)是圖像分割、目標(biāo)區(qū)域的識(shí)別、區(qū)域形狀提取等圖像分析領(lǐng)域十分重要的基礎(chǔ),是圖像識(shí)別中提取圖像特征的一個(gè)重要屬性。圖像理解和分析的第一步往往就是邊緣檢測(cè)。在工程應(yīng)用中占有十分重要的地位,所以人們一直在致力于研究和解決如何構(gòu)造出具有良好性質(zhì)與好的效果的邊緣檢測(cè)算子的問題。本次的目的是從理論上對(duì)幾種經(jīng)典的邊緣檢測(cè)算法(Sobel 算子、Robert 算子、Priwitt 算子、laplacian 算子與 Canny 算子)進(jìn)行分析,并用實(shí)現(xiàn)這些算法。最后,通過
5、實(shí)例圖像對(duì)不同邊緣檢測(cè)算法的效果進(jìn)行分析,找出各種算法的適用圍。 . . . 2 / 31二、算法分析與描述二、算法分析與描述2.12.1 基于一階微分的邊緣的檢測(cè)1、Sobel 算子Sobel 算子和P rew it t 算子都是一階的微分算子,都是先對(duì)圖像進(jìn)行平滑處理, 雖然兩者都是加權(quán)平均濾波, 但是前者鄰域的像素對(duì)當(dāng)前像素產(chǎn)生的影響不是等價(jià)的, 距離不同的像素具有不同的權(quán)值, 對(duì)算子結(jié)果產(chǎn)生的影響也不同。這兩種算子對(duì)噪聲都有一定的抑制作用, 但不能完全排除檢測(cè)結(jié)果中出現(xiàn)虛假邊緣的情況。這兩者對(duì)灰度漸變低噪聲的圖像有較好的檢測(cè)效果, 但是對(duì)于混合多復(fù)雜噪聲的圖像處理效果就不理想了。正如前
6、面所講,采用鄰域可以避免在像素之間插點(diǎn)上計(jì)算梯度考慮一下33上圖中所示的點(diǎn)周圍點(diǎn)的排列Sobel 算子也是一種梯度幅值, , i j (11)Mssxy22其中的偏導(dǎo)數(shù)用下式計(jì)算:(12) )()()()(456210670432acaaacaasacaaacaasyx其中常數(shù)2c和其他的梯度算子一樣,和可用卷積模板來實(shí)現(xiàn),如圖 1.1 所示:sxsy101202101xs121000121ys 圖 11請(qǐng)注意這一算子把重點(diǎn)放在接近于模板中心的像素點(diǎn)Sobel 算子是邊緣檢測(cè)器中最常用的算子之一 (圖 12)45637210,aaaajiaaaa . . . 3 / 31圖 12 用于說明 S
7、obel 算子和 Prewitt 算子的鄰域像素點(diǎn)標(biāo)記 Prewitt 算子與 Sobel 算子的方程完全一樣,只是常量 c=1所以 (13)101101101xs111000111ys請(qǐng)注意,與 Sobel 算子不同,這一算子沒有把重點(diǎn)放在接近模板中心的像素點(diǎn)如圖 1.3 所示2、Robert 算子 Robert 算子邊緣檢測(cè)算子也叫交叉差分算子,是一種利用局部差分尋找邊緣的算子,用領(lǐng)域的處理。22邊緣,是指周圍像素灰度有階躍變化或屋頂?shù)茸兓哪切┫袼氐募?。圖像的邊緣對(duì)應(yīng)著圖像灰度的不連續(xù)性。顯然圖像的邊緣很少是從一個(gè)灰度跳到另一個(gè)灰度這樣的理想狀況。真實(shí)圖像的邊緣通常都具有有限的寬度呈現(xiàn)
8、出陡峭的斜坡狀。 邊緣的銳利程度由圖像灰度的梯度決定。梯度是一個(gè)向量,f 指出灰度變化最快的方向和變化量。 (1.5),(fyfxf (1.6)22yfxff (1.7)xfyf梯度大小由確定。而梯度方向則由確定,因此最簡(jiǎn)單的邊緣檢測(cè)算子是用圖像的垂直和水平差分來逼近梯度算子: (1.8)1,(),(, 1,(yxfyxfyxfyxff因此當(dāng)我們尋找邊緣的時(shí)候,最簡(jiǎn)單的方法是對(duì)每一個(gè)像素計(jì)算出(1.8)的向量,然后求出它的絕對(duì)值。利用這種思想就得到了Roberts算子: (1.9)2122), 1() 1,()1, 1(),(),(yxfyxfyxfyxfyxg . . . 4 / 31其中f
9、(x,y)是具有整數(shù)像素坐標(biāo)的輸入圖像。其中 g(x,y)由下面的模板計(jì)算: (13) Gx1001Gy0110同前面的梯度算子一樣,差分值將在插點(diǎn)x+1/2;y+1/2處計(jì)算Roberts22算子是該點(diǎn)連續(xù)梯度的近似值,而不是所預(yù)期的點(diǎn)x,y處的近似值。3、laplacian 算子平滑過的階躍邊緣二階導(dǎo)數(shù)是一個(gè)在邊緣點(diǎn)處過零的函數(shù)。拉普拉斯算子是二階導(dǎo)數(shù)邊緣算子。函數(shù)的拉普拉斯算子公式為),(yxf (17)22222ffxfy使用差分方程對(duì) 和方向上的二階偏導(dǎo)數(shù)近似如下:xy5(18) 這一近似式是以點(diǎn)x,y+1為中心的。用 y-1 替換 y,得到 (19)22xf 1,),2 1,(ji
10、fjifjif它是以點(diǎn)為中心的二階偏導(dǎo)數(shù)的理想近似式,類似地, , i j (110)22yf, 1),2, 1(jifjifjif把這兩個(gè)式子合并為一個(gè)算子,就成為下面能用來近似拉普拉斯算子的模板:(111)0101410102當(dāng)拉普拉斯算子輸出出現(xiàn)過零點(diǎn)時(shí)就表明有邊緣存在,其中忽略無意義的過零點(diǎn)(均勻零區(qū))。原則上,過零點(diǎn)的位置精度可以通過線性插方法精確到子像素分辨率,不過由于噪聲,結(jié)果可能不會(huì)很精確。4Canny 算子 . . . 5 / 31檢測(cè)階躍邊緣的基本思想是在圖像中找出具有局部最大梯度幅值的像素點(diǎn)。檢測(cè)階躍邊緣的大部分工作集中在尋找。 Canny邊緣檢測(cè)器是高斯函數(shù)的一階導(dǎo)數(shù),
11、是對(duì)信噪比與定位之乘積的最優(yōu)化逼近算子Canny 1986。我們將通過下面的符號(hào)對(duì)Canny邊緣檢測(cè)器算法作一概括說明。用表示圖像,使用可分離濾波方法求圖像與高斯平滑濾波器卷,jiI積,得到的結(jié)果是一個(gè)已平滑數(shù)據(jù)陣列, ,;,jiIjiGjiS其中是高斯函數(shù)的散布參數(shù),它控制著平滑程度。 已平滑數(shù)據(jù)陣列的梯度可以使用一階有限差分近似來計(jì)算 與S i j , 22x偏導(dǎo)數(shù)的兩個(gè)陣列與:y,jiP,jiQ (112)2/)1, 1 1, 1,(,2/), 1 1, 1, 1,(,jiSjiSjiSjiSjiQjiSjiSjiSjiSjiP在這個(gè)正方形求有限差分的均值,以便在圖像中的同一點(diǎn)計(jì)算 x
12、和 y 的偏22導(dǎo)數(shù)梯度。幅值和方位角可用直角坐標(biāo)到極坐標(biāo)的坐標(biāo)轉(zhuǎn)化公式來計(jì)算: (113) 22,jiQjiPjiM (114) ,/ ,(arctan,jiPjiQji其中,反正切函數(shù)包含了兩個(gè)參量,它表示一個(gè)角度,其取值圍是整個(gè)圓周圍。為高效率地計(jì)算這些函數(shù),盡量不用浮點(diǎn)運(yùn)算梯度的幅度和方向也可以通過查找表由偏導(dǎo)數(shù)計(jì)算。 . . . 6 / 313 3、詳細(xì)設(shè)計(jì)過程詳細(xì)設(shè)計(jì)過程1、分析圖像的大部分主要信息都存在于圖像的邊緣中,主要表現(xiàn)為圖像局部特征的不連續(xù)性,是圖像中灰度變化比較劇烈的地方,即通常所說的信號(hào)發(fā)生奇異變化的地方。奇異信號(hào)沿邊緣走向的灰度變化劇烈,通常將邊緣劃分為階躍狀和屋頂
13、狀兩種類型如圖 3.1 所示。階躍邊緣中兩邊的灰度值有明顯的變化;而屋頂狀邊緣位于灰度增加與減少的交界處。在數(shù)學(xué)上可利用灰度的導(dǎo)數(shù)來刻畫邊緣點(diǎn)的變化,對(duì)階躍邊緣、屋頂狀邊緣分別求其一階、二階導(dǎo)數(shù)。圖 3.1 階躍邊緣和屋頂狀邊緣處一階和二階導(dǎo)數(shù)變化規(guī)律(其中第一排為理想信號(hào),第二排對(duì)應(yīng)實(shí)際信號(hào))2、工作流程分析系統(tǒng)工作流程較為簡(jiǎn)單,功能用于對(duì)圖像進(jìn)行邊緣檢測(cè),工作流程并不復(fù)雜。雙擊 ch1_1.exe 文件,系統(tǒng)界面就出現(xiàn)了,點(diǎn)擊文件,然后選擇打開,打 . . . 7 / 31開 BMP 格式的圖片文件,此時(shí)圖片就會(huì)顯示在工作區(qū)域;主要模塊的系統(tǒng)過程如圖 3.2 所示 圖 3.24、一階微分算
14、法的實(shí)驗(yàn)結(jié)果與分析(1)Sobel 算子公式的定義為:(2)實(shí)驗(yàn)結(jié)果分析 以 cameraman 圖片為例,用 Sobel 算法,分別給檢測(cè)結(jié)果。 理論上 Sobel 算子可以輕易在空間上實(shí)現(xiàn),Sobel 邊緣檢測(cè)器不但可以產(chǎn)生較好的邊緣檢測(cè)效果由 5.2 圖可以看出 Sobel 算子雖然檢測(cè)到的邊緣信息很豐富,也較為連續(xù),但是邊緣很模糊,嚴(yán)重的影響了視覺效果。 開始 讀取待測(cè)圖片 邊緣檢測(cè)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 算子不同的地方在于沒有把重點(diǎn)放在接近模板中心的像素點(diǎn)。Prewitt 算子首先進(jìn)行鄰域平均或加權(quán)平均,然后進(jìn)行微分。(6)實(shí)驗(yàn)結(jié)果分析 以 cameraman 圖片為例,分別用 Roberts、Prewitt 兩種算法,
16、分別給檢測(cè)結(jié)果。 通過圖 5.3 和圖 5.4 知, Roberts 算子、Prewitt 算子,都能夠比較準(zhǔn)確的檢測(cè)出圖像的邊緣。 基于一階微分的邊緣檢測(cè)算子具有實(shí)現(xiàn)簡(jiǎn)單、運(yùn)算速度快等特點(diǎn),檢測(cè)結(jié)果不可靠,不能準(zhǔn)確判定邊緣的存在與邊緣的準(zhǔn)確位置,造成這種情況的原因:(1)實(shí)際邊緣灰度與理想邊緣灰度值間存在差異,這類算子可能檢測(cè)出多個(gè)邊緣;(2)邊緣存在的尺度圍各不一樣,這類算子固定的大小不利于檢測(cè)出不同尺度上的所有邊緣;(3)對(duì)噪聲都比較敏感。5、二階微分算法的實(shí)驗(yàn)結(jié)果與分析(1)Laplacian 算子的公式為: 22222ffxfy(2)Canny 算子的公式為:,;,jiIjiGjiS
17、(3)實(shí)驗(yàn)結(jié)果分析 以 cameraman 圖片為例,分別用 Laplacian、Canny 兩種算法,分別給檢測(cè)結(jié)果。 由圖 5.5 可以看出 Laplacian 算子:對(duì)圖像中的階躍性邊緣點(diǎn)定位準(zhǔn)確。 Canny:采用高斯函數(shù)對(duì)圖像進(jìn)行平滑處理,該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測(cè)和連接邊緣,邊緣的連續(xù)性較好。 Laplacian 算子是對(duì)二維函數(shù)進(jìn)行運(yùn)算的二階導(dǎo)數(shù)算子,與方向無關(guān),對(duì)取向不敏感,因而計(jì)算量要小。根據(jù)邊緣的特性,Laplacian 算子可以作為邊緣提 . . . 9 / 31取算子,計(jì)算數(shù)字圖像的 Laplacian 值可以借助模板實(shí)現(xiàn),它相當(dāng)于
18、高通濾波,常會(huì)出現(xiàn)一些虛假邊緣。Canny 算子是一個(gè)具有濾波、增強(qiáng)和檢測(cè)的多階段的優(yōu)化算子。 在進(jìn)行處理前,Canny 算子增強(qiáng)邊緣是將鄰域(或局部)強(qiáng)度值有顯著變化的點(diǎn)突出來,一般通過計(jì)算梯度幅值來完成。Canny 分割算法采用一階偏導(dǎo)的有限差分來計(jì)算梯度的幅值和方向。對(duì)一個(gè)邊緣來說,其一階導(dǎo)數(shù)在邊界處存在一個(gè)向上的階躍,或者其二階導(dǎo)數(shù)過零點(diǎn)。在處理過程中,Canny 算法還將經(jīng)過一個(gè)非極大值抑制的過程。最后 Canny 算法將采用兩個(gè)閾值來連接邊緣。但也有不足之處,Canny 算法對(duì)整幅圖像采用同一高斯函數(shù)進(jìn)行濾波,無法顧與圖像局部特征信息,邊緣檢測(cè)的閾值需要預(yù)先設(shè)定。先確定一個(gè)閾值系數(shù)
19、,該系數(shù)定義為梯度小于閾值的像素?cái)?shù)所占邊緣像素總數(shù)的比例,以此來確定閾值。這種方法沒有利用圖像自身的信息,不具有自適應(yīng)能力。 . . . 10 / 31四、調(diào)試過程中出現(xiàn)的問題與相應(yīng)解決辦法四、調(diào)試過程中出現(xiàn)的問題與相應(yīng)解決辦法Matlab 語言是一種解釋執(zhí)行的語言,它靈活、方便,其調(diào)試程序手段豐富,調(diào)試速度快。 。Matlab 語言與其它語言相比,把編輯、編譯、連接和執(zhí)行融為一體。它能在同一畫面上進(jìn)行靈活操作快速排除輸入程序中的書寫錯(cuò)誤、語法錯(cuò)誤以至語意錯(cuò)誤,從而加快了用戶編寫、修改和調(diào)試程序的速度,可以說在編程和調(diào)試過程中它是一種非常簡(jiǎn)單的語言。但之前并沒有熟悉 Matlab 的編譯,出現(xiàn)
20、直接把程序復(fù)制粘貼的錯(cuò)誤,后來才學(xué)習(xí)正確的編譯運(yùn)行過程。代碼在運(yùn)行過程中的錯(cuò)誤: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讀入圖片,因此不能夠正確的運(yùn)行。應(yīng)在代碼后面加入如下代碼:img_src=imread(fpath); . . .
21、 11 / 31五、程序運(yùn)行截圖與其說明五、程序運(yùn)行截圖與其說明1、圖 5.1:是原圖,做為參考圖片 圖 5.2、圖 5.2:是 Sobel 算子運(yùn)行出來后的圖片,能檢測(cè)到的邊緣信息較為連續(xù),但邊緣很模糊。 圖 5.2 . . . 12 / 313、圖 5.3:是 Roberts 算子運(yùn)行出來后所得的圖片,但邊緣較細(xì)。圖 5.34、圖 5.4:是 Prewitt 算子運(yùn)行后的圖片,所得的圖片精度不高,邊緣較粗。圖5.4 . . . 13 / 315、圖 5.5:是 Laplacian 算子所得,對(duì)圖像中的階躍性邊緣點(diǎn)定位準(zhǔn)確,有信息丟失,邊緣不夠連續(xù)。圖 5.56、圖 5.6:是 Canny
22、算子所得,邊緣較聯(lián)系,但還是有丟失邊緣信息。圖 5.6 . . . 14 / 31六、簡(jiǎn)單操作手六、簡(jiǎn)單操作手1、Matlab 運(yùn)行環(huán)境簡(jiǎn)介 1)啟動(dòng) Matlab 可由下列方法之一進(jìn)入 Matlab 命令行窗口: (1)開始 程序 Matlab。 (2)雙擊桌面 Matlab 圖標(biāo)。2)編制、運(yùn)行 Matlab 程序可用下列方法之一編制和運(yùn)行 Matlab 程序選擇菜單條中的“File Open (或 New)進(jìn)入 Matlab 程序編輯器,在編輯器中編輯程序。 A. 命令行以“, ”或“;”結(jié)尾。以“, ” 結(jié)尾運(yùn)行時(shí)顯示該命令運(yùn)行結(jié)果,以“;” 結(jié)尾不顯示該命令運(yùn)行結(jié)果。 B. 注釋前加
23、“%” 。 C. 運(yùn)行操作可使用命令快捷鍵。2、圖像文件的讀、寫和顯示 圖像文件的讀取 讀圖像文件的函數(shù)格式: A=imread(路徑、文件名與文件后綴 ) ,如 I=imread(e:image.bmp ) 其含義:將 e 盤中的 bmp 文件 image 賦給變量 I,bmp(windows bitmap)為位圖文件。3、得到的窗口如圖 6.1,文件菜單里包括:打開,保存,退出按鈕;圖像處理菜單里包括:Sobel 算子、Robert 算子、Priwitt 算子、laplacian 算子、Canny 算子功能相應(yīng)的按鈕,分別為Sobel、Robert、Priwitt、laplacian、Ca
24、nny。 . . . 15 / 31 圖 6.14、打開圖片信息:點(diǎn)擊文件菜單里的打開選擇所要打開文件夾里的圖片,則有如圖 6.2 所示。 圖 6.2 . . . 16 / 315、圖像邊緣檢測(cè):點(diǎn)擊圖像處理菜單,選擇里面的算子所對(duì)應(yīng)的按鈕進(jìn)行操作,然后選擇文件菜單里的保存按鈕保存圖片,保存到相應(yīng)的文件夾,則得到的圖如圖 6.3 所示。圖 6.36、退出:若要退出,點(diǎn)擊文件菜單里的退出按鈕,則可退出圖像處理界面。 . . . 17 / 31設(shè)計(jì)總結(jié)設(shè)計(jì)總結(jié)通過分析幾種應(yīng)用于數(shù)字圖像處理中的邊緣檢測(cè)算子,根據(jù)它們?cè)趯?shí)踐中的應(yīng)用結(jié)果進(jìn)行研究,主要包括:Sobel 邊緣算子、Robert 邊緣算子、
25、Prewitt 邊緣算子、laplacian 算子、Canny 邊緣算子對(duì)圖像的邊緣檢測(cè)。Sobel 算子:根據(jù)像素點(diǎn)上下、左右鄰點(diǎn)灰度加權(quán)差,在邊緣處達(dá)到極值這一現(xiàn)象檢測(cè)邊緣。提供較為精確的邊緣方向信息,邊緣定位精度不夠高。當(dāng)對(duì)精度要求不是很高時(shí),是一種較為常用的邊緣檢測(cè)方法。Robert 算子:采用對(duì)角線方向相鄰兩像素之差表示信號(hào)的突變,檢測(cè)水平和垂直方向邊緣的性能好于斜線方向,定位精度比較高,檢測(cè)出的邊緣較細(xì)。Prewitt 算子:凡灰度新值大于或等于閾值的像素點(diǎn)都是邊緣點(diǎn)。即選擇適當(dāng)?shù)拈撝?T,若 P(i,j)T,則(i,j)為邊緣點(diǎn),P(i,j)為邊緣圖像。這種判定是欠合理的,會(huì)造成
26、邊緣點(diǎn)的誤判。檢測(cè)出的邊緣比較粗,定位精度低,容易損失角點(diǎn)。Laplacian 算子:是二階微分算子,對(duì)圖像中的階躍性邊緣點(diǎn)定位準(zhǔn)確,但會(huì)丟失一部分邊緣的方向信息,造成一些不連續(xù)的檢測(cè)邊緣。Canny 算子:采用高斯函數(shù)對(duì)圖像進(jìn)行平滑處理,該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測(cè)和連接邊緣,邊緣的連續(xù)性較好。 通過這次數(shù)字圖像課程設(shè)計(jì),讓我可以熟悉 Matlab 這個(gè)軟件。Matlab 在工業(yè)方面的應(yīng)用很廣泛,我希望能有機(jī)會(huì)更深刻的學(xué)習(xí)理解它。 在指導(dǎo)教師的指導(dǎo)下,我順利的完成了這次數(shù)字圖像的課程設(shè)計(jì),課設(shè)題目有點(diǎn)難度,但對(duì)我們的課程學(xué)習(xí),和知識(shí)的運(yùn)用有著很好的作用???/p>
27、之,我認(rèn)為這次課程設(shè)計(jì)是不錯(cuò)的,收獲也是豐富的。 . . . 18 / 31參考資料參考資料1 朱虹. 數(shù)字圖像處理基礎(chǔ)M. : 科學(xué). 2005.4:217-2202余成波. 數(shù)字圖像處理與 MATLAB 實(shí)現(xiàn)M. : 大學(xué)出版 社.2003.7:356-3593深潔,杜宇人,高浩軍.圖像邊緣檢測(cè)技術(shù)研究J.信息技術(shù),2005(12).4建媛. 圖像處理中邊緣檢測(cè)算法的研究J. 科技信息. 2008,(4):30-325屹數(shù)字圖像處理技術(shù)與應(yīng)用M:電子工業(yè),1997:35-396 王予生,卜佳俊,純.一種基于積分變換的邊緣檢測(cè)算法J. 中國圖象圖形學(xué)報(bào). 2002,7(2):145149 .
28、 . . 19 / 31致致通過兩周的的努力,我的課程設(shè)計(jì)終于完成了。在整個(gè)課程設(shè)計(jì)中,我在學(xué)習(xí)上和思想上都受益非淺,這除了自身的努力外,與指導(dǎo)的老師、同學(xué)和朋友的關(guān)心、支持和鼓勵(lì)是分不開的。 在課程設(shè)計(jì)的編寫過程中, 指導(dǎo)老師傾注了大量的心血,一遍又一遍地指出每次編程里的具體問題,詳細(xì)講解課題,你的細(xì)心指導(dǎo),嚴(yán)格把關(guān),循循善誘,在此我表示衷心感。同時(shí)我還要感在我做課設(shè)期間給予我?guī)椭耐瑢W(xué)們,沒有你們的幫助,我的課設(shè)不會(huì)那么順利。 做課程設(shè)計(jì)是一次再系統(tǒng)的學(xué)習(xí),讓我們鞏固了我們所學(xué)的知識(shí),讓我們以后能更好的運(yùn)用于實(shí)踐打下了一定基礎(chǔ)。同時(shí)課程設(shè)計(jì)的的完成,讓我在其中學(xué)到了許多,尤其是學(xué)會(huì)了幫助合
29、作,懂得了幫助合作造就的效益和成果。在這里再次感幫助我的的同學(xué),還有對(duì)我們精心指導(dǎo)的老師! . . . 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è)定當(dāng)前操作的坐標(biāo)軸是axes_src fpath=pathname filename;%將文件名和目錄名組合成一個(gè)完整的路徑 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è)定當(dāng)前操作的坐標(biāo)軸是axes_src fpath=pathname filename;%將文件名和目錄名組合成一個(gè)完整的路徑 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è)定當(dāng)前操作的坐標(biāo)軸是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、); % 計(jì)算X方向的梯度分量dy = imfilter(I, y_mask); % 計(jì)算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 計(jì)算梯度grad = mat2gray(grad); % 將梯度矩陣轉(zhuǎn)換為灰度圖像level = graythresh(grad); % 計(jì)算灰度閾值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); % 計(jì)算X方向的梯度分量dy = imfilter(I, y_mask); % 計(jì)算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 計(jì)算梯度grad = mat2gray(grad); % 將梯度矩陣轉(zhuǎn)換為灰度圖像level = graythresh(grad); % 計(jì)算灰度閾值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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《我國老年人權(quán)利法律保障研究》
- 2024年太陽能光伏組件高空清洗高空作業(yè)人員安全生產(chǎn)責(zé)任認(rèn)定合同3篇
- 2023年臺(tái)州市建設(shè)市政工程檢測(cè)中心有限公司招聘筆試真題
- 2024年生產(chǎn)車間承包與人力資源派遣合作協(xié)議3篇
- 義務(wù)教育質(zhì)量評(píng)價(jià)指標(biāo)心得(7篇)
- 高效培訓(xùn)學(xué)校培訓(xùn)服務(wù)合同
- 不會(huì)再犯錯(cuò)的保證書(14篇)
- 股東退股協(xié)議書格式示例
- 購房合同中的產(chǎn)權(quán)瑕疵
- 鋼筋采購協(xié)議書范本
- 新能源船舶發(fā)展現(xiàn)狀與趨勢(shì)探討
- 湖南長(zhǎng)沙市湘一芙蓉二中學(xué)2023-2024學(xué)年數(shù)學(xué)七年級(jí)第一學(xué)期期末檢測(cè)試題含解析
- 高速鐵路牽引供電系統(tǒng)概論全套教學(xué)課件
- 科技館科普服務(wù)工作總結(jié)報(bào)告
- 大學(xué)生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo)(高等職業(yè))全套教學(xué)課件
- 國開電大法學(xué)本科《國際私法》期末考試總題庫(2024版)
- 不積跬步無以至千里課件
- 成人肺炎臨床診療指南
- 我的成長(zhǎng)與收獲年度總結(jié)
- 《敘利亞戰(zhàn)局分析》課件
- 細(xì)菌分類表完整版20180720
評(píng)論
0/150
提交評(píng)論