Log和Canny邊緣檢測(附Matlab程序)


 

一、 實驗目的

(1) 通過實驗分析不同尺度下LOG和Canny邊緣提取算子的性能。

(2) 研究這兩種邊緣提取方法在不同參數下的邊緣提取能力。

(3) 使用不同的濾波尺度和添加噪聲能量(噪聲水平),通過與無噪聲圖像對比,選擇最能說明自己結論的濾波尺度和噪聲水平,並做出分析說明。

二、 實驗原理

邊緣的含義:在數字圖像中,邊緣是指圖像局部變化最顯著的部分,邊緣主要存在於目標與目標,目標與背景之間,是圖像局部特性的不連續性,如灰度的突變、紋理結構的突變、顏色的突變等。盡管圖像的邊緣點產生的原因各不相同,但他們都是圖形上灰度不連續或灰度急劇變化的點,圖像邊緣分為階躍狀、斜坡狀和屋頂狀。

一般圖像邊緣檢測方法主要有如下四個步驟:

(1)圖像濾波:傳統邊緣檢測算法主要是基於圖像強度的一階和二階導數,但導數的計算對噪聲很敏感,因此必須使用濾波器來改善與噪聲有關的邊緣檢測器的性能。需要指出的是,大多數濾波器在降低噪聲的同時也造成了邊緣強度的損失,因此,在增強邊緣和降低噪聲之間需要一個折衷的選擇。

(2)圖像增強:增強邊緣的基礎是確定圖像各點鄰域強度的變化值。增強算法可以將鄰域(或局部)強度值有顯著變化的點突顯出來。邊緣增強一般是通過計算梯度的幅值來完成的。

(3)圖像檢測:在圖像中有許多點的梯度幅值比較大,而這些點在特定的應用領域中並不都是邊緣,所以應該用某種方法來確定哪些點是邊緣點。最簡單的邊緣檢測判斷依據是梯度幅值。

(4)圖像定位:如果某一應用場合要求確定邊緣位置,則邊緣的位置可在子像素分辨率上來估計,邊緣的方位也可以被估計出來。

LOG檢測算子

(1)LOG邊緣檢測算子

在20世紀70年代,Marr理論根據神經生理學實驗得出了以下結論:物體的邊界是將亮度圖像與其解釋連接起來的最重要線索。邊緣檢測技術在當時是基於很小鄰域的卷積,只對特殊圖像效果好。這些邊緣檢測子的主要缺點是它們依賴物體的大小且對噪聲敏感。

基於二階導數過零點的邊緣檢測技術探究了階躍邊緣對應於圖像函數陡峭的變化這一事實。圖像函數的一階導數在對應於圖像邊緣的位置上應該取得極值,因此二階導數在同一位置應該為0;而尋找過零點位置比起極值來得更容易和更准確。關鍵的問題是如何穩定地計算二階導數,一種可能性是首先平滑圖像(減小噪聲),再計算二階導數。在選擇平滑濾波器時,需要滿足兩個標准:

(1) 濾波器應該是平滑的且在鄰域中大致上是有限帶寬的,以便減少會導致函數變化的可能頻率數。

(2)空間定位的約束要求濾波器的響應應來自於圖像中鄰近的點。這兩個標准矛盾的,但是可以通過使用高斯分布同時得到優化。在實踐中,需要准確地考慮優化的含義。

2D高斯平滑算子(也稱為高斯濾波器或簡單地稱為高斯)由下式給出:

clip_image002

其中clip_image004是圖像坐標,σ是關聯的概率分布的標准差。標准差是高斯濾波器的唯一參數,它與濾波器操作鄰域的大小成正比。離算子中心越遠的像素影響越小,離中心超過3的像素影響可以忽略不計。我們的目標是得到平滑后2D函數的二階導數。我們知道Laplacian算子給出了二階導數且是各向同性的。那么高斯平滑后的圖像的Laplacian可以表示為:

