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

来源:互联网 发布:淘宝小号出售批发 编辑:程序博客网 时间:2024/06/16 09:21

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

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,即一阶导为极大或极小值。

阅读全文
0 0
原创粉丝点击