MATLAB實(shí)驗(yàn)報(bào)告_第1頁(yè)
MATLAB實(shí)驗(yàn)報(bào)告_第2頁(yè)
MATLAB實(shí)驗(yàn)報(bào)告_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余7頁(yè)可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于canny算子的邊緣檢測(cè)報(bào)告題目:基于canny算子的邊緣檢測(cè)學(xué) 院:專 業(yè):年 級(jí):學(xué) 號(hào):學(xué)生:指導(dǎo)教師:日 期:目錄摘要 21 Canny 邊緣檢測(cè)根本原理 . 32 Canny 邊緣檢測(cè)算法數(shù)學(xué)描述 33 算法過程 44 實(shí)現(xiàn)過程 45 結(jié)果顯示 96 總結(jié)和體會(huì) 97 參考文獻(xiàn) 9摘要圖象的邊緣是指圖象局部區(qū)域亮度變化顯著的局部, 該區(qū)域的灰度剖面一般可以看作是 一個(gè)階躍,既從一個(gè)灰度值在很小的緩沖區(qū)域內(nèi)急劇變化到另一個(gè)灰度相差較大的灰度值。圖象的邊緣局部集中了圖象的大局部信息, 圖象邊緣確實(shí)定與提取對(duì)于整個(gè)圖象場(chǎng)景的 識(shí)別與理解是非常重要的, 同時(shí)也是圖象分割所依賴的重要特征,

2、 邊緣檢測(cè)主要是圖象的灰 度變化的度量、檢測(cè)和定位,自從 1959 提出邊緣檢測(cè)以來,經(jīng)過五十多年的開展,已有許 多中不同的邊緣檢測(cè)方法。本文主要討論通過 canny 算子,來獲取圖像的邊緣區(qū)域的方法。1 Canny邊緣檢測(cè)根本原理具有既能濾去噪聲又保持邊緣特性的邊緣檢測(cè)最優(yōu)濾波器,其采用一階微分濾波器。采用二維高斯函數(shù)的任意方向上的一階方向?qū)?shù)為噪聲濾波器,通過與圖像卷積進(jìn)行濾波;然后對(duì)濾波后的圖像尋找圖像梯度的局部最大值,以此來確定圖像邊緣。根據(jù)對(duì)信噪比與定位乘積進(jìn)行測(cè)度,得到最優(yōu)化逼近算子,這就是Canny邊緣檢測(cè)算子。類似與Marr(LOG)邊緣檢 測(cè)方法,也屬于先平滑后求導(dǎo)數(shù)的方法。

3、2 Canny邊緣檢測(cè)算法數(shù)學(xué)描述stepl:用高斯濾波器平滑圖象。二維為高斯函數(shù)為式中:n式方向矢量,是梯度矢量。將圖像 f(x,y)與Gn作卷積,同時(shí)改變 n的方 向,Gn*f(x,y)取得最大值時(shí)的n就是正交于檢測(cè)邊緣的方向。step2:用一階偏導(dǎo)的有限差分來計(jì)算梯度的幅值和方向。A(x,y)反映了圖像(x,y)點(diǎn)處的邊緣強(qiáng)度,B是圖像(x,y)點(diǎn)處的法向矢量。step3:對(duì)梯度幅值進(jìn)行非極大值抑制。僅僅得到全局的梯度并缺乏以確定邊緣,因此為確定邊緣,必須保存局部梯度最大的點(diǎn),而抑制非極大值,如圖1。解決方法:利用梯度的方 向。四個(gè)扇區(qū)的標(biāo)號(hào)為0到3,對(duì)應(yīng)3*3鄰域的四種可能組合。在每一

4、點(diǎn)上,鄰域的中心像素M與沿著梯度線的兩個(gè)像素相比。如果M的梯度值不比沿梯度線的兩個(gè)相鄰像素梯度值大,那么令 M=0,即卩 G(x,y)=NMS(Mx,y, §x,y)。step4:用雙閾值算法檢測(cè)和連接邊緣。減少假邊緣段數(shù)量的典型方法是對(duì)G(x,y)使用一個(gè)閾值,并將低于閾值的所有值賦零值。通常選取閾值的方法:雙閾值算法進(jìn)行邊緣判別和連接邊緣。 首先是邊緣判別:但凡邊緣強(qiáng)度大于高閾值的一定是邊緣點(diǎn);但凡邊緣強(qiáng)度小于低閾值的一定不是邊緣點(diǎn);如果邊緣強(qiáng)度大于低閾值又小于高閾值,那么看這個(gè)像素的鄰接像素中有沒有超過高閾值的邊緣點(diǎn),如果有,它就是邊緣點(diǎn),如果沒有,它就不是邊緣點(diǎn)。 其次是連接

