CV學習-邊緣探測
邊緣檢測演算法-Canny
邊緣的產生
- surface normal discontinuity
- depth discontinuity
- surface color discontinuity
- illumination discontinuity
邊緣檢測的基本原理
邊緣一般在灰度影象中表現為灰度值變化最大的畫素區域,所以最直觀的方法就是求微分。
梯度大小:
梯度方向:
對於連續函式求微分的方法為:
對於離散的圖片畫素點,我們採用近似的方法求得:
Canny演算法
1.Filter image with derivative of Gaussian
對影象用高斯濾波器進行平滑處理。
高斯濾波用於對影象進行減噪,採用鄰域加權平均的方法計算每一個畫素點的值。
2.Find magnitude and orientation of gradient
利用一階差分計算邊緣的方向與幅值。
注意卷積模板如下方所示:
3.Non-maximum suppression
非極大值抑制
• Thin multi-pixel wide “ridges” down to single pixel width
我們只保留類似於圖中q這種積分值比周圍所有點都大的畫素點。
作用函式
4.Linking of edge points
• Hysteresis thresholding: use a higher threshold to start edge curves and a lower threshold to continue them
- If the gradient at a pixel is above ‘High’, declare it an ‘edge
pixel’ - If the gradient at a pixel is below ‘Low’, declare it a
‘non-edge-pixel’ If the gradient at a pixel is between ‘Low’ and ‘High’ then declare
it an ‘edge pixel’ if and only if it is connected to an ‘edge pixel’
directly or via pixels between ‘Low’ and ‘ High’
程式碼下載canny