邊緣檢測算法——Canny和LoG邊緣檢測算法


首先回顧一下邊緣檢測的一般步驟:

邊緣檢測算法一般包含如下四個步驟:

  1.濾波(去噪)

  2.增強(一般是通過計算梯度幅值)

  3.檢測(在圖像中有許多點的梯度幅值會比較大,而這些點並不都是邊緣,所以應該用某種方法來確定邊緣點,比如最簡單的邊緣檢測判據:梯度幅值閾值)

  4.定位(有的應用場合要求確定邊緣位置,可以在子像素水平上來估計,指出邊緣的位置和方向)

 

邊緣檢測方法比較常用的有基於各種算子的方法,有基於一階導數的各種算子(Roberts、Sobel、Prewitt等),還有基於二階導數的拉普拉斯算子等。

其中一階導數一般找梯度極大值。

二階導數找過零點(需要忽略無意義的過零點(即均勻零區))。

本文主要概述一下邊緣檢測中比較有代表性的的Canny和LoG算法。

其中Canny基於一階導數,而LoG算法基於二階導數。

 

Canny邊緣檢測器

Canny邊緣檢測的算法步驟:

  1.用高斯濾波器平滑圖像(不同尺度的Canny檢測子由高斯的不同標准差來表示)

  2.用一階偏導有限差分計算梯度幅值和方向(梯度方向為邊緣法向)

  3.對梯度幅值進行非極大值抑制(Non-Maxima Suppression, NMS)

  4.用雙閾值算法檢測和連接邊緣

  其中非極大值抑制細化了幅值圖像中的屋脊帶,只保留幅值局部變化最大的點。

  雙閾值算法:用兩個閾值得到兩個閾值圖像,然后把高閾值的圖像中的邊緣連接成輪廓,連接時到達輪廓的端點時,在低閾值圖像上找可以連接的邊緣。不斷收集,直到所有的間隙連接起來為止。

 

LoG邊緣檢測算法

LoG邊緣檢測算法步驟:

  1.平滑:高斯濾波器

  2.增強:Laplacian算子計算二階導

  3.檢測:二階導零交叉點並對應於一階導數的較大峰值

  4.定位:線性內插

根據卷積的求導法則,先卷積后求導和先求導后卷積是相等的,所以可以把第1、2步合並為一步,先對高斯濾波器做拉普拉斯變換,得到墨西哥草帽算子,然后再用這個算子與圖像做卷積。

這個算子還有一個有效的近似:使用兩個具有明顯不同的標准差的高斯平滑掩模的差(DoG, difference of Gaussians)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM