邊緣偵測 - 索伯算子 ( Sobel Operator )

Ken Huang
電腦視覺
Published in
Jan 22, 2021

與拉普拉斯算子類似,但對噪音容忍度更高,且可偵測邊緣之方向性

前言

前一篇文章提到的拉普拉斯算子 ( Laplacian operator ),不只是測邊的唯一方法,這篇文章介紹的索伯算子 ( Sobel operator ) 是更常被使用的算子。

相較於拉普拉斯算子而言,索伯算子只用圖像的梯度作為判斷依據,且對於不同方向性的邊界是用分開的面罩 ( Mask ) 來做偵測,當梯度變化超過一個閥值,即判斷為邊界。

梯度向量 ( Gradient Vector )

索伯算子對應到的面罩分為上圖的左右兩個,左邊負責偵測水平向的邊界,右邊負責偵測垂直向的邊界。所以 A 表示輸入影像,G 表示梯度,則公式如下:

將兩個分量結合為梯度:

為了更快速的運算可改為:

而角度則為:

實作應用

輸入圖片:

索伯算子在 OpenCV 也有 API 可以直接使用,並且可透過參數設定 mask 尺寸,並控制水平、垂直向邊界偵測,以下是我用不同尺寸實作的結果比較:

Source code:

--

--

Ken Huang
電腦視覺

在網路上自學的過程中,體會到開放式資源的美好,希望藉由撰寫文章記錄研究所的學習過程,同時作為回饋網路世界的一種方式。Email : kenhuang2019iii@gmail.com ,如果有任何問題都歡迎與我聯繫。