OpenCV边缘检测(Sobel,Scharr,Laplace,Canny)

对于图像的处理,基本的步骤是这样的:
取得图像数据 —— 将图像进行平滑处理 —— 进行边缘检测,阈值分析 —— 进行形态学的操作 —— 获取某些特征点 —— 分析数据

那么在这里,我就讲解下边缘检测的这部分,然后后续再进行其他的讲解。

在OpenCV中,边缘检测的方法有以下几种:
Sobel
Scharr
Laplace
Canny
其中前三种的边缘检测是带方向的

那么我们就先从Sobel算子开始讲起吧!
先来看看Sobel方法的定义
def Sobel
(src,ddepth,dx,dy,dst=None,ksize=None,scale=None,delta=None,borderType=None)

ddepth:图像的颜色深度,针对不同的输入图像,输出目标图像有不同的深度,具体组合如下:
- 若src.depth() = CV_8U, 取ddepth =-1/CV_16S/CV_32F/CV_64F
- 若src.depth() = CV_16U/CV_16S, 取ddepth =-1/CV_32F/CV_64F
- 若src.depth() = CV_32F, 取ddepth =-1/CV_32F/CV_64F
- 若src.depth() = CV_64F, 取ddepth = -1/CV_64F
dx:int类型的,表示x方向的差分阶数,1或0
dy:int类型的,表示y方向的差分阶数,1或0
kSize:模板大小,前面虽然提到过,不过对于Sobel算子这里要补充下,这里的取值为1,3,5,7,当不输入的时候,默认为3。特殊的,当kSize = 1的时候,采用的模板为1*3或者3*1 而非平时的那些格式。

接下来看Scharr的定义
def Scharr(src, ddepth, dx, dy, dst=None, scale=None, delta=None, borderType=None)
会看到参数和Sobel算子一致,不过,该函数与Sobel的区别在于,Scharr仅作用于大小为3的内核。具有和sobel算子一样的速度,但结果更为精确

接下来我们看下这俩的比较:
Sobel_Scharr比较

第一列显示的Sobel算子的在默认3*3模板下的图像,第二列显示的是Scahrr算子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值