基於Sobel和Canny邊緣檢測
阿新 • • 發佈:2019-01-07
影象邊緣是由灰度突變產的,屬於一種影象的特徵,是目標探測、識別的重要手段之一。
檢測邊緣通常為求原影象的梯度或二階導數,有如下結論:
(1)一階導數通常在影象中產生較粗的邊緣
(2)二階導數對精細細節、如細線、孤立點和噪聲有較強的響應
(3)二階導數在灰度斜坡和灰度臺階過渡處會產生雙邊緣響應
(4)二階導數的符號可用於確定邊緣的過渡是從亮到暗還是從暗到亮
下面再說邊緣檢測中比較著名的運算元Sobel、Canny。
Sobel是基於梯度影象模值大小的檢測運算元,通常有水平和垂直兩種運算元。
Canny可以認為是Sobel的改進運算元。它具有以下優點:
(1)低錯誤率
(2)邊緣點被很好定位
(3)單一的邊緣響應
其基本步驟包括:
(1)用一個高斯濾波器平滑影象
%去除噪聲的干擾
(2)計算梯度幅值影象和角度影象
(3)對梯度影象應用非最大抑制(保證單一邊緣響應)
%對規定方向以外的梯度方向進行非最大抑制
(4)用雙閾值處理和連線分析來檢測並連線邊緣(保證了低錯誤率)
%剔除小於閾值的邊緣,保留大於閾值的邊緣,處於高低閾值之間的邊緣點,若其與大於閾值的畫素點連線則保留,反之剔除。
PS:
注意在OPENCV中利用呼叫Sobel函式檢測邊緣時,應該分別求其水平和垂直兩個方向的邊緣,再進行加權疊加。
Sobel函式可選對影象求幾階導數,由實驗結果可以看出,二階導數求出的邊緣比一階更細 ,這也與之前給出的結論相吻合。
實驗結果:
左圖為Sobel一階導數,右圖為Sobel二階導數
下圖為Canny結果,效果更好