天天看點

OpenCV筆記整理【Canny邊緣檢測】

Canny邊緣檢測是一種使用【多階段】邊緣檢測算法檢測邊緣的方法。

主要分為以下步驟:

1. 去噪:

過濾噪聲,使用濾波平滑一些紋理較弱的非邊緣區域。

2. 計算梯度:

計算梯度的幅度與角度(PS: 2↑ 表示幅度為2,角度90°),值得注意的是,邊緣和梯度始終是垂直的。

OpenCV筆記整理【Canny邊緣檢測】

3. 非極大值抑制:

依次周遊像素點,判斷目前像素點是否為周圍梯度方向内的最大值。如果是最大值則保留,否則抑制(歸零)。

OpenCV筆記整理【Canny邊緣檢測】

4. 使用雙門檻值确定邊緣:

剔除虛邊緣,确定真正的邊緣。

OpenCV筆記整理【Canny邊緣檢測】

經過前面的步驟,我們已經得到了一些邊緣,但是這些邊緣中除了真正的邊緣外,還有一些噪聲邊緣,是以我們需要進一步剔除。主要分3種情況:

大于等于 maxVal 的強邊緣 : 保留

大于 minVal 并且小于 maxVal 的虛邊緣 :如果與強邊緣連通則保留,否則抑制。

小于 minVal 的邊緣:抑制

上代碼:

Canny(img,minVal,maxVal)

import cv2

o=cv2.imread("lena.bmp",cv2.IMREAD_GRAYSCALE)
r1=cv2.Canny(o,128,200)
r2=cv2.Canny(o,32,128)
cv2.imshow("original",o)
cv2.imshow("result1",r1)
cv2.imshow("result2",r2)

cv2.waitKey()
cv2.destroyAllWindows()
           

結果:

OpenCV筆記整理【Canny邊緣檢測】

拜了個拜。。。。