opencv笔记(一):边缘检测的4种算子

本文介绍了边缘检测中的几种经典算法,包括Canny算子、Sobel算子、Scharr滤波器及拉普拉斯算子。重点讲解了这些算法的工作原理及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

边缘检测:可以用导数来检测

1.canny算子:采用一阶偏导的有限差分来计算梯度幅值和方向,方向导数达到局部最大则为边缘候选点;

                         创新点在于试图将边缘像素拼接成轮廓,轮廓的形成即使用滞后性阈值:通过高低两个阈值的设定,高阈值用来控制强边缘的初始段,低阈值用来边缘连接。

                         高阈值求的边缘一般断断续续,断开的地方如果低阈值求的边缘存在,就用低阈值的边缘接上去,目的让边缘尽量都连在一起。两阈值间的点为疑似边缘点,根据     连 通性确定,如果疑似点的邻接像素中有边缘点则认为是边缘点。

2.sobel算子:在某个点使用sobel算子,产生梯度矢量(可用来边缘检测)或法矢量(可用来计算法线)。计算时先在x,y方向求导数,即分别和核进行卷积,

                        Gx = |(P3+2P6+P9)-(P1+2P4+P7)|
                        Gy = |(P1+2P2+P3) - (P7+2P8+P9)|

                        假如中间为边缘,那么边缘两侧的亮度差距就会变大,乘以符号相反的系数,会使得最终的结果达到很大的值,在图像上来看就是白色;而不是边缘的区域,左右两  边或者上下两边就会抵消,在图像上看就是黑色。

3.scharr滤波器:对小的核来说,sobel算子的精度低,例如3*3的核,可以用scharr代替sobel,速度一样,精度高。

4.拉普拉斯算子:利用sobel算子算出图像上x,y方向的导数,带入到公式中。拉普拉斯求2阶导,边缘位于拉普拉斯值为0的地方,2阶导数为0,即一阶导为极大或极小值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值