Canny邊緣檢測

2022-03-13 05:22:32 字數 1731 閱讀 7525

使用高斯濾波器,以平滑影象,濾除雜訊。

計算影象中每個畫素點的梯度強度和方向。

應用非極大值(non-maximum suppression)抑制,以消除邊緣檢測帶來的雜散響應。

應用雙閾值(double-threshold)檢測來確定真實的和潛在的邊緣。

通過抑制孤立的弱邊緣最終完成邊緣檢測。

指尋找畫素點區域性最大值,將非極大值點所對應的灰度值置為0,這樣可以剔除掉一大部分非邊緣的點。要進行非極大值抑制,就首先要確定畫素點c的灰度值在其8值鄰域內是否為最大。圖1中藍色的線條方向為c點的梯度方向,這樣就可以確定其區域性的最大值肯定分布在這條線上,也即出了c點外,梯度方向的交點dtmp1和dtmp2這兩個點的值也可能會是區域性最大值。因此,判斷c點灰度與這兩個點灰度大小即可判斷c點是否為其鄰域內的區域性最大灰度點。如果經過判斷,c點灰度值小於這兩個點中的任乙個,那就說明c點不是區域性極大值,那麼則可以排除c點為邊緣。這就是非極大值抑制的工作原理。

在理解的過程中需要注意以下兩點:

1.非極大抑制是回答這樣乙個問題:「當前的梯度值在梯度方向上是乙個區域性最大值嗎?「。所以,要把當前位置的梯度值與梯度方向上兩側的梯度值進行比較。

2.梯度方向垂直於邊緣方向。但實際上,我們只能得到c點鄰域的8個點的值,而dtmp1和dtmp2並不在其中,要得到這兩個值就需要對該兩個點兩端的已知灰度進行線性插值,也即根據圖中的g1和g2對dtmp1進行插值,根據g3和g4對dtmp2進行插值,這要用到其梯度方向,這是canny演算法中要求解梯度方向矩陣thita的原因。完成非極大值抑制後,會得到乙個二值影象,非邊緣的點灰度值均為0,可能為邊緣的區域性灰度極大值點可設定其灰度為128。檢測結果還是包含了很多由雜訊及其他原因造成的假邊緣。因此還需要進一步的處理。

非極大值抑制中有兩種方法。

方法一:線性插值法

方法二:

其中, c = cv.canny(img, 80, 150) 後面兩個數字表示雙閾值檢測中的最大值和最小值,適當的調整,可以改變檢測結果。

Canny邊緣檢測

1.canny邊緣檢測基本原理 1 圖象邊緣檢測必須滿足兩個條件 一能有效地抑制雜訊 二必須盡量精確確定邊緣的位置。2 根據對訊雜比與定位乘積進行測度,得到最優化逼近運算元。這就是canny邊緣檢測運算元。3 類似與marr log 邊緣檢測方法,也屬於先平滑後求導數的方法。2.canny邊緣檢測演...

Canny邊緣檢測

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

Canny邊緣檢測

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