clip_image006

由於所涉及算子的線性性,微分和卷積運算順序可以交換:

clip_image008

由於高斯濾波器的導數與所考慮的圖像無關,故它可以事先解析地計算出來。這樣復合運算的復雜度降低了。選擇算子clip_image010的基礎有兩個基本概念。第一,算子的高斯部分會模糊圖像,從而在尺寸上將結構的灰度(包括噪聲)降低到遠小於σ的程度,而且高斯函數能在空間和頻率兩個域平滑圖像,因而在原圖像中引入不存在的人為干擾(如振鈴)的可能性很小。第二,拉普拉斯有各向同性(旋轉不變)的重要優點,符合人的視覺系統特性,而且對任何模板方向的灰度變化有相等的響應,從而避免了使用多個模板去計算圖像中任何點處的最強響應。

LOG算法步驟如下:

1、 取樣得到的clip_image012高斯低通濾波器對輸入圖像濾波。

2、 計算第一步得到圖像的拉普拉斯。

3、 找到步驟2所得圖像的零交叉。

Canny邊緣檢測算子介紹

1986年,JOHN CANNY 提出一個很好的邊緣檢測算法,被稱為Canny邊緣檢測器,它是迄今為止討論過的最優秀的邊緣檢測器。

Canny方法基於三個基本的目標:

1、低錯誤率。所有的邊緣都應該被找到,並且沒有假邊緣,所有檢測的邊緣盡可能真實。

2、邊緣點應被很好的定位。由檢測器檢測到的邊緣點與真實邊緣的中心之間的巨鹿應該最小。

3、單一的邊緣點效應。對於真實的邊緣點,檢測器應該僅僅返回一個點。也就是真實邊緣的局部最大數應該是最小的。意味着僅存在單一邊緣點的位置,檢測器不應指出多個邊緣像素。

Canny邊緣檢測算法由一下基本步驟組成:

1、用一個高斯濾波器平滑輸入圖像。

2、計算梯度幅值圖像和角度圖像。

3、對梯度幅值圖像應用非最大抑制。

4、用雙閾值處理和連接分析來檢測並連接邊緣。

算法詳解

1、高斯濾波

對任何一幅圖像clip_image014進行邊緣檢測,都不能直接在原始數據上進行操作,必須有平滑濾波的過程。Canny算子的第一步就是對原始圖像進行高斯平滑濾波,高斯模板如下:

clip_image002[1]

用該模板對原始圖像進行高斯卷積,可以得到平滑后的圖像:

clip_image006[1]

高斯模糊后的圖像與原始圖像相比,有輕微的模糊,高斯卷積的目的主要是為了抑制圖像噪聲對邊緣檢測的干擾,它能夠在頻域和時域兩個域平滑圖像。

2、梯度幅值圖像和角度圖像

clip_image018

幅值圖像clip_image020和角度圖像clip_image022是與平滑后的圖像尺寸相同的陣列。因為它是使用梯度得到的,clip_image020[1]在局部最大值范圍通常包含更寬的范圍。下一步是細化那些邊緣,也就是下一步需要采用的操作,使用非最大抑制。

3、非最大抑制

非最大抑制的目的是細化梯度幅值圖像產生的寬邊緣問題,該方法的本質是指定邊緣法線的許多離散方向(梯度向量)。例如,在一個3×3區域內,對於通過該區域中心點的邊緣,我們可以定義四個方向:水平、垂直、+45°和-45°。圖1顯示了水平邊緣的兩個可能方向。

clip_image023clip_image024

圖1  在一個3×3區域中,水平邊緣的兩個可能方向。

因為我們需要把所有的邊緣方向量化為四個方向,故需要定義一個方向范圍,在該范圍內,我們考慮一個水平方向的邊緣。我們由法線的方向來確定邊緣的方向。如圖2所示,如果邊緣法線方向的范圍為-25°和+25°,或者是-157.5°和+157.5°,我們稱該邊緣為水平邊緣。圖3則顯示了對應於所考慮的四個方向的角度范圍。

