美文网首页
Canny边缘检测

Canny边缘检测

作者: 长歌行夜一 | 来源:发表于2020-07-05 22:56 被阅读0次

    Canny边缘检测是一种使用多种边缘检测算法检测边缘的方法。由John F.Canny于1986年提出,并在论文中有详尽的描述。

    1.Canny边缘检测四步骤

    1)去噪。噪声会影响边缘检测的准确度。通常采用高斯滤波去除图像中的噪声。滤波器的核越大,边缘信息对噪声的敏感度就越低。不过,核越大,边缘检测的定位错误也会随之增加。通常一个5 X 5的核能满足大多数情况。

    2)计算梯度的幅度与方向。梯度的方向与边缘的方向是垂直的,通常就取近似值为·水平、垂直、对角线等八个不同的方向。

    3)非极大值抑制,即适当地让边缘变瘦。在获得了梯度的幅度和方向后,遍历图像中的像素点,去除所有非边缘的点。具体实现上,判断当前像素点是否是周围像素点中具有相同梯度方向的最大值,如果是,则保留该点;如果不是则抑制(归零)。

    4)确定边缘。用双阈值算法确定最终的边缘信息。完成之前三步骤后,图像的强边缘已经在当前获取的边缘图像内。但一些虚边缘可能也在边缘图像内,这些虚边缘可能是真实的图像产生的,也可能是由于噪声产生的(必须将其剔除)。

            设置两个阈值,其中一个为高阈值maxVal,另一个为低阈值minVal。根据当前边缘像素的梯度值与这两个阈值之间的关系,判断边缘的属性。如果当前边缘像素的梯度值不小于maxVal,则将当前边缘像素标记为强边缘;如果介于maxVal与minVal之间,则标记为弱边缘(先保留);如果小于minVal,则抑制当前边缘像素。之后再判断虚边缘是否与强边缘有连接,有连接,则处理为边缘;无连接则抑制。

    2. Canny函数

    OpenCV提供了cv2.Canny()来实现边缘检测:

    dst = cv2.Canny(image, threshold1,threshold2[,edges[,apertureSize[,L2gradient]]])

    dst : 为计算得到的边缘图像

    image: 为8位输入图像

    threshold1: 表示处理过程中的的第一个阈值

    threshold2: 表示处理过程中的的第二个阈值

    apertureSize: 表示Sobel算子的孔径大小。

    L2gradient: 为计算图像梯度幅度的标识。其默认值是False。如果为True,则使用更精确的L2范数进行计算,否则使用L1范数。

    例如:

    Canny边缘检测

    相关文章

      网友评论

          本文标题:Canny边缘检测

          本文链接:https://www.haomeiwen.com/subject/hrqvqktx.html