現在的位置: 首頁 > 技術文章 > 正文

Canny邊緣檢測算法詳解(轉)

2018年05月25日 技術文章 ⁄ 共 873字 ⁄ 字號 Canny邊緣檢測算法詳解(轉)已關閉評論

1.Canny邊緣檢測基本原理

(1)圖象邊緣檢測必須滿足兩個條件:一能有效地抑制噪聲;二必須盡量精確確定邊緣的位置。

(2)根據對信噪比與定位乘積進行測度,得到最優化逼近算子。這就是Canny邊緣檢測算子。

(3)類似與Marr(LoG)邊緣檢測方法,也屬于先平滑后求導數的方法。

2.Canny邊緣檢測算法:

step1:用高斯濾波器平滑圖象;

step2:用一階偏導的有限差分來計算梯度的幅值和方向;

step3:對梯度幅值進行非極大值抑制;

step4:用雙閾值算法檢測和連接邊緣。

算法詳解

step1:高斯平滑函數

g1

step2:用一階偏導的有限差分來計算梯度的幅值和方向

g2

step3:非極大值抑制

僅僅得到全局的梯度并不足以確定邊緣,因此為確定邊緣,必須保留局部梯度最大的點,而抑制非極大值。(non-maxima suppression,NMS)

解決方法:利用梯度的方向。

non

step4:用雙閾值算法檢測和連接邊緣:

對非極大值抑制圖像作用兩個閾值th1和th2,兩者關系th1=0.4th2。我們把梯度值小于th1的像素的灰度值設為0,得到圖像1。然后把梯度值小于th2的像素的灰度值設為0,得到圖像2。由于圖像2的閾值較高,去除大部分噪音,但同時也損失了有用的邊緣信息。而圖像1的閾值較低,保留了較多的信息,我們可以以圖像2為基礎,以圖像1為補充來連結圖像的邊緣。

鏈接邊緣的具體步驟如下:

對圖像2進行掃描,當遇到一個非零灰度的像素p(x,y)時,跟蹤以p(x,y)為開始點的輪廓線,直到輪廓線的終點q(x,y)。

考察圖像1中與圖像2中q(x,y)點位置對應的點s(x,y)的8鄰近區域。如果在s(x,y)點的8鄰近區域中有非零像素s(x,y)存在,則將其包括到圖像2中,作為r(x,y)點。從r(x,y)開始,重復第一步,直到我們在圖像1和圖像2中都無法繼續為止。

當完成對包含p(x,y)的輪廓線的連結之后,將這條輪廓線標記為已經訪問。回到第一步,尋找下一條輪廓線。重復第一步、第二步、第三步,直到圖像2中找不到新輪廓線為止。

至此,完成canny算子的邊緣檢測。

二八杠讨论心得
×