您的位置:首页 > 运维架构

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

2017-07-25 17:00 274 查看
边缘检测:可以用导数来检测

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,即一阶导为极大或极小值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