clip_image026 clip_image028 圖2 圖3

圖2表示一個水平邊緣的邊緣法線的方向角的值的范圍(灰色)        

圖3表示在3×3區域中,4種類型的邊緣方向的邊緣法線角度范圍

令d1,d2,d3和d4表示四個基本邊緣方向:水平、-45°、垂直、+45°。對於clip_image022[1]中以沒一點clip_image004[1]為中心的3×3區域,我們可以給出如下非最大抑制方案:

(1) 尋找最接近clip_image022[2]的方向clip_image032.

(2) 如果clip_image020[2]的值至少小於沿clip_image032[1]的兩個鄰居之一,則令clip_image035(抑制);

否則,令clip_image037clip_image039是非最大抑制后的圖像。

3、閾值處理

為了減少偽邊緣點,對clip_image039[1]進行閾值處理。Canny算子采用雙閾值的處理方法,一個低閾值clip_image042,一個高閾值clip_image044,Canny算子clip_image044[1]clip_image042[1]比率2:1或3:1。將閾值操作認為兩幅附加的圖像

clip_image046

clip_image048

開始時,clip_image050clip_image052被設置為零。閾值處理后,clip_image050[1]的非零像素通常比clip_image052[1]少,但是clip_image050[2]中所有的非零像素都包含在clip_image052[2]中。通過令clip_image054

三、 實驗結果及分析

在實驗中,選取三幅圖像作為邊緣檢測的輸入圖像,分別是棋盤格(Tessella.bmp)、Lena (Lena.bmp)和自己選擇的一幅自然場景圖像(轉換成8bit灰度,256×256大小的Bmp格式圖像)。實驗過程中,為了比較噪聲的影響,分別對圖像加入了不同參數下的高斯噪聲。具體參數如下:

對於LOG算子,采用了均值為0,標准差σ=0.005的高斯白噪聲。高斯模板采用的是濾波尺度為5×5,標准差σ=1,設置的閾值有thr=0.06、0.10、0.15三種情況。同時為了比較加入噪聲對邊緣檢測的影響,同時參考了無噪聲不同參數下的邊緣檢測效果。

對於Canny算子,設置的參數主要有高斯模糊尺度的不同,添加的噪聲的程度以及雙閾值參數的設置。具體為在無添加噪聲情況下,有濾波尺度5×5

σ=1,thr_min=12,thr_max=24;濾波尺度5×5 ,σ=0.5 ,thr_min=12, thr_max=24;濾波尺度5×5 ,σ=1,thr_min=24 ,thr_max=48;濾波尺度5×5 ,σ=1 ,thr_min=6 thr_max=12;添加高斯噪聲圖片均值為0,方差為0.005 濾波尺度5×5 ,σ=1 thr_min=6 ,thr_max=12;添加高斯噪聲圖片均值為0,方差為0.0005濾波尺度5×5 ,σ=1 ,thr_min=6 ,thr_max=12。

(一)LOG邊緣檢測結果

1、Lena(256×256,bmp格式的灰度圖)為測試圖片進行邊緣檢測

(1)噪聲水平為=0.0005

clip_image056clip_image058

圖1-1-1 LOG 邊緣檢測及局部放大 clip_image060=1 thr=0.06

clip_image062clip_image064

圖1-1-2 LOG 邊緣檢測及局部放大 clip_image060[1]=1 thr=0.10

clip_image066clip_image068

圖1-1-3 LOG 邊緣檢測及局部放大 clip_image060[2]=1 thr=0.15

clip_image070clip_image072

圖1-1- 4 LOG 邊緣檢測及局部放大 clip_image060[3]=0.5 thr=0.15

(2)噪聲水平為=0.005

clip_image074clip_image076

圖1-1-5 LOG 邊緣檢測及局部放大 clip_image060[4]=1 thr=0.06

