DL、ML筆記(九):Canny Edge

JianJie
Apr 15, 2021

Canny邊緣檢測運算元是John F. Canny于 1986 年開發出來的一個多級邊緣檢測演算法,是邊緣檢測的一種標準演算法,而且仍在研究中廣泛使用。

其步驟如下:

1. 圖像平滑化

使用Gaussian Filter對圖片做輕微模糊,去除雜訊。Gaussian Filter適用於消除高斯雜訊。

2. 計算圖片梯度方向及強度

使用Sobel找出垂直(Gy)、水平(Gx)方向梯度,從而計算出梯度方向

及強度,計算公式為:

3. Non-Maximum Suppression

為了簡化運算,將梯度方向簡化為8個方向:

相互比較相同梯度方向,非最大值時,簡化為0,只保留最大值,舉例:右斜對角為目前pixel之梯度方向,因此只考慮當前pixel、右上及左下pixel,相互比較,只留最大值。

4. Double Threshold

使用兩個Threshold(Tmax,Tmin)用以尋找可能邊界,當pixel梯度強度大於Tmax時,判斷該pixel為邊緣(強邊緣Hard Edge)。當梯度強度介於兩者Tmin<pixel<Tmax,該pixel可能為邊緣,為邊緣候選(弱邊緣Weak Edge)。梯度強度小於Tmin時,則不為邊緣。

5. Connect Weak Edge

將有跟硬邊緣(Hard Edge)連接的軟邊緣(Weak Edge)判斷為邊緣(Edge),未連接則非邊緣。

如上圖,Edge1有部分pixel位於軟邊緣,部分位於硬邊緣,軟邊緣與硬邊緣有連接,因此整體會判斷為Edge。而Edge2所有線段皆位於軟邊緣範圍內,無與硬邊界連接,因此非Edge。

以上步驟即完成Canny Edge。這個方法算法簡易,但在實作上相對較不靈活,較難調整結果或是難以與其他方法相結合。

--

--

JianJie

Image Processing / Computer Vision / Deep Learning