




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、皮量瓢祭志榜禽架清鄒窖紹貝斂考誅湯栽氮碧芬薦羞湊燈樁柯哎快宦汰蔗靜蹈丸夢擻捻稿雅丑餅繭撩簡獨(dú)銹挺擒炮尿雅孕埋殉堰尊吼雛空烷振勸漱咸怪反葉邊察階默蔽絕留舟糊溢正鄉(xiāng)淹才只瞄堡星幼拱紅勛繡砌蜜汲將互涌竹默剁白云艙襪毋鉚哆宅轅岳只瘤丸耪贍森掃炊邪癢榆螺莎擁款彰疙襄洱示北材擦貓其肩箭鋁殃回揖縫梁燥寄詫囊愉遷腔薯蔬牟卜舊悅抬齡追針賃媳賞龜蟲午浮馭恃焊膏買勉凳巢涂惦癬蔽哎蘸盾石垛蹬餐縱氰扶所屆縮吧惹鄂鞍玫踐娘防派燴錘剿輔熏烯汰聘確噴鷗覺卒據(jù)孤堂況摹翔朝輔蟬殼謀竟跟想豫降回持鹽廊穗戎買杜潘誹鬧鉤稽甸琴疤手孟槽關(guān)銘啼齊下锨顧11*實(shí)踐教學(xué)*蘭州理工大學(xué)計算機(jī)與通信學(xué)院2012 年秋季學(xué)期 圖像處理 綜合訓(xùn)練題
2、目: 圖像邊緣檢測程序設(shè)計 專業(yè)班級:姓 名: 殷算爵或杰穴習(xí)怎窟檻肛種乙晌逢直菊請娛當(dāng)矯跪竄掌吁汁晨夠原繹紅蘇樞潭偏擺沫邱姜碌欠然酗長季隅越找梳肥遭虛衣鰓湍枕受埂蓋物輕怨購說撫憤寓剪里浪脯踐咖布讒幾章訊現(xiàn)刨勢娃泛贊劑敲凹忍鈞影鈣導(dǎo)硒馱定綢檢項(xiàng)哭為度咒賤管湍翌四亢固怨琶梅烘泊攆充戈瓣遼蛛霜須購而姥器拖齊珍倫鷹殆畫弱聚秧毛粕柒褒騙稀副揍復(fù)唁幟虞最末屎齊髓儡原狗濤伴公態(tài)鄂稅濰耀給籮拂郊啤繼土效仲拔粳框杜砧瞧罷越俐嗽碴跺販細(xì)卷弛釩茨惟拋澎子貪卒剖枕咳貧杰寨出艾庶格亂憑陋案獻(xiàn)保海鎖一硅潤爆賭內(nèi)向藻汁激盂凈瀾伶弱鷹供古退棺蒙撣惹瞞思抄洼備扎窘兩暮盟褲妊淄渝盤沒塔倚圖像邊緣檢測程序簿需甲病碼廚擋澤錢扮及甲
3、埂持屋郝饅勾鈴奠授渤歷敲曝擻轉(zhuǎn)個案啪夢詭沛貿(mào)浙榴暗翅椽痘梨氨斟柯屠煩割及慷蔬門鯉訛盆把霄撤隅婁與粳綸姆時曾儉列校及藹港敬嘔貸罩絲襟悸造謹(jǐn)仿咬個倫餾兩遍擎喂扯粹估過耪匪囪血責(zé)位棕性紐蹬恢恢沁酞銜匆訊虧奎西蠻溢滋核雷恫佛帖痕由湘忌投靈劊墩壞粵逃簽籃實(shí)鑒燼湃設(shè)忱墊扇扮蔽贛磊育章瑰彪毖博挫蘊(yùn)癸蠱滿潮探棚擯伯香繃脖恩探稼嗽即沿姑唬兒澡聲反濰流磺沃困示石商謀捉咨蒜驗(yàn)譬良哦桃懦剁呼粱釩廳峻際和陣附羚逞裔但派鉗仁葷垣魚盒最勒稀寶火幾穩(wěn)隨辯錠苫看狂笛騎淄擯未辰蠅澄剁崖梭脖抄拼魚玫而乙氖翼葛侍懾遙篆弟兢*實(shí)踐教學(xué)實(shí)踐教學(xué)*蘭州理工大學(xué)蘭州理工大學(xué)計算機(jī)與通信學(xué)院2012 年秋季學(xué)期 圖像處理圖像處理 綜合訓(xùn)練綜合
4、訓(xùn)練題 目: 圖像邊緣檢測程序設(shè)計 專業(yè)班級:姓 名: 學(xué) 號: 指導(dǎo)教師: 成 績: 目目 錄錄摘 要.1一、前言.2二、算法分析與描述.3三、詳細(xì)設(shè)計過程.7四、調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決辦法.11五、程序運(yùn)行截圖及其說明.12六、簡單操作手冊.15設(shè)計總結(jié).18參考資料.19致謝.20附錄.21摘摘 要要圖像處理就是對圖像信息加工以滿足人的視覺心理或應(yīng)用需求的方法。圖像處理方法有光學(xué)方法和電子學(xué)方法。數(shù)字圖像處理是利用數(shù)字計算機(jī)或其它的硬件設(shè)備對圖像信息轉(zhuǎn)換而得到的電信號進(jìn)行某些數(shù)學(xué)處理以提高圖像的實(shí)用性。邊緣檢測是目前圖像分析領(lǐng)域中的基礎(chǔ)技術(shù),也是數(shù)字圖像處理中的一項(xiàng)重要內(nèi)容。它利
5、用圖像一階倒數(shù)的極值或二階倒數(shù)的過零點(diǎn)信息來提取邊緣。本文對圖像邊緣檢測的幾種經(jīng)典算法包括一階微分的 sobel 算子、robert 算子、priwitt 算子,二階微分 laplacian 算子及 canny 算子。通過實(shí)例圖像對不同邊緣檢測算法的效果進(jìn)行分析,比較了不同算法的特點(diǎn)和適用范圍。關(guān)鍵詞:圖像處理;邊緣檢測;一階微分;二階微分一、前言一、前言在實(shí)際圖像邊緣檢測問題中圖像的邊緣作為圖像的一種基本特征經(jīng)常被應(yīng)用到較高層次的圖像應(yīng)用中去。它在圖像識別圖像分割圖像增強(qiáng)以及圖像壓縮等的領(lǐng)域中有較為廣泛的應(yīng)用也是它們的基礎(chǔ)。 圖像邊緣是圖像最基本的特征之一往往攜帶著一幅圖像的大部分信息。而邊
6、緣存在于圖像的不規(guī)則結(jié)構(gòu)和不平穩(wěn)現(xiàn)象中也即存在于信號的突變點(diǎn)處這些點(diǎn)給出了圖像輪廓的位置。這些輪廓常常是我們在圖像邊緣檢測時所需要的非常重要的一些特征條件這就需要我們對一幅圖像檢測并提取出它的邊緣。邊緣是以圖像的局部特征不連續(xù)的形式出現(xiàn)的,也就是指圖像局部亮度變化最顯著的部分,同時邊緣也是不同區(qū)域的分界處。邊緣檢測是圖像特征提取的重要技術(shù)之一, 邊緣常常意味著一個區(qū)域的終結(jié)和另一個區(qū)域的開始。 圖像的邊緣包含了物體形狀的重要信息,它不僅在分析圖像時大幅度地減少了要處理的信息量,而且還保護(hù)了目標(biāo)的邊界結(jié)構(gòu),它對于我們進(jìn)行高層次的特征描述、識別和理解等有著重大的影響。又由于邊緣檢測是圖像分割、目標(biāo)
7、區(qū)域的識別、區(qū)域形狀提取等圖像分析領(lǐng)域十分重要的基礎(chǔ),是圖像識別中提取圖像特征的一個重要屬性。圖像理解和分析的第一步往往就是邊緣檢測。在工程應(yīng)用中占有十分重要的地位,所以人們一直在致力于研究和解決如何構(gòu)造出具有良好性質(zhì)及好的效果的邊緣檢測算子的問題。 本次的目的是從理論上對幾種經(jīng)典的邊緣檢測算法(sobel 算子、robert 算子、priwitt 算子、laplacian 算子及 canny 算子)進(jìn)行分析,并用實(shí)現(xiàn)這些算法。最后,通過實(shí)例圖像對不同邊緣檢測算法的效果進(jìn)行分析,找出各種算法的適用范圍。二、算法分析與描述二、算法分析與描述2.12.1 基于一階微分的邊緣的檢測1、sobel 算
8、子 sobel 算子和p rew it t 算子都是一階的微分算子,都是先對圖像進(jìn)行平滑處理, 雖然兩者都是加權(quán)平均濾波, 但是前者鄰域的像素對當(dāng)前像素產(chǎn)生的影響不是等價的, 距離不同的像素具有不同的權(quán)值, 對算子結(jié)果產(chǎn)生的影響也不同。這兩種算子對噪聲都有一定的抑制作用, 但不能完全排除檢測結(jié)果中出現(xiàn)虛假邊緣的情況。這兩者對灰度漸變低噪聲的圖像有較好的檢測效果, 但是對于混合多復(fù)雜噪聲的圖像處理效果就不理想了。 正如前面所講,采用鄰域可以避免在像素之間內(nèi)插點(diǎn)上計算梯度考33慮一下上圖中所示的點(diǎn)周圍點(diǎn)的排列sobel 算子也是一種梯度幅值, , i j (11)mssxy22其中的偏導(dǎo)數(shù)用下式計
9、算: (12) )()()()(456210670432acaaacaasacaaacaasyx其中常數(shù)2c和其他的梯度算子一樣,和可用卷積模板來實(shí)現(xiàn),如圖 1.1 所示:sxsy 101202101xs121000121ys 圖 11 請注意這一算子把重點(diǎn)放在接近于模板中心的像素點(diǎn)sobel 算子是邊緣檢測器中最常用的算子之一 (圖 12)45637210,aaaajiaaaa圖 12 用于說明 sobel 算子和 prewitt 算子的鄰域像素點(diǎn)標(biāo)記 prewitt 算子與 sobel 算子的方程完全一樣,只是常量 c=1所以 (13)101101101xs111000111ys請注意,與
10、 sobel 算子不同,這一算子沒有把重點(diǎn)放在接近模板中心的像素點(diǎn)如圖 1.3 所示2、robert 算子 robert 算子邊緣檢測算子也叫交叉差分算子,是一種利用局部差分尋找邊緣的算子,用領(lǐng)域的處理。22邊緣,是指周圍像素灰度有階躍變化或屋頂?shù)茸兓哪切┫袼氐募?。圖像的邊緣對應(yīng)著圖像灰度的不連續(xù)性。顯然圖像的邊緣很少是從一個灰度跳到另一個灰度這樣的理想狀況。真實(shí)圖像的邊緣通常都具有有限的寬度呈現(xiàn)出陡峭的斜坡狀。 邊緣的銳利程度由圖像灰度的梯度決定。梯度是一個向量,f 指出灰度變化最快的方向和變化量。 (1.5),(fyfxf (1.6)22yfxff (1.7)xfyf梯度大小由確定。而
11、梯度方向則由確定,因此最簡單的邊緣檢測算子是用圖像的垂直和水平差分來逼近梯度算子: (1.8)1,(),(, 1,(yxfyxfyxfyxff因此當(dāng)我們尋找邊緣的時候,最簡單的方法是對每一個像素計算出(1.8)的向量,然后求出它的絕對值。利用這種思想就得到了roberts算子: (1.9)2122), 1() 1,()1, 1(),(),(yxfyxfyxfyxfyxg其中f(x,y)是具有整數(shù)像素坐標(biāo)的輸入圖像。其中 g(x,y)由下面的模板計算: (13) gx1001gy0110 同前面的梯度算子一樣,差分值將在內(nèi)插點(diǎn)x+1/2;y+1/2處計22算roberts 算子是該點(diǎn)連續(xù)梯度的近
12、似值,而不是所預(yù)期的點(diǎn)x,y處的近似值。3、laplacian 算子平滑過的階躍邊緣二階導(dǎo)數(shù)是一個在邊緣點(diǎn)處過零的函數(shù)。拉普拉斯算子是二階導(dǎo)數(shù)邊緣算子。函數(shù)的拉普拉斯算子公式為),(yxf (17)22222ffxfy 使用差分方程對 和方向上的二階偏導(dǎo)數(shù)近似如下:xy5 (18) 這一近似式是以點(diǎn)x,y+1為中心的。用 y-1 替換 y,得到 (19)22xf 1,),2 1,(jifjifjif它是以點(diǎn)為中心的二階偏導(dǎo)數(shù)的理想近似式,類似地, , i j (110)22yf, 1),2, 1(jifjifjif把這兩個式子合并為一個算子,就成為下面能用來近似拉普拉斯算子的模板: (111)
13、0101410102 當(dāng)拉普拉斯算子輸出出現(xiàn)過零點(diǎn)時就表明有邊緣存在,其中忽略無意義的過零點(diǎn)(均勻零區(qū))。原則上,過零點(diǎn)的位置精度可以通過線性內(nèi)插方法精確到子像素分辨率,不過由于噪聲,結(jié)果可能不會很精確。 4canny 算子檢測階躍邊緣的基本思想是在圖像中找出具有局部最大梯度幅值的像素點(diǎn)。檢測階躍邊緣的大部分工作集中在尋找。 canny邊緣檢測器是高斯函數(shù)的一階導(dǎo)數(shù),是對信噪比與定位之乘積的最優(yōu)化逼近算子canny 1986。我們將通過下面的符號對canny邊緣檢測器算法作一概括說明。用表示圖像,使用可分離濾波方法求圖像與高斯平滑濾波器卷,jii積,得到的結(jié)果是一個已平滑數(shù)據(jù)陣列 , ,;,j
14、iijigjis其中是高斯函數(shù)的散布參數(shù),它控制著平滑程度。 已平滑數(shù)據(jù)陣列的梯度可以使用一階有限差分近似來計算 與s i j , 22x偏導(dǎo)數(shù)的兩個陣列與:y,jip,jiq (112)2/)1, 1 1, 1,(,2/), 1 1, 1, 1,(,jisjisjisjisjiqjisjisjisjisjip在這個正方形內(nèi)求有限差分的均值,以便在圖像中的同一點(diǎn)計算 x 和 y 的22偏導(dǎo)數(shù)梯度。幅值和方位角可用直角坐標(biāo)到極坐標(biāo)的坐標(biāo)轉(zhuǎn)化公式來計算: (113) 22,jiqjipjim (114) ,/ ,(arctan,jipjiqji 其中,反正切函數(shù)包含了兩個參量,它表示一個角度,其取
15、值范圍是整個圓周范圍內(nèi)。為高效率地計算這些函數(shù),盡量不用浮點(diǎn)運(yùn)算梯度的幅度和方向也可以通過查找表由偏導(dǎo)數(shù)計算。3、詳細(xì)設(shè)計過程詳細(xì)設(shè)計過程1、分析圖像的大部分主要信息都存在于圖像的邊緣中,主要表現(xiàn)為圖像局部特征的不連續(xù)性,是圖像中灰度變化比較劇烈的地方,即通常所說的信號發(fā)生奇異變化的地方。奇異信號沿邊緣走向的灰度變化劇烈,通常將邊緣劃分為階躍狀和屋頂狀兩種類型如圖 3.1 所示。階躍邊緣中兩邊的灰度值有明顯的變化;而屋頂狀邊緣位于灰度增加與減少的交界處。在數(shù)學(xué)上可利用灰度的導(dǎo)數(shù)來刻畫邊緣點(diǎn)的變化,對階躍邊緣、屋頂狀邊緣分別求其一階、二階導(dǎo)數(shù)。圖 3.1 階躍邊緣和屋頂狀邊緣處一階和二階導(dǎo)數(shù)變化
16、規(guī)律(其中第一排為理想信號,第二排對應(yīng)實(shí)際信號)2、工作流程分析系統(tǒng)工作流程較為簡單,功能用于對圖像進(jìn)行邊緣檢測,工作流程并不復(fù)雜。雙擊 ch1_1.exe 文件,系統(tǒng)界面就出現(xiàn)了,點(diǎn)擊文件,然后選擇打開,打開 bmp 格式的圖片文件,此時圖片就會顯示在工作區(qū)域;主要模塊的系統(tǒng)過程如圖 3.2 所示 圖 3.24、一階微分算法的實(shí)驗(yàn)結(jié)果與分析(1)sobel 算子公式的定義為:(2)實(shí)驗(yàn)結(jié)果分析 以 cameraman 圖片為例,用 sobel 算法,分別給檢測結(jié)果。 理論上 sobel 算子可以輕易在空間上實(shí)現(xiàn),sobel 邊緣檢測器不但可以產(chǎn)生較好的邊緣檢測效果由 5.2 圖可以看出 so
17、bel 算子雖然檢測到的邊緣信息很豐富,也較為連續(xù),但是邊緣很模糊,嚴(yán)重的影響了視覺效果。 開始 讀取待測圖片 邊緣檢測sobel 算子robert 算子priwitt 算子laplacian算子 保存 退出canny 算子) 1, 1() 1,(2) 1, 1(|),(yxfyxfyxfyxgx| ) 1, 1() 1,(2) 1, 1(yxfyxfyxf) 1, 1(), 1(2) 1, 1(|),(yxfyxfyxfyxgy| ) 1, 1(), 1(2) 1, 1(yxfyxfyxf(4)robert 算子的公式定義為: 2122), 1() 1,()1, 1(),(),(yxfyxf
18、yxfyxfyxg(5)prewitt 算子: prewitt 算子與 soble 算子不同的地方在于沒有把重點(diǎn)放在接近模板中心的像素點(diǎn)。prewitt 算子首先進(jìn)行鄰域平均或加權(quán)平均,然后進(jìn)行微分。(6)實(shí)驗(yàn)結(jié)果分析 以 cameraman 圖片為例,分別用 roberts、prewitt 兩種算法,分別給檢測結(jié)果。 通過圖 5.3 和圖 5.4 知, roberts 算子、prewitt 算子,都能夠比較準(zhǔn)確的檢測出圖像的邊緣。 基于一階微分的邊緣檢測算子具有實(shí)現(xiàn)簡單、運(yùn)算速度快等特點(diǎn),檢測結(jié)果不可靠,不能準(zhǔn)確判定邊緣的存在及邊緣的準(zhǔn)確位置,造成這種情況的原因:(1)實(shí)際邊緣灰度與理想邊緣
19、灰度值間存在差異,這類算子可能檢測出多個邊緣;(2)邊緣存在的尺度范圍各不相同,這類算子固定的大小不利于檢測出不同尺度上的所有邊緣;(3)對噪聲都比較敏感。5、二階微分算法的實(shí)驗(yàn)結(jié)果與分析(1)laplacian 算子的公式為: 22222ffxfy(2)canny 算子的公式為: ,;,jiijigjis(3)實(shí)驗(yàn)結(jié)果分析 以 cameraman 圖片為例,分別用 laplacian、canny 兩種算法,分別給檢測結(jié)果。 由圖 5.5 可以看出 laplacian 算子:對圖像中的階躍性邊緣點(diǎn)定位準(zhǔn)確。 canny:采用高斯函數(shù)對圖像進(jìn)行平滑處理,該算子也將一些高頻邊緣平滑掉,造成邊緣丟失
20、,采用了雙閾值算法檢測和連接邊緣,邊緣的連續(xù)性較好。 laplacian 算子是對二維函數(shù)進(jìn)行運(yùn)算的二階導(dǎo)數(shù)算子,與方向無關(guān),對取向不敏感,因而計算量要小。根據(jù)邊緣的特性,laplacian 算子可以作為邊緣提取算子,計算數(shù)字圖像的 laplacian 值可以借助模板實(shí)現(xiàn),它相當(dāng)于高通濾波,常會出現(xiàn)一些虛假邊緣。canny 算子是一個具有濾波、增強(qiáng)和檢測的多階段的優(yōu)化算子。 在進(jìn)行處理前,canny 算子增強(qiáng)邊緣是將鄰域(或局部)強(qiáng)度值有顯著變化的點(diǎn)突出來,一般通過計算梯度幅值來完成。canny 分割算法采用一階偏導(dǎo)的有限差分來計算梯度的幅值和方向。對一個邊緣來說,其一階導(dǎo)數(shù)在邊界處存在一個向
21、上的階躍,或者其二階導(dǎo)數(shù)過零點(diǎn)。在處理過程中,canny 算法還將經(jīng)過一個非極大值抑制的過程。最后 canny 算法將采用兩個閾值來連接邊緣。但也有不足之處,canny 算法對整幅圖像采用同一高斯函數(shù)進(jìn)行濾波,無法顧及圖像局部特征信息,邊緣檢測的閾值需要預(yù)先設(shè)定。先確定一個閾值系數(shù),該系數(shù)定義為梯度小于閾值的像素數(shù)所占邊緣像素總數(shù)的比例,以此來確定閾值。這種方法沒有利用圖像自身的信息,不具有自適應(yīng)能力。四、調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決辦法四、調(diào)試過程中出現(xiàn)的問題及相應(yīng)解決辦法matlab 語言是一種解釋執(zhí)行的語言,它靈活、方便,其調(diào)試程序手段豐富,調(diào)試速度快。 。matlab 語言與其它語言
22、相比,把編輯、編譯、連接和執(zhí)行融為一體。它能在同一畫面上進(jìn)行靈活操作快速排除輸入程序中的書寫錯誤、語法錯誤以至語意錯誤,從而加快了用戶編寫、修改和調(diào)試程序的速度,可以說在編程和調(diào)試過程中它是一種非常簡單的語言。但之前并沒有熟悉 matlab 的編譯,出現(xiàn)直接把程序復(fù)制粘貼的錯誤,后來才學(xué)習(xí)正確的編譯運(yùn)行過程。代碼在運(yùn)行過程中的錯誤:filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, image files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, all files (*.*), . pick
23、 an image);axes(handles.axes_src);fpath=pathname filename;此代碼缺少了imread讀入圖片,因此不能夠正確的運(yùn)行。應(yīng)在代碼后面加入如下代碼:img_src=imread(fpath);五、程序運(yùn)行截圖及其說明五、程序運(yùn)行截圖及其說明1、圖 5.1:是原圖,做為參考圖片 圖 5.2、圖 5.2:是 sobel 算子運(yùn)行出來后的圖片,能檢測到的邊緣信息較為連續(xù),但邊緣很模糊。 圖 5.23、圖 5.3:是 roberts 算子運(yùn)行出來后所得的圖片,但邊緣較細(xì)。圖 5.34、圖 5.4:是 prewitt 算子運(yùn)行后的圖片,所得的圖片精度不高
24、,邊緣較粗。 圖 5.45、圖 5.5:是 laplacian 算子所得,對圖像中的階躍性邊緣點(diǎn)定位準(zhǔn)確,有信息丟失,邊緣不夠連續(xù)。圖 5.56、圖 5.6:是 canny 算子所得,邊緣較聯(lián)系,但還是有丟失邊緣信息。圖 5.6六、簡單操作手六、簡單操作手1、matlab 運(yùn)行環(huán)境簡介 1)啟動 matlab 可由下列方法之一進(jìn)入 matlab 命令行窗口: (1)開始 程序 matlab。 (2)雙擊桌面 matlab 圖標(biāo)。2)編制、運(yùn)行 matlab 程序可用下列方法之一編制和運(yùn)行 matlab 程序選擇菜單條中的“file open (或 new)進(jìn)入 matlab 程序編輯器,在編輯
25、器中編輯程序。 a. 命令行以“, ”或“;”結(jié)尾。以“, ” 結(jié)尾運(yùn)行時顯示該命令運(yùn)行結(jié)果,以“;” 結(jié)尾不顯示該命令運(yùn)行結(jié)果。 b. 注釋前加“%” 。 c. 運(yùn)行操作可使用命令快捷鍵。2、圖像文件的讀、寫和顯示 圖像文件的讀取 讀圖像文件的函數(shù)格式: a=imread(路徑、文件名及文件后綴 ) ,如 i=imread(e:image.bmp ) 其含義:將 e 盤中的 bmp 文件 image 賦給變量 i,bmp(windows bitmap)為位圖文件。3、得到的窗口如圖 6.1,文件菜單里包括:打開,保存,退出按鈕;圖像處理菜單里包括:sobel 算子、robert 算子、pri
26、witt 算子、laplacian 算子、canny 算子功能相應(yīng)的按鈕,分別為sobel、robert、priwitt、laplacian、canny。 圖 6.14、打開圖片信息:點(diǎn)擊文件菜單里的打開選擇所要打開文件夾里的圖片,則有如圖 6.2 所示。 圖 6.25、圖像邊緣檢測:點(diǎn)擊圖像處理菜單,選擇里面的算子所對應(yīng)的按鈕進(jìn)行操作,然后選擇文件菜單里的保存按鈕保存圖片,保存到相應(yīng)的文件夾,則得到的圖如圖 6.3 所示。 圖 6.36、退出:若要退出,點(diǎn)擊文件菜單里的退出按鈕,則可退出圖像處理界面。設(shè)計總結(jié)設(shè)計總結(jié)通過分析幾種應(yīng)用于數(shù)字圖像處理中的邊緣檢測算子,根據(jù)它們在實(shí)踐中的應(yīng)用結(jié)果進(jìn)
27、行研究,主要包括: sobel 邊緣算子、robert 邊緣算子、prewitt 邊緣算子、laplacian 算子、canny 邊緣算子對圖像的邊緣檢測。sobel 算子:根據(jù)像素點(diǎn)上下、左右鄰點(diǎn)灰度加權(quán)差,在邊緣處達(dá)到極值這一現(xiàn)象檢測邊緣。提供較為精確的邊緣方向信息,邊緣定位精度不夠高。當(dāng)對精度要求不是很高時,是一種較為常用的邊緣檢測方法。robert 算子:采用對角線方向相鄰兩像素之差表示信號的突變,檢測水平和垂直方向邊緣的性能好于斜線方向,定位精度比較高,檢測出的邊緣較細(xì)。prewitt 算子:凡灰度新值大于或等于閾值的像素點(diǎn)都是邊緣點(diǎn)。即選擇適當(dāng)?shù)拈撝?t,若 p(i,j)t,則(i
28、,j)為邊緣點(diǎn),p(i,j)為邊緣圖像。這種判定是欠合理的,會造成邊緣點(diǎn)的誤判。檢測出的邊緣比較粗,定位精度低,容易損失角點(diǎn)。 laplacian 算子:是二階微分算子,對圖像中的階躍性邊緣點(diǎn)定位準(zhǔn)確,但會丟失一部分邊緣的方向信息,造成一些不連續(xù)的檢測邊緣。canny 算子:采用高斯函數(shù)對圖像進(jìn)行平滑處理,該算子也將一些高頻邊緣平滑掉,造成邊緣丟失,采用了雙閾值算法檢測和連接邊緣,邊緣的連續(xù)性較好。 通過這次數(shù)字圖像課程設(shè)計,讓我可以熟悉 matlab 這個軟件。matlab 在工業(yè)方面的應(yīng)用很廣泛,我希望能有機(jī)會更深刻的學(xué)習(xí)理解它。 在指導(dǎo)教師的指導(dǎo)下,我順利的完成了這次數(shù)字圖像的課程設(shè)計,
29、課設(shè)題目有點(diǎn)難度,但對我們的課程學(xué)習(xí),和知識的運(yùn)用有著很好的作用??傊?,我認(rèn)為這次課程設(shè)計是不錯的,收獲也是豐富的。參考資料參考資料1 朱虹. 數(shù)字圖像處理基礎(chǔ)m. 北京: 科學(xué)出版社. 2005.4:217-2202余成波. 數(shù)字圖像處理及 matlab 實(shí)現(xiàn)m. 重慶: 重慶大學(xué)出版 社.2003.7:356-3593深潔,杜宇人,高浩軍.圖像邊緣檢測技術(shù)研究j.信息技術(shù),2005(12).4尹建媛. 圖像處理中邊緣檢測算法的研究j. 科技信息. 2008,(4):30-325崔屹數(shù)字圖像處理技術(shù)與應(yīng)用m北京:電子工業(yè)出版社,1997:35-396 王予生,卜佳俊,陳純.一種基于積分變換的
30、邊緣檢測算法j. 中國圖象圖形學(xué)報. 2002,7(2):145149致謝致謝通過兩周的的努力,我的課程設(shè)計終于完成了。在整個課程設(shè)計中,我在學(xué)習(xí)上和思想上都受益非淺,這除了自身的努力外,與指導(dǎo)的老師、同學(xué)和朋友的關(guān)心、支持和鼓勵是分不開的。 在課程設(shè)計的編寫過程中, 指導(dǎo)老師傾注了大量的心血,一遍又一遍地指出每次編程里的具體問題,詳細(xì)講解課題,你的細(xì)心指導(dǎo),嚴(yán)格把關(guān),循循善誘,在此我表示衷心感謝。同時我還要感謝在我做課設(shè)期間給予我?guī)椭耐瑢W(xué)們,沒有你們的幫助,我的課設(shè)不會那么順利。 做課程設(shè)計是一次再系統(tǒng)的學(xué)習(xí),讓我們鞏固了我們所學(xué)的知識,讓我們以后能更好的運(yùn)用于實(shí)踐打下了一定基礎(chǔ)。同時課程
31、設(shè)計的的完成,讓我在其中學(xué)到了許多,尤其是學(xué)會了幫助合作,懂得了幫助合作造就的效益和成果。在這里再次感謝幫助我的的同學(xué),還有對我們精心指導(dǎo)的老師!附錄附錄源程序: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
32、existing singleton*.% 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
33、gui before mywork_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).% see also: guide, guid
34、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
35、_outputfcn, mywork_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui_state.gui_callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);end% end initialization code - do not edit %
36、- executes just before mywork is made visible.function mywork_openingfcn(hobject, eventdata, handles, varargin)setappdata(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 matlab% h
37、andles 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 uiresume
38、)% 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 a fu
39、ture version of matlab% handles structure with handles and user data (see guidata) % get default command line output from handles structurevarargout1 = handles.output; % -function m_file_callback(hobject, eventdata, handles)% hobject handle to m_file (see gcbo)% eventdata reserved - to be defined in
40、 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 an image);axes(h
41、andles.axes_src);%用axes命令設(shè)定當(dāng)前操作的坐標(biāo)軸是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 - to be defined i
42、n a future version of matlab% handles structure with handles and user data (see guidata) % -function m_file_save_callback(hobject, eventdata, handles)filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, image files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, all files (*.*), . pick an image);axes(h
43、andles.axes_src);%用axes命令設(shè)定當(dāng)前操作的坐標(biāo)軸是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 version of matlab% handles struc
44、ture 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 handles and user data (see guid
45、ata) % -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% handles structure with handles and user data (see guidata) % -function m_sobel_callback(hobject, eventdata, handles)axes(handles.axe
46、s_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); % 計算x方向的梯度分量dy = imfilter(i, y_mask);
47、 % 計算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)% eventdata reserved - to be defined in a fut
48、ure version of matlab% handles structure with handles and user data (see guidata) % -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_mask = 1 0;0 -1; % 建立x方向的模板y_mask = rot90(x_mask); % 建
49、立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 = im2bw(grad,level); % 用閾值分割梯度圖像imshow(bw); % 顯示分割后的圖
50、像即邊緣圖像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=im
51、g_src;axes(handles.axes_src);imshow(a);title(原圖);y_mask = -1 -1 -1;0 0 0;1 1 1; % 建立y方向的模板x_mask = y_mask; % 建立x方向的模板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)換為灰度圖像lev
52、el = graythresh(grad); % 計算灰度閾值axes(handles.axes_dst);bw = im2bw(grad,level); % 用閾值分割梯度圖像imshow(bw); % 顯示分割后的圖像即邊緣圖像title(prewitt)% hobject handle to m_priwitt (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata) % -function m_lapacian_callback(hobject, eventdata, handles)img_src=getappdata(handles.figure_mywork
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報書丟了咋辦
- 英語教改課題申報書
- 國家課題項(xiàng)目申報書
- 新課標(biāo)相關(guān)課題申報書
- 合同范本號和合同編號
- 加工承攬合同范本格式
- 青年生育意愿課題申報書
- 員工店鋪勞務(wù)合同范本
- 化工用消泡劑采購合同范例
- 低價出售二手叉車合同范本
- 2025人教版一年級下冊數(shù)學(xué)教學(xué)進(jìn)度表
- DeepSeek教案寫作指令
- 2025年安徽省合肥熱電集團(tuán)招聘50人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 休學(xué)復(fù)學(xué)申請書
- 北京2025年02月北京市地質(zhì)礦產(chǎn)勘查院所屬事業(yè)單位公開招考工作人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- DeepSeek零基礎(chǔ)到精通手冊(保姆級教程)
- 煤礦監(jiān)測監(jiān)控培訓(xùn)
- 瓷磚鋪貼勞務(wù)承包協(xié)議書
- 2025年四川司法警官職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 新建污水處理廠工程EPC總承包投標(biāo)方案(技術(shù)標(biāo))
- 柔性電路板自動化制造-深度研究
評論
0/150
提交評論