5、邊緣:雙閾值算法對(duì)非極大值抑制圖像作用兩個(gè)閾值T1和T 2,且2 T 1t 2,從而可以得到兩個(gè)閾值邊緣圖像G1(x,y)和G2(x,y)。由于G2(x,y)使用高閾值得到,因而含有很少的假邊緣,但有間斷(不閉合)。雙閾值法要在 G2(x,y)中把邊緣連接成輪廓, 當(dāng)?shù)竭_(dá)輪廓的端點(diǎn)時(shí),該算法就在 G 1(x,y)的8鄰點(diǎn)位置尋找可以連接到輪廓上的邊緣,這樣,算法不斷地在 G1(x,y)中收集邊緣,直到將G1(x,y)連接起來為止。檢測(cè)階躍邊緣的根本思想是在圖像中找出具有局部最大梯度幅值的像素點(diǎn)。雖然Canny邊緣檢測(cè)算法也有本身的針對(duì)性和局限性,但canny算子邊緣檢測(cè)算法那么既能濾去噪聲又保

6、持邊緣特性的邊緣檢測(cè)的一階微分算法中的最正確選擇方法。3算法過程原始圖像A(x,y)偏導(dǎo)(Bx.By)像邊緣初步得到邊緣點(diǎn)4實(shí)現(xiàn)過程1讀入圖像: clear;clc;i=imread('light.jpg');k=rgb2y(i);%獲取h分量,即亮度分量根據(jù)邊緣的定義,邊緣檢測(cè)的目的是標(biāo)識(shí)數(shù)字圖像中亮度變化明顯的點(diǎn)。又根據(jù)公式 Brightness = 0.3 * R + 0.6 * G + 0.1 * B;計(jì)算出亮度分量 y;function k=rgb2y(z)%i必須為rgb三維矩陣m,n ,p=size(z);k=zeros( m,n);z=double(z);for

7、 i=1:mfor j=1: nk(i,j)=0.3*z(i,j,1)+0.6*z(i,j,2)+0.1*z(i,j,3);end end2用3x3高斯濾波器進(jìn)行濾波,消除噪聲;function j=gaosi(i);%i必須為二維double矩陣j=i;h,w=size(i);for m=2;h-1for n=2:w-1j(m, n)=(i(m, n-1)+2*i(m, n)+i(m, n+1)/4;%橫向高斯濾波endend利用上面自定義的 gaosi函數(shù)對(duì)圖像進(jìn)行二維3x3濾波,k仁gaosi(k);%橫向?yàn)V波k1=k1'%對(duì)圖像進(jìn)行轉(zhuǎn)置,為下一步縱向?yàn)V波作準(zhǔn)備縱向?yàn)V波=轉(zhuǎn)置后橫

8、向?yàn)V波k1=gaosi(k1);k1=k1'% 復(fù)原3針對(duì)每一個(gè)像素,計(jì)算橫向與縱向兩方向的微分近似,以得到像素的梯度大小和方向;由就伺到呻度豹大小M和方勺O-Afsqrl '.p"聲+?" 7-0 arctan/p)利用上式,易知p,q分別為計(jì)算出的橫向、縱向的微分近似,由此再計(jì)算出梯度的大小和方 向。%十算梯度的大小和方向h,w=size(k);for m=2:h-1for n=2:w-1zz1= k1(m, n-1)+k1(m+1, n-1);zz2=k1(m, n)+k1(m+1, n);zz3=k1(m, n-1)+k1(m, n);zz4=k1(

9、m+1, n-1)+k1(m+1, n);kp(m, n)=0.5*(zz2-zz1);kq(m, n)=0.5*(zz3-zz4);kfu(m, n)=sqrt(kp(m, n)2)+(kq(m, n) A2);% 梯度大小kjiao(m, n)=ata n( kq(m, n)/(kp(m, n)+0.001);% 梯度方向防止分母為0end end4對(duì)梯度進(jìn)行非極大抑制"非局部最大值置0;1. 先將梯度方向歸類為四個(gè)主要方向,左右、上下、左斜、右斜。%非極大值抑制%首先將梯度方向劃分為 4 個(gè)方向 0,45,90,135 以及他們的反向延長(zhǎng)線 for m=2:h-1for n=2

10、:w-1if kjiao(m,n)>=3/8*pikjiao(m,n)=2;else if kjiao(m,n)>=1/8*pikjiao(m,n)=1;else if kjiao(m,n)>=-1/8*pikjiao(m,n)=0;else if kjiao(m,n)>=-3/8*pikjiao(m,n)=3;elsekjiao(m,n)=2;endendendendendend根據(jù)劃分后的 4 個(gè)方向,判斷該點(diǎn)是否是 8 鄰域的局部最大值梯度方向 ,比方,梯度方 向?yàn)樽笥曳较虻狞c(diǎn),判斷其是否比左右兩點(diǎn)的值來的大,如果不是,使該點(diǎn)的值為 0.%按照各個(gè)方向分別判斷k2

