Opencv进阶---图像梯度处理

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)#取绝对值操作

结果:
在这里插入图片描述
Y轴方向上的梯度:

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)

在这里插入图片描述
Y轴方向:

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)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值