邊緣檢測演算法

2021-08-16 18:14:29 字數 2143 閱讀 9188

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

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

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

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

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

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

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

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

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

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

具體實現步驟如下:

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

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

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

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

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

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

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

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

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

Sobel邊緣檢測演算法

索貝爾運算元 sobel operator 主要用作邊緣檢測,在技術上,它是一離散性差分運算元,用來運算影象亮度函式的灰度之近似值。在影象的任何一點使用此運算元,將會產生對應的灰度向量或是其法向量 sobel 卷積因子為 該運算元包含兩組 3x3的矩陣,分別為橫向及縱向,將之與影象作平面卷積,即可分...

Canny邊緣檢測演算法

canny邊緣檢測演算法的步驟 1 用高斯濾波器平滑濾波 2 用一階偏導的有限差分來計算的梯度的幅值與方向 3 對梯度幅值進行非極大值檢測 目的是細化邊緣 4 通過雙閾值演算法對進行邊緣連線。第一步 高斯濾波 高斯函式如下公式所示 它的影象是這樣的 高斯濾波,其實就是將與乙個高斯模組求卷積。根據高斯...

Sobel邊緣檢測演算法

索貝爾運算元 sobel operator 主要用作邊緣檢測,在技術上,它是一離散性差分運算元,用來運算影象亮度函式的灰度之近似值。在影象的任何一點使用此運算元,將會產生對應的灰度向量或是其法向量 sobel卷積因子為 該運算元包含兩組3x3的矩陣,分別為橫向及縱向,將之與影象作平面卷積,即可分別得...