2、以棋盤格Tessella為測試圖片進行邊緣檢測

(1)噪聲水平為=0.0005

clip_image078clip_image080

圖1-2-1 LOG 原圖及加噪圖像

clip_image082clip_image084

圖1-2-2 LOG 高斯平滑及邊緣檢測圖像 clip_image060[5]=1 thr=0.06

(二)Canny邊緣檢測結果

該部分對Canny邊緣檢測的四個步驟的各階段圖像都進行了顯示,以便檢驗每一步操作的功能。在本實驗中,閾值采用了thr_max/thr_min=2的默認比例。

1、以Lena(256×256,bmp格式的灰度圖)為測試圖片進行邊緣檢測

(1)噪聲水平為=0,無噪聲邊緣檢測

clip_image094clip_image096

clip_image098clip_image100

圖2-1-1濾波尺度clip_image102 clip_image060[7]=1 thr_min=12 thr_max=24

clip_image104vclip_image106

clip_image108clip_image110

圖2-1-2濾波尺度clip_image102[1] clip_image060[8]=0.5 thr_min=12 thr_max=24

clip_image094[1]clip_image096[1]

clip_image098[1]clip_image115

圖2-1-3濾波尺度clip_image102[2] clip_image060[9]=1 thr_min=24 thr_max=48

clip_image094[2] clip_image096[2] clip_image098[2] clip_image120

圖2-1-4濾波尺度clip_image102[3] clip_image060[10]=1 thr_min=6 thr_max=12

(2)噪聲水平為=0.005

clip_image122 clip_image124 clip_image126 clip_image128

圖2-1-5濾波尺度clip_image102[4] clip_image060[11]=1 thr_min=6 thr_max=12

(3)噪聲水平為=0.005

clip_image130clip_image132clip_image134clip_image136

圖2-1-6濾波尺度clip_image102[5] clip_image060[12]=1 thr_min=6 thr_max=12

2、以棋盤格Tessella為測試圖片進行邊緣檢測

clip_image138clip_image140clip_image142 clip_image144

圖2-2-1添加高斯噪聲圖片均值為0,方差為0.0005

濾波尺度clip_image102[6] clip_image060[13]=1 thr_min=6 thr_max=12

實驗結果分析

(1)以Lena圖像分析LOG和Canny

通過觀察圖1-1-1、圖1-1-2及圖1-1-3,可以發現LOG邊緣檢測隨着閾值thr的增大,雖然噪點越來越少,但同時檢測到的圖像邊緣信息丟失嚴重,圖像局部精細部分檢測幾乎趨向於零。

通過觀察圖1-1-1和圖1-1-5,兩幅圖主要是加的噪聲水平不一樣,前者是0.0005,后者則是0.005,可以看到圖1-1-5邊緣檢測的效果非常差,幾乎只能隱約看到輪廓信息,大量的噪點充斥着整幅圖像。從而我們可以知道LOG算子對噪聲比較敏感,圖1-3-2同樣證實了該結論。

比較高斯濾波模板標准差為1的圖1-1-1和標准差為0.5圖1-1-4,可以發現在尺度較小的情況下,對圖像中的紋理豐富的頭發,帽子上的裝飾刻畫的比較細致,但同時丟失了背景中左側的垂直邊緣和右側中部的對比度很弱的橫向邊緣;在大尺度上,這些背景邊緣得到了體現,但同時對於那些豐富的紋理區,檢測結果出現了丟失和偏移。

從Canny算子的檢測結果來看,它對於圖像中的紋理豐富的地方和背景處的邊緣,以及對比度弱的邊緣都能得到很好的檢出率;從圖2-1-1和圖2-1-2可以發現在大尺度上同樣也丟失了很多細節,只表現出一些輪廓特征。

