Canny邊緣檢測

2021-06-08 16:10:03 字數 1250 閱讀 3627

1.canny邊緣檢測基本原理

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

(2)根據對訊雜比與定位乘積進行測度,得到最優化逼近運算元。這就是canny邊緣檢測運算元。

(3)類似與marr(log)邊緣檢測方法,也屬於先平滑後求導數的方法。

2.canny邊緣檢測演算法:

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

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

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

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

step1:高斯平滑函式

step3:非極大值抑制

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

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

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運算元的邊緣檢測。

Canny邊緣檢測

canny運算元是邊緣檢測運算元中最常用的一種,是公認效能優良的一種運算元,常被其它邊緣檢測運算元作為標準運算元進行優劣分析。canny演算法基本可以分為3個步驟 平滑 梯度計算 基於梯度值及梯度方向的候選點過濾 1 平滑 影象梯度的計算對雜訊很敏感,因此必須首先對其進行低通濾波。在這裡使用5 5的...

Canny邊緣檢測

canny邊緣檢測是一種非常流行的邊緣檢測演算法,是john canny在1986年提出的。它是乙個多階段的演算法,即由多個步驟構成。1.影象降噪 2.計算影象梯度 3.非極大值抑制 4.閾值篩選 我們就事後諸葛亮,分析下這個步驟的緣由。首先,影象降噪。我們知道梯度運算元可以用於增強影象,本質上是通...

Canny邊緣檢測

canny邊緣檢測演算法 五個步驟 1.高斯模糊 gaussianblur 2.灰度轉換 cvtcolor 3.計算梯度 sobel scharr 4.非最大訊號抑制 5.高低閾值連線輸出二值影象 import cv2 def edge demo image blurred cv2.gaussian...