【數字圖像處理】邊緣檢測

邊緣是指圖像中像素灰度有階躍變化或屋頂變化的像素的集合,存在於目標與背景、目標與目標、區域與區域之間,勾畫出了目標物體的輪廓,使人們能對某種目標一目瞭然。

 

邊緣一般分爲:

  • 階躍邊緣:兩邊像素的灰度明顯不同,呈現出階梯狀
  • 屋頂邊緣:兩邊像素的灰度從逐步增加向逐步減少轉變

常用的邊緣檢測算子有:

  • 梯度算子
  • Roberts算子
  • Prewitt算子
  • Sobel算子
  • Kirsch算子
  • Laplacian算子
  • Marr算子

 

梯度算子

特點:僅計算相鄰像素的灰度差,對噪聲比較敏感,無法抑制噪聲的影響。

Roberts算子

與梯度算子相似,但是計算方向不同,Roberts算子計算的是45°方向的梯度。

可以看出,其效果比梯度算子略好一點,也同樣對噪聲敏感,對邊緣定位不準確,提取邊緣線條較粗。

Prewitt算子

與梯度算子不同的是,Prewitt算子採用3×3大小,顧及了局部的整體情況的同時抑制了噪聲的影響,邊緣檢測結果在水平方向和垂直方向均比Robert算子更加明顯。

Sobel算子

與Prewitt算子類似,在四領域的權重爲2,而其他像素的權值爲1。Sobel算子在Prewitt算子的基礎上增加了權重的概念,認爲相鄰點的距離遠近對當前像素點的影響是不同的,距離越近的像素點對應當前像素的影響越大,從而實現圖像銳化並突出邊緣輪廓。

Sobel算子根據像素點上下、左右鄰點灰度加權差,在邊緣處達到極值這一現象檢測邊緣。對噪聲具有平滑作用,提供較爲精確的邊緣方向信息。因爲Sobel算子結合了高斯平滑和微分求導(分化),因此結果會具有更多的抗噪性,當對精度要求不是很高時,Sobel算子是一種較爲常用的邊緣檢測方法。

其能夠進一步抑制噪聲,但是檢測的邊緣較寬。

Kirsch算子(方向算子)

利用一組模板對圖像中的同一像素求卷積,選取最大值最爲該像素的邊緣強度,對應的方向則爲邊緣方向。

特點:在計算邊緣強度的同時可以得到邊緣方向,各方向間的夾角爲45°。

Nevitia算子

與Kirsch算子不同的是,它由12個模板,且各方向間的夾角爲30°而不是45°。

拉普拉斯算子

拉普拉斯(Laplacian)算子是n維歐幾里德空間中的一個二階微分算子,常用於圖像增強領域和邊緣提取。它通過灰度差分計算鄰域內的像素,基本流程是:判斷圖像中心像素灰度值與它周圍其他像素的灰度值,如果中心像素的灰度更高,則提升中心像素的灰度;反之降低中心像素的灰度,從而實現圖像銳化操作。在算法實現過程中,Laplacian算子通過對鄰域中心像素的四方向或八方向求梯度,再將梯度相加起來判斷中心像素灰度與鄰域內其他像素灰度的關係,最後通過梯度運算的結果對像素灰度進行調整。

通過模板可以發現,當鄰域內像素灰度相同時,模板的卷積運算結果爲0;當中心像素灰度高於鄰域內其他像素的平均灰度時,模板的卷積運算結果爲正數;當中心像素的灰度低於鄰域內其他像素的平均灰度時,模板的卷積爲負數。對卷積運算的結果用適當的衰弱因子處理並加在原中心像素上,就可以實現圖像的銳化處理。
 

由於梯度算子和拉普拉斯算子都對噪聲敏感,因此一般用他們檢測邊緣之前要先對圖像進行平滑。

特點:

優點:

  1. 各向同性、線性和位移不變的
  2. 對細線和孤立點檢測效果較好

缺點:

  1. 對噪聲敏感,對噪聲有雙倍加強的作用
  2. 不能檢測出邊的方向
  3. 常產生雙像素的邊緣

Marr算子

由於拉普拉斯算子在檢測前需要平滑,於是在拉普拉斯基礎上發展了Marr算子,平滑函數採用正態分佈的高斯函數。

參考資料:

[Python圖像處理] 十七.圖像銳化與邊緣檢測之Roberts算子、Prewitt算子、Sobel算子和Laplacian算子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章