Canny邊緣檢測

Canny邊緣檢測是一種使用多種邊緣檢測算法檢測邊緣的方法。由John F.Canny于1986年提出,并在論文中有詳盡的描述。

1.Canny邊緣檢測四步驟

1)去噪。噪聲會影響邊緣檢測的準(zhǔn)確度。通常采用高斯濾波去除圖像中的噪聲。濾波器的核越大,邊緣信息對噪聲的敏感度就越低。不過,核越大,邊緣檢測的定位錯誤也會隨之增加。通常一個5 X 5的核能滿足大多數(shù)情況。

2)計算梯度的幅度與方向。梯度的方向與邊緣的方向是垂直的,通常就取近似值為·水平、垂直、對角線等八個不同的方向。

3)非極大值抑制,即適當(dāng)?shù)刈屵吘壸兪荨T讷@得了梯度的幅度和方向后,遍歷圖像中的像素點,去除所有非邊緣的點。具體實現(xiàn)上,判斷當(dāng)前像素點是否是周圍像素點中具有相同梯度方向的最大值,如果是,則保留該點;如果不是則抑制(歸零)。

4)確定邊緣。用雙閾值算法確定最終的邊緣信息。完成之前三步驟后,圖像的強邊緣已經(jīng)在當(dāng)前獲取的邊緣圖像內(nèi)。但一些虛邊緣可能也在邊緣圖像內(nèi),這些虛邊緣可能是真實的圖像產(chǎn)生的,也可能是由于噪聲產(chǎn)生的(必須將其剔除)。

? ? ????設(shè)置兩個閾值,其中一個為高閾值maxVal,另一個為低閾值minVal。根據(jù)當(dāng)前邊緣像素的梯度值與這兩個閾值之間的關(guān)系,判斷邊緣的屬性。如果當(dāng)前邊緣像素的梯度值不小于maxVal,則將當(dāng)前邊緣像素標(biāo)記為強邊緣;如果介于maxVal與minVal之間,則標(biāo)記為弱邊緣(先保留);如果小于minVal,則抑制當(dāng)前邊緣像素。之后再判斷虛邊緣是否與強邊緣有連接,有連接,則處理為邊緣;無連接則抑制。

2. Canny函數(shù)

OpenCV提供了cv2.Canny()來實現(xiàn)邊緣檢測:

dst = cv2.Canny(image, threshold1,threshold2[,edges[,apertureSize[,L2gradient]]])

dst : 為計算得到的邊緣圖像

image: 為8位輸入圖像

threshold1: 表示處理過程中的的第一個閾值

threshold2: 表示處理過程中的的第二個閾值

apertureSize: 表示Sobel算子的孔徑大小。

L2gradient: 為計算圖像梯度幅度的標(biāo)識。其默認(rèn)值是False。如果為True,則使用更精確的L2范數(shù)進行計算,否則使用L1范數(shù)。

例如:

Canny邊緣檢測
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容