OpenCV邊緣檢測

2021-10-17 11:18:20 字數 2081 閱讀 2394

梯度運算元:是一階導數運算元,是水平g(x),g(y)方向對應模板的組合,也有對角線方向。

常見的一階運算元:

roberts交叉運算元,rrewitt運算元,sobel運算元

-100-1

roberts交叉運算元是對角線方向的梯度運算元,對應的水平方向和豎直方向的梯度分別為:

robert運算元優缺點:

優點:邊緣定位比較準,適用於邊緣明顯且雜訊較少的影象。

缺點:沒有描述水平和 豎直方向的灰度變化,只是關注了對角線方向,魯棒性差,由於點本身參與了梯度計算,不能有效抑制雜訊的干擾。

sobel運算元:

1-202

-10-1

1000

-1-2

-1sobel運算元引入了類似區域性加權平均的運算,對邊緣的定位比prewitt 運算元好。

sobel運算元函式:

dst=cv2.sobel(src,ddepth,dx,dy,ksize)

引數說明:引數2:影象的深度,-1表示採用的與原影象相同寫深度。目標影象的深度必須大於等於原影象的深度;

引數3,4.dx,dy表示的是求導的階數,0表示這個方向上沒有求導,一般為0,1,2

引數5:ksize是sobel運算元的大小,必須為1,3,5,7.

#sobel運算元練習

梯度圖結果: 

canny邊緣檢測演算法

先平滑後求導。

評價邊緣檢測效能優劣的指標:

1好的訊雜比,2高的定位效能,3虛假相應邊緣應該得到最大抑制。

cv2.canny(image,th1,th2,size)

image:源影象

dth1:閾值1

th2:閾值2

size:可選引數,sobel運算元的大小

步驟:1彩色影象轉換為灰度影象(以灰度圖單通道圖讀入)

2對影象進行高斯模糊(去噪)

3計算影象梯度,根據梯度計算影象邊緣幅值與角度

4沿梯度方向進行非極大值抑制(邊緣細化)

5雙閾值邊緣連線處理

6二值化影象輸出結果 

實驗測試用的原圖:

Opencv 邊緣檢測

2018 7 5 凌晨 萬萬要認真,今晚抄書都能抄錯,是在該打。書上的一行 graysrc cv2.cvtcolor blurredsrc,cv2.color bgr2gray 硬生生被我抄成了 graysrc cv2.cvtcolor blurredsrc,cv2.color bayer bgr2...

opencv 邊緣檢測

include stdafx.h include using namespace cv using namespace std int edgethresh 1 宣告 原始,灰度,和 canny邊緣 mat image,cedge mat gray,edge void ontrackbar int,...

opencv之邊緣檢測

canny檢測 發展 canny 的目標是找到乙個最優的邊緣檢測演算法,最優邊緣檢測的含義是 好的檢測 演算法能夠盡可能多地標識出影象中的實際邊緣。好的定位 標識出的邊緣要盡可能與實際影象中的實際邊緣盡可能接近。最小響應 影象中的邊緣只能標識一次,並且可能存在的影象雜訊不應標識為邊緣。為了滿足這些要...