opencv图像处理之图像梯度

本文介绍了OpenCV中的图像梯度处理,包括Sobel和Laplacian算子的原理及应用。Sobel算子用于求一阶或二阶导数,抗噪声能力强,Laplacian算子则通过二阶导数检测图像边缘。在实际操作中,需要注意图像深度的选择以避免负值被截断,影响边界检测效果。
摘要由CSDN通过智能技术生成

1.原理

梯度简单来说就是求导。OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:SobelScharrLaplacian
Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对Sobel的优化(使用小的卷积核求解求解梯度角度时)。Laplacian 是求二阶导数。

2.Sobel算子

  • cv.Sobel()
sobelx=cv2.Sobel(gray,cv2.CV_64F,1,0,ksize=5)

参数按顺序为:原图、输出图像的深度、x方向求导的阶数、y方向求导的阶数、卷积核大小。
Sobel 算子是高斯平滑与微分操作的结合体,所以它的抗噪声能力很好。如果ksize=-1,会使用3x3 的Scharr 滤波器,它的的效果要比3x3 的Sobel 滤波器好(而且速度相同,所以在使用3x3 滤波器时应该尽量使用Scharr 滤波器)。3x3 的Scharr 滤波器卷积核如下:
在这里插入图片描述

3.Laplacian算子

  • cv.Laplacian()
laplacian=cv2.Laplacian(gray,cv2.CV_64F)

拉普拉斯算子可以使用二阶导数的形式定义,可假设其离散实现类似于二阶Sobel 导数,事实上,OpenCV 在计算拉普拉斯算子时直接调用Sobel 算子。

4.代码和效果

def gradient(self):
    gray=cv2.imread(self.infile,0)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值