比較圖2-1-1、圖2-1-3及圖2-1-4,同樣可以發現,隨着閾值的增大,Canny邊緣檢測同樣丟失信息越來越多,只表現出一些輪廓。比較圖2-1-4和圖2-1-5,在噪聲水平擴大10倍的情況下,可以觀察到左側垂直邊緣信息丟失嚴重,同時邊緣像素變寬,出現了橫向的細小條紋。右側黑色背景部分出現了一定的偽邊緣現象。但相對於LOG算子,Canny邊緣檢測總體效果較好,對噪聲的抑制較強。

(2)以Tessella圖像分析LOG和Canny

Tessella圖像是邊緣信息豐富的棋盤格,灰度信息分布規律,只能取有限的幾個值。觀察比較圖1-2-2和圖2-2-1,可以發現,對於LOG算子,垂直信息丟失嚴重,垂直邊緣普遍斷開,水平邊緣信息也比較寬,對噪聲比較敏感,檢測效果較差。對於Canny算子,可以發現邊緣檢測效果非常好,對於噪聲點的抑制也表現的非常優異,只出現了一些零散的孤立噪聲點。Canny算子雖然對各種邊緣都有較好的檢出率,但是檢測出的邊緣點與原始圖像的位置有一定范圍的誤差。

四、 實驗結論

從以上的檢測結果中可以看出,相同尺度下的LOG算子總是能比Canny算子檢測出更多的細節,而相對於此,Canny算子卻總是能對真正比較顯著地邊緣給出檢測。LOG邊緣檢測子是采用二階導數過零點的檢測方法,故對噪聲更敏感一些,因此從抑制噪聲方面來講,Canny邊緣檢測子不容易受到噪聲的干擾,而相同尺度下LOG算子卻容易受到噪聲的干擾,抑制噪聲的能力要弱一些。另外,由於Canny邊緣檢測子采用兩種不同的閾值分別檢測強邊緣和弱邊緣,並且當弱邊緣和強邊緣相連時,才將弱邊緣包含在輸出圖像中,故而Canny算子更能檢測出真正的弱邊緣,但是Canny邊緣檢測子檢測出的邊緣的位置會有一定范圍的誤差,LOG邊緣檢測子相對比較容易受到噪聲干擾,會檢測出更多的細節,也容易檢測出一些由於噪聲引起的假邊緣,但是LOG邊緣檢測子對邊緣位置的檢測還是很准確的。在大尺度上的算法都比較好的檢測出樹干的邊緣,而對周圍的紋理區域的刻畫都失去了組織結構上的特征。

LOG算子容易受尺度的影響,不同尺度下的邊緣點要用不同尺度的LOG算子檢測,Canny 算子受尺度的影響不太明顯,不同尺度下,邊緣點的位置都有偏差,但幾乎相同; LOG算子對噪聲的抑制能力隨着尺度的增加而增加,相同尺度下的Canny算子比LOG算子的抗噪聲能力強,而LOG算子比Canny算子的邊緣點准確;在尺度選擇合適的情況下,LOG算子對圖像邊緣點檢測的位置非常准確,能夠保留邊緣點比較細致的組織結構,而Canny算子對圖像邊緣檢出率比較高,包括紋理區域,以及對比度很弱的邊緣點,但是對這些邊緣點的組織結構刻畫得不是特別細致,邊緣點的位置有小范圍的偏差。

 

MATLAB程序http://download.csdn.net/detail/lk274857347/9577223

 

參考文獻

1. D.Marr and E. Hildreth, Theory of Edge Detection, Proc. R. Soc. Lond. B207:187-217.

2. John Canny, A Computational Approach to Edge Detection, IEEE Trans. PAMI, 8(6):679-698.

3. James J. Clark, Authenticating Edges Produced by Zero-crossing Algorithms, IEEE T. PAMI, 11(1), 1989, pp.43-57.

4. Rafael, C, Gonzalez, Richard, E, Woods. 數字圖像處理(第三版)[M]. 北京:電子工業出版社, 2011.

5. http://blog.csdn.net/humanking7/article/details/46606791


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM