1. 程式人生 > >邊緣檢測演算法

邊緣檢測演算法

1.邊緣定義及特點

邊緣是由灰階等高線定義的,穿過等高線時,灰階會迅速變化,沿著等高線走,灰階值的變化會更加輕柔,有可能是隨機變化的,因此邊緣具有一個可以測量的方向。邊緣畫素和噪聲畫素相比周圍的畫素都有明顯的變化,而邊緣畫素互相連線,構成等高線,因此可以通過這一特性區分邊緣畫素和噪聲畫素。

2.邊緣檢測的難點

(1)數碼化:影象的取樣不可能使得整個邊緣都落在畫素邊緣上,灰階的變化可能跨越多個畫素,形成帶鋸齒的斜坡邊緣,而不是階梯型邊緣。

(2)無處不在的噪聲:由於受到光強度、溫度、大氣效應等因素的影響,導致了影象存在噪聲,噪聲使得場景中表示同樣灰階的畫素,在影象中可能不是同樣的灰階,使灰階產生了隨機變化,因此理想邊緣的平滑線條和斜坡在真實的影象中不可能實現。

3.定位邊緣的常見運算元

有3類常見的方法定位邊緣,分別是導數運算元、模板匹配、邊緣數學模型。下面簡單介紹前兩種方法,詳細介紹最後一種方法。

3.1導數運算元

由於邊緣是由灰階值的變化而定義的,而導數可以表徵函式的變化率,因此可以利用它來檢測邊緣。畫素用二維變量表示,可以把梯度作為運算元。由於一幅影象的畫素是離散的,不能直接求畫素的偏導數,而是使用差分運算,即一個畫素點的導數可以由一塊區域性區域內灰階值的變化來近似。我們可以設定一個閾值,任何畫素的梯度值如果超過了閾值,即視為邊緣畫素。

3.2基於模板的邊緣檢測

基於模板的邊緣檢測的思想是將一個小的離散模板作為邊緣的模板,而不是直接使用導數運算元。模板既可以嘗試對邊緣的灰階變化進行建模,也可以嘗試近似一個導數運算元。常見的基於模板的邊緣檢測器有Sobel運算元和Kirsch運算元,這種檢測邊緣的方法比導數運算元好,尤其是在大噪聲的情況下。

3.3邊緣數學模型

3.3.1 canny運算元

canny運算元是一種非常重要的邊緣檢測運算元,它的最優性表現在:

(1)錯誤率低:canny運算元可以儘可能多地標識出原始影象的實際邊緣。

(2)區域性性:所標記出來的邊緣儘可能地接近實際影象中的實際邊緣。

(3)響應最小:影象中的邊緣只能標識一次,並且不把噪聲標識成邊緣。

具體實現步驟如下:

(1)去噪聲:首先對原始影象資料與二維高斯濾波模板進行卷積運算,得到的影象與原始影象相比有輕微的模糊,這樣可以消除噪聲。

(2)梯度計算:利用一階微分檢測找到影象灰度沿著x、y方向的導數,然後求出梯度的幅值和方向。

(3)非最大消除:考慮梯度幅度圖中的小鄰域,並比較中心畫素與其梯度方向上的相鄰畫素,如果中心畫素的梯度值不是最大的,則將其畫素梯度值置為0,否則保留。該操作的目的是細化梯度檢測得到的邊緣畫素所構成的邊界。

(4)滯後閾值化:選取兩個閾值並藉助滯後閾值化方法確定最後的邊緣點。首先標記梯度值大於高閾值的畫素點,認為它們一定是邊緣點;其次,對這些畫素相連的畫素使用低閾值,如果梯度值大於低閾值,則認為它們也是邊緣點。該步驟可減弱噪聲在最終邊緣影象中的影響,並可避免閾值過低而導致的虛假邊緣或由於閾值過高而導致的邊緣丟失。

3.3.2 Shen-Castan(ISEF)邊緣檢測器

該演算法基本形式與canny一致,首先利用平滑核進行卷積運算,再搜尋邊緣畫素。但他們提出了另一個最優的濾波器函式--無窮對稱指數濾波器,這個濾波器比canny的濾波器能給出更好的信噪比,而且有更好的區域性性。因為canny演算法是通過高斯的一階導數得到近似的最優濾波器,而ISEF則是直接使用最優的濾波器。然而ISEF沒有處理好多響應準則,因此可能會對噪聲和模糊邊緣產生錯誤的響應。

ISEF先利用無窮對稱指數濾波器對影象進行過濾,接著通過尋找拉普拉斯運算元的零交叉來定位這幅影象中的邊緣,只要從平滑後的影象減去原始影象就可以快速地找到拉普拉斯運算元的近似結果。將經過相減後得到的影象中所有數值為正的畫素設定為1,其他設定為0,可以得到二值拉普拉斯影象BLI。候選邊緣在BLI區域的邊緣上,相當於零交叉,可以把這些畫素當做邊緣,也可以經過一些額外的增強操作來提升演算法找出的邊緣畫素的質量。下面介紹兩種改進的方法。

第一種改進是使用負零交叉抑制。在邊緣畫素的位置,在過濾的影象的二階導數中會存在一個零交叉,即那一點的梯度要麼最大,要麼最小。如果二階導數的符號從正號變成負號,就稱為正零交叉,如果符號從負號變成了正號,則稱為負零交叉。所有其他的零交叉都認為是錯誤,且不認為這些零交叉表示邊緣,即只有梯度為最值的零交叉點所在的畫素位置才認為是邊緣。

在有些原始影象噪聲非常強烈的情況下,標準的閾值方法不能滿足。邊緣畫素可以通過將一個全域性閾值應用於梯度的方法來進行閾值操作,而ISEF提出了自適應的梯度方法。一個帶有固定寬度的視窗的中心在BLI中的候選邊緣畫素,如果確實為邊緣畫素,則這個視窗會包含兩個區域,這兩個區域被邊緣分開,帶有不同的灰階,那一點的梯度最佳估計值是在兩個區域之間的灰階的差值,其中一個區域對應於BLI中的0畫素,一個對應於1畫素。

最後,對邊緣應用滯後閾值操作方法,這和canny演算法中使用的方法相同。