1. 程式人生 > >CV學習-邊緣探測

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