Canny檢測的流程 Canny檢測主要是用於邊緣檢測 1)使用高斯濾波器,以平滑圖像,濾除雜訊。 2)計算圖像中每個像素點的梯度強度和方向。 3)應用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測帶來的雜散響應 4)應用雙閾值(Double-Threshold)檢測 ...
Canny檢測的流程
Canny檢測主要是用於邊緣檢測
1)使用高斯濾波器,以平滑圖像,濾除雜訊。
2)計算圖像中每個像素點的梯度強度和方向。
3)應用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測帶來的雜散響應
4)應用雙閾值(Double-Threshold)檢測來確定真實的和潛在的邊緣
5)通過抑制孤立的弱邊緣最終完成邊緣檢測。
註:
NMS(非極大值抑制):
就是抑制不是極大值的元素,可以理解為局部最大搜索。這個局部代表的是一個鄰域,鄰域有兩個參數可變,一是鄰域的維數,二是鄰域的大小。
例如:
行人檢測中,滑動視窗經提取特征,經分類器分類識別後,每個視窗都會得到一個分數。但是滑動視窗會導致很多視窗與其他視窗在包含或者大部分交
叉的情況。這時就需要用到NMS來選取那些鄰域里分數最高(是行人的概率最大),並且抑制那些分數低的視窗
演算法:
線性插值法
應用雙閾值:大於maxval的設置為邊界,
處於maxval和minval中間 和邊界點相連保留,其餘捨去,
小於minval 捨去
1 #cv2.Canny(src,minval,maxval) 2 #minval:最低閾值 3 #maxval:最高閾值 4 #閾值越低,圖像越細緻 5 canny1 = cv2.Canny(img,80,150) 6 canny2 = cv2.Canny(img,50,100) 7 res = np.hstack((canny1,canny2)) 8 Cv_Show('res',res)