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