
canny濾波 原理步驟細致剖析
制作人
霏兒,百度飛槳PPDE開發者技術專家,計算機視覺、虛擬現實、元宇宙,歡迎技術交流
目的
最優邊緣檢測
含義
最優檢測
- 演算法能夠盡可能多地標識出影像中的實際邊緣
最優定位準則
- 標識出的邊緣要盡可能與實際影像中的實際邊緣盡可能接近
檢測點與邊緣點一一對應
- 影像中的邊緣只能標識一次
步驟
轉為灰度圖
- 減少計算開銷
濾波
-
高斯濾波
-
卷積核滿足正態分布
-
核越大,影像越模糊
-
高斯核大小將影響canny濾波器的性能
- 尺寸越大,濾波器對噪聲的敏感度會越低
- 尺寸越大也會讓邊緣檢測的定位誤差也將略有增加
-
對同像素加權相加,使得最相近的像素有更高重要度
-
-
目的
- 降低噪聲
計算梯度大小&方向
-
計算Gx,Gy
- 即水平Gx和垂直Gy方向的一階導數值
-
計算梯度值
-
計算梯度方向
非極大值抑制(NMS)
-
角度法
-
劃分為0,45,90,135度四個角度
-
優點
- 計算簡單
-
劣勢
- 無插值,8鄰域中計算的部分不是計算出來的梯度方向
-
-
插值法
-
優點
- 更精確
-
劣勢
- 計算開銷大
-
-
目的
- 梯度計算得到的邊緣很粗,一條邊緣中央一般很亮,兩邊亮度逐漸降低,可以根據這個特點去掉非區域灰度最高的“假邊”
- 尋找像素點區域最大值,將非極大值點所對應的灰度值置為0,這樣可以剔除掉一大部分非邊緣的點
-
演算法思路
- 將當前像素的梯度強度與沿正負梯度方向上的兩個像素進行比較,
- 如果當前像素的梯度強度與另外兩個像素相比最大,則該像素點保留為邊緣點,否則該像素點將被抑制
-
原理
- 確定像素點C的灰度值在其8值鄰域內是否為最大
- 圖1中藍色的線條方向為C點的梯度方向,這樣就可以確定其區域的最大值肯定分布在這條線上,也即出了C點外,梯度方向的交點dTmp1和dTmp2這兩個點的值也可能會是區域最大值,
- 因此,判斷C點灰度與這兩個點灰度大小即可判斷C點是否為其鄰域內的區域最大灰度點
- 如果經過判斷,C點灰度值小于這兩個點中的任一個,那就說明C點不是區域極大值,那么則可以排除C點為邊緣
雙閾值
-
方法
- 設定兩個閥值(threshold),分別為maxVal和minVal
- 當某個像素點值高于threshold_low 時,則可以認為它是邊緣,把它的灰度置為1
- 當某個像素點值高于threshold_low 時,則認為它不是邊緣,把它的灰度置為0
- 處于threshold_low 和threshold_high 之間的像素點,如果它的八鄰域有真邊上的點,則認為它也是邊緣,并把灰度置為1
-
目的
- 非極大值抑制之后,檢測到的邊緣線條比較多,我們可以濾掉一些很暗的邊緣,并讓主要的邊緣凸顯出來
- 過濾掉由于噪聲和顏色變化引起的一些邊緣像素
- 用弱梯度值過濾邊緣像素,并保留具有高梯度值的邊緣像素
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/344404.html
標籤:其他
上一篇:Ubantu編譯OpenCV
