sobel算子
参数ksize:sobel核的大小,为-1时会使用scharr算子运算
直接将参数ddepth的值设置为-1,在计算时得到的结果可能是错误的。 在实际操作中,计算梯度值可能会出现负数。如果处理的图像是8位图类型,则在ddepth的参数值为-1时,意味着指定运算结果也是8位图类型,那么所有负数会自动截断为0,发生信息丢失。为了避免信息丢失,在计算时要先使用更高的数据类型 cv2.CV_64F,再通过取绝对值将其映射为cv2.CV_8U(8位图)类型。所以,通常要将函数cv2.Sobel()内参数ddepth的值设置为“cv2.CV_64F”。
可用函数cv2.convertScaleAbs()对参数取绝对值,该函数的语法格式为: dst=cv2.convertScaleAbs(src[,alpha[,beta]]) 上式中:
● dst代表处理结果。
● src代表原始图像。
● alpha代表调节系数,该值是可选值,默认为1。
● beta代表调节亮度值,该值是默认值,默认为0。 这里,该函数的作用是将原始图像src转换为256色位图,其可以表示为: dst=saturate(src*alpha+beta)
在函数cv2.Sobel()中,参数dx表示x轴方向的求导阶数,参数dy表示y轴方向的求导阶数。参数dx和dy通常的值为0或者1,最大值为2。如果是0,代表在该方向没有求导,dx与dy不能同时为0