『找知識 HBY academic
找邊緣 Canny』
- 簡介:
Canny是一種邊緣檢測的技術,在雜訊處理與邊緣定位都有不錯的表現。其中,非極大值抑制與雙閾值的設計,是該方法最大的特點,將會在以下的技術內容探討。
- 技術內容:
1. 將輸入影像灰階化。常見的轉換方法有兩種。然而,我們發現人的眼睛對不同顏色有不同程度的敏感,其中又以人眼綠色的亮度感最大、藍色最小。因此,在影像處理上,大多偏好第二個轉換公式。
- Gray = (Red + Green + Blue) / 3
- Gray = 0.299 * Red + 0.587 * Green + 0.114 * Blue
2. 將影像去雜訊。使用高斯濾波對影像做處理,以有效減少雜訊。
3. 計算各個像素的梯度方向與梯度強度。利用Sobel運算子求出水平與垂直梯度(Gx, Gy),再將這兩個梯度平方後相加,最後開根號得梯度強度;梯度方向則是用反三角函數arctan,Gx/Gy求角度。求得的角度我們將它們分類到0,45,90,135度之一。當角度落在0~22.5或157.5~180度,就歸類在0度;當角度落在22.5~67.5,就歸類在45度;當角度落在67.5~112.5度,就歸類在90度;當角度落在112.5~157.5度,就歸類在135度。
4. 非極大值抑制。通常邊緣出現在梯度強度高的地方。根據3.求出的梯度方向與梯度強度,依序比對影像中的所有像素梯度,與該正負梯度上的像素,如該像素的梯度強度最大,則保留該值,否則將梯度強度設為0。當該像素梯度方向為0度,則需要再比較其左、右的像素梯度強度;梯度方向為45度,則要再比較其右上、左下;梯度方向為90度,則要再比較其上、下的像素;梯度方向為135度,則要比較其左上、右下的像素梯度強度。
5. 雙閾值。所謂的雙閾值就是上、下兩個閾值(TH,TL)。根據閾值判斷此像素是否為邊緣。判斷的依據有三個,如下列所述。
- 如該像素的梯度強度<TL,則該像素不為邊緣。
- 如該像素的梯度強度>TH,則該像素為邊緣。
- 如該像素的梯度強度介於上下閾值,且其周圍8個相鄰的像素中,存在一個像素的梯度強度>TH,則該像素為邊緣。
- 應用層面:
對於影像的邊緣檢測處理上,是相當不錯的方法。
- 思考:
1. 非極大值抑制的用意為何? 我們說,通常邊緣會出現在梯度強度高的"地方",然而,"地方"可大可小,做為邊緣檢測使用,應該是要越小越好,否則無法取得邊緣準確的位置。所以在同個梯度方向上,我們只取地方的極大值。
2. 雙閾值的設計用意? 假設只用單閾值做為判斷,就會發現很多假邊緣被描繪出來,原因是步驟2.去雜訊的處理無法100%將雜訊移除,所以只要該雜訊(某像素)的梯度強度高於閾值就會被認定為是邊緣。接著,你可能又會問雙閾值的判斷依據,前兩條的判斷應該就足夠了吧,為甚麼需要第三個判斷標準? 我們先思考一個問題,如果有兩個邊緣(像素)之間存在一個像素,其像素的梯度強度<TH,那麼這兩個邊緣就無法連接。我們再思考,如果有很多處都發生這種情形,不就代表有很多的邊緣無法連接,最後的結果你會發現這張影像上有很多斷斷續續的邊緣線。因此,雙閾值的第三條判斷依據,是為了讓邊緣與邊緣之間可以做連接。
- 相關的細節,請參考下方的影片哦~
留言列表