1.Sobel算子、
这里的意思就是1,0。主要是让其由右向左相减,计算来求梯度
这里的0,1,主要是由下往上相减,计算来求梯度。
再由x,y分别0.5,0.5来求和。
不建议直接进行计算
这样的效果很差的。
2.梯度计算方法、
上面的dx=1,dy=0。因此为由右向左相减为正,
采用converScaleAbs(sobelx) 就是将负数转为正数
dx=0,dy=1就是由上往下
cv2. addWeighted(sobelx,0.5,sobely,0.5,0)
将两者进行相加addWeighted,代表权重相加
不建议直接计算
sobelxy=cv2.Sobel(img, cv2.CV_64F,1,1,ksize=3)
sobelxy = cv2.convertScaleAbs(sobelxy)
cv_show(sobelxy,"sobelxy")
img = cv2.imread("lena.jpg",cv2.IMREAD_GRAYSCALE)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
sobelx = cv2.convertScaleAbs(sobelx) ##保证白减黑,黑减白都为正值
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
sobely = cv2.convertScaleAbs(sobely)
sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0)
cv_show(sobelxy,"sobelxy")
#############################################
img = cv2.imread("lena.jpg",cv2.IMREAD_GRAYSCALE)
sobelxy = cv2.Sobel(img,cv2.CV_64F,1,1,ksize=3)
sobely = cv2.convertScaleAbs(sobely)
cv_show(sobelxy,"sobelxy")
原图
前面的结果
后面的结果
3.scharr与lapkacian算子
分别是sobel算子,scharr算子,拉普拉斯算子
原图