11、=k1;for m=2:h-1for n=2:w-1if kjiao(m,n)=0if k1(m,n)>k1(m,n-1)&&k1(m,n)>k1(m,n+1);else k2(m,n)=0;endendif kjiao(m,n)=1if k1(m,n)>k1(m+1,n-1)&&k1(m,n)>k1(m-1,n+1);else k2(m,n)=0;endendif kjiao(m,n)=2if k1(m,n)>k1(m-1,n)&&k1(m,n)>k1(m+1,n);else k2(m,n)=0;endend

12、if kjiao(m,n)=3if k1(m,n)>k1(m-1,n-1)&&k1(m,n)>k1(m+1,n+1);else k2(m,n)=0;endendendend5對(duì)梯度取兩次閾值;用兩個(gè)閾值 t1 和 t2(t2>t1, 一般取 t2=2*t1), 我們把梯度值小于 t1 的像素的灰度設(shè)為 0, 得 到圖像 1,然后我們把梯度值小于 t2 的像素的灰度設(shè)為 0,得到圖像 2。由于圖像 2 的閾值較 高, 噪音較少 (但同時(shí)也損失了有用的邊緣信息 , 而圖像 1的閾值較低 , 保存了較多信息 ,因此 我們可以以圖像 2 為根底 , 以圖像 1 為補(bǔ)充

13、來連接圖像的邊緣。%兩次閾值分割k3=k2;%以t1為閾值分割后的矩陣k4=k2;%以t2為閾值分割后的矩陣t1=50;t2=2*t1;for m=2:h-1for n=2:w-1if kfu(m,n)<t1k3(m,n)=0;endif kfu(m,n)<t2k4(m,n)=0;endendend5對(duì)邊緣進(jìn)行連接;a. 掃描圖像2,當(dāng)我們遇到一個(gè)非零值的像素p時(shí)(跟蹤以p為開始點(diǎn)的輪廓線直到該輪廓線的終點(diǎn) q;b. 在圖像1中,考察與圖像2中p點(diǎn)位置對(duì)應(yīng)的點(diǎn)p'的8鄰域,如果在p'點(diǎn)的8鄰域中有非 零像素 q' 存在 , 將其包括到圖像 2 中 , 作為點(diǎn)

14、 r, 從 r 開始 ( 重復(fù)第 a 步, 直到我們?cè)趫D像 1 和 圖像 2 中都無法繼續(xù)為止 ;c. 我們已經(jīng)結(jié)束了對(duì)包含 p 的輪廓線的連接 , 將這條輪廓標(biāo)記為已訪問過 , 回到第 a 步,尋找 下一條輪廓線,重復(fù)第 (a)(b)(c) 步直到圖像 2中再也找不到新輪廓線為止 .findline.m:function ff,flag1=findline(k3,k4,flag,m,n) flag1=flag;m1=m+1;n1=n+1;while(m=m1|n=n1)% 假設(shè) m 和 n 都不發(fā)生變化,說明 line 已到終點(diǎn) flagg=0;for i=1:3if(flagg=1) br

15、eak;endfor j=1:3if k3(m-2+i,n-2+j)=0 k4(m-2+i,n-2+j)=255; m1=m-2+i;n1=n-2+j;% 新的 m,n 點(diǎn) flag1(m,n)=1;% 標(biāo)記已檢測(cè)過 flagg=1;break;endendendm=m1;n=n1;endff=k4;主函數(shù)里寫上:figure;subplot(221);imshow(i);title(' 原圖像 '); subplot(222);imshow(k3,);title(' 閾值為 50 的分割圖像 '); subplot(223);imshow(k4,);title

16、(' 閾值為 100 的分割圖像 '); flag=zeros(h,w);% 標(biāo)記該點(diǎn)是否以檢測(cè)過, 1 表示檢測(cè)過 for m=2:h-1for n=2:w-1if k4(m,n)=0&&flag(m,n)=0 k4,flag=findline(k3,k4,flag,m,n);endendend subplot(224);imshow(k4,);title(' 修正后的分割圖像 ');5結(jié)果顯示S X - Q 囲口縛沮士a的丁荀臣芻產(chǎn)下“掃-茫値止 TBijif. rawle ECft Vie/* Insist Toot Oektaa rMtto典.H創(chuàng)p _ -Zj J 鳥6總結(jié)和體會(huì)通過完成這次數(shù)字圖像的大作業(yè),對(duì)canny算子的原理及算法有了更加清晰的認(rèn)識(shí)。并通過實(shí)際的運(yùn)行程序,對(duì)課上所學(xué)到的知識(shí)有了更加深刻和直觀的了解。這學(xué)期學(xué)習(xí)了數(shù)字圖像處理這門課程,對(duì)各種圖像處理方法有了一些根本的了解,并學(xué)習(xí)了 matlab圖像處理的一些根本應(yīng)用方法。在使用matlab后,給我的感覺就是這個(gè)軟件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論