1、图像梯度—Sobel算子
左边减去右边得到梯度差异
Gx为水平方向上的梯度,右减去左
Gy为垂直方向上的差梯度,下减去上
dst=cv.Sobel(src,ddepth,dx,dy,ksize)
ddepth:图像的深度,通常设置为-1,表示的深度与输出深度一样
dx,dy分别表示水平方向和竖直方向,去0或者1,取1表示该方向
ksize为Sobel算子的大小,一般为3*3
X轴方向上的梯度:
代码:
当ddepth=-1时
sobelX=cv.Sobel(src,-1,1,0,ksize=3)
结果:
黑到白是正数,白到黑是负数,所有的负数会被阶段成0,所以要取绝对值
sobelX=cv.Sobel(src,cv.CV_64F,1,0,ksize=3)
sobleX=cv.convertScaleAbs(sobelX)#取绝对值操作
sobelY=cv.Sobel(src,cv.CV_64F,0,1,ksize=3)
sobleY=cv.convertScaleAbs(sobelY)#取绝对值操作
分别计算X、Y,再求和,不建议直接计算,会有丢失、重影等现象
sobelXY=cv.addWeighted(sobelX,0.5,sobelY,0.5,0)#权重根据实际需要来设定
2、图像梯度—Scharr算子
相较于sobel算子,它的矩阵值更大,即结果差异更加明显,描绘的东西更加细致
X轴方向:
scharrX=cv.Scharr(src,cv.CV_64F,1,0)
scharrX=cv.convertScaleAbs(scharrX)
scharrY=cv.Scharr(src,cv.CV_64F,0,1)
scharrY=cv.convertScaleAbs(scharrY)
scharrXY=cv.addWeighted(scharrX,0.5,scharrY,0.5,0)
3、图形梯度—laplacian算子
部分X、Y轴方希那个
对噪音点敏感,应该配合其他函数配合使用
最近的为-1,自身为-4,其他为0
laplacianY=cv.Laplacian(src,cv.CV_64F)
laplacianY=cv.convertScaleAbs(laplacianY)