天天看點

04 圖像梯度處理 Scharr算子和Laplacian算子

04 圖像梯度處理 Scharr算子和Laplacian算子

可見Scharr算子和Sobel原理類似,隻是他将差異進一步放大,對差異更加敏感

Laplacian算子對變化更敏感,同時對噪音也會敏感,是以單獨使用效果并不好,一般和其他處理配合

下面看幾種算子的效果對比

img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)   
sobely = cv2.convertScaleAbs(sobely)  
sobelxy =  cv2.addWeighted(sobelx,0.5,sobely,0.5,0)  

scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
scharry = cv2.Scharr(img,cv2.CV_64F,0,1)
scharrx = cv2.convertScaleAbs(scharrx)   
scharry = cv2.convertScaleAbs(scharry)  
scharrxy =  cv2.addWeighted(scharrx,0.5,scharry,0.5,0) 

laplacian = cv2.Laplacian(img,cv2.CV_64F)
laplacian = cv2.convertScaleAbs(laplacian)   

res = np.hstack((sobelxy,scharrxy,laplacian))
cv_show(res,'res')
           

原圖如下:

04 圖像梯度處理 Scharr算子和Laplacian算子

效果對比如下:

04 圖像梯度處理 Scharr算子和Laplacian算子

可以看出Scharr算子的得出的輪廓更多,這是因為他對線條梯度更加敏感

教程來自:https://www.bilibili.com/video/BV1oJ411D71z?p=2