1. 程式人生 > >基於Sobel和Canny邊緣檢測

基於Sobel和Canny邊緣檢測

影象邊緣是由灰度突變產的,屬於一種影象的特徵,是目標探測、識別的重要手段之一。

檢測邊緣通常為求原影象的梯度或二階導數,有如下結論:

1)一階導數通常在影象中產生較粗的邊緣

2)二階導數對精細細節、如細線、孤立點和噪聲有較強的響應

3)二階導數在灰度斜坡和灰度臺階過渡處會產生雙邊緣響應

4)二階導數的符號可用於確定邊緣的過渡是從亮到暗還是從暗到亮

下面再說邊緣檢測中比較著名的運算元SobelCanny

Sobel是基於梯度影象模值大小的檢測運算元,通常有水平和垂直兩種運算元。

Canny可以認為是Sobel的改進運算元。它具有以下優點

1)低錯誤率

2)邊緣點被很好定位

3)單一的邊緣響應

  其基本步驟包括:

(1)用一個高斯濾波器平滑影象

%去除噪聲的干擾

(2)計算梯度幅值影象和角度影象

(3)對梯度影象應用非最大抑制(保證單一邊緣響應)

%對規定方向以外的梯度方向進行非最大抑制

(4)用雙閾值處理和連線分析來檢測並連線邊緣(保證了低錯誤率)

%剔除小於閾值的邊緣,保留大於閾值的邊緣,處於高低閾值之間的邊緣點,若其與大於閾值的畫素點連線則保留,反之剔除。

PS

注意在OPENCV中利用呼叫Sobel函式檢測邊緣時,應該分別求其水平和垂直兩個方向的邊緣,再進行加權疊加。

Sobel函式可選對影象求幾階導數,由實驗結果可以看出,二階導數求出的邊緣比一階更細

,這也與之前給出的結論相吻合。

實驗結果:

左圖為Sobel一階導數,右圖為Sobel二階導數

   

下圖為Canny結果,效果更好