canny邊緣檢測

2021-08-25 22:07:38 字數 1282 閱讀 3716

canny邊緣檢測器是一種被廣泛使用的演算法,並被認為是邊緣檢測最優的演算法,該方法使用了比高斯差分演算法更複雜的技巧,如多向灰度梯度和滯後閾值化。

canny邊緣檢測器演算法基本步驟:

平滑影象:通過使用合適的模糊半徑執行高斯模糊來減少影象內的雜訊。

非最大值抑制:利用上一步計算出來的梯度方向,檢測某一畫素在梯度的正方向和負方向上是否是區域性最大值,如果是,則抑制該畫素(畫素不屬於邊緣)。這是一種邊緣細化技術,用最急劇的變換選出邊緣點。

用滯後閾值化選擇邊緣:最後一步,檢查某一條邊緣是否明顯到足以作為最終輸出,最後去除所有不明顯的邊緣。

opencv-python中canny函式的原型為:

edge = cv2.canny(image, threshold1, threshold2[, edges[, aperturesize[, l2gradient ]]])
必要引數:

其中較大的閾值2用於檢測影象中明顯的邊緣,但一般情況下檢測的效果不會那麼完美,邊緣檢測出來是斷斷續續的。所以這時候用較小的第乙個閾值用於將這些間斷的邊緣連線起來。

可選引數中aperturesize就是sobel運算元的大小。而l2gradient引數是乙個布林值,如果為真,則使用更精確的l2範數進行計算(即兩個方向的倒數的平方和再開放),否則使用l1範數(直接將兩個方向導數的絕對值相加)。

具體的演算法可參見清華大學出版社的《影象處理與計算機視覺演算法及應用(第2版) 》第二章,其中有canny演算法的詳細描述及實現。

函式返回一副二值圖,其中包含檢測出的邊緣。

canny函式的使用很簡單,只需指定最大和最小閾值即可。如下:

首先,由於canny只能處理灰度圖,所以將讀取的影象轉成灰度圖。

用高斯平滑處理原影象降噪。

呼叫canny函式,指定最大和最小閾值,其中aperturesize預設為3。

處理結果如下:

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.閾值篩選 我們就事後諸葛亮,分析下這個步驟的緣由。首先,影象降噪。我們知道梯度運算元可以用於增強影象,本質上是通...