邊緣偵測 - 拉普拉斯算子 ( Laplacian Operator )

藉由影像中灰階的急劇變化來判斷是否為邊緣區域

Ken Huang
電腦視覺
Jan 21, 2021

--

前言

傳統的物件偵測作法,常仰賴人工抽取特徵,此時影像中的「 邊緣 」就是特徵的一種,可作為判別物件屬性、種類的一種依據。

另外也有可能反映出影像中的事件與變化,透過邊緣檢測可大幅減少資料量,篩選出相關資訊並保留影像的結構性,是電腦視覺領域的基礎問題。

這篇文章以最基礎的「 拉普拉斯算子 ( Laplacian Operator ) 」作為主題,介紹該方法的原理與應用,後續文章再延伸至:

介紹這類測邊算子之前,先來看看「 邊緣 ( Boundary ) 」在影像中的特性。

零點交叉 ( Zero-crossing )

假設上圖為影像中的局部區域,該區域是一物件之「 邊緣 ( Boundary ) 」。

在 A 、B 兩個區域內的像素灰階值是非常相近的,而兩個區域之間的灰階值會出現「 急劇變化 ( Abrupt change ) 」,我們可以把該區域之灰階值做一次微分,並繪製成二維示意圖來觀察:

這種區域交界處形成波峰的灰階變化正是「 色暈現象 」,可對波峰處設定閥值判斷其是否為邊緣,但這種閥值定義的方式相對模稜兩可。

更好的方式是做第二次的微分,再次畫成二維示意圖:

由於邊緣在一次微分後的結果有波峰的特性,於二次微分時會出現「 零點交叉 ( Zero-crossing ) 」的情況,利用這個特性就可以用數學來描述出判斷邊界的方法。

二次微分

有了前述的觀念,這邊介紹一下,求得拉普拉斯算子的二次微分過程。

首先從一維的例子開始:

假設 A 區域接近交界處的函數式為 f ( x, y ),那剛過交界處進入到 B 區域的函數式就是 f ( x+1, y ),那沿著變化方向 ( x 軸 ) 做微分得到差分:

接著再沿著相同方向進行第二次的微分可得:

令 x = x+1 做參數變換可得:

若邊界的方向性是沿著 y 軸的話,也可透過相同道理得到:

那合併兩個軸向的二次微分效應就可得到拉普拉斯算子:

不過實做時通常以面罩 ( Mask ) 的方式對影像做捲積,從上方的算式可得知以下面罩:

透過該面罩作用到影像的每一個像素上便可得到二次微分的結果,接著只要檢查每個位置的值是否呈現一個正數和一個負數:

上下兩種情況則一即可

且兩數值相差的絕對值大於閥值:

便可得知該像素是否為邊點。相對的在另一軸向上也成立:

實作應用

拉普拉斯算子在 OpenCV 有 API 可以直接使用,並且可透過參數設定 mask 尺寸,以下是我用不同尺寸實作的結果比較:

Source code:

--

--

Ken Huang
電腦視覺

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