图像变换 - Canny算子边缘检测(cvCanny)

Canny边缘检测算法由John Canny在1986年提出,旨在实现高信噪比、高定位性能及单边缘响应。算法包括高斯滤波、梯度计算、非极大值抑制和双阈值检测等步骤。OpenCV中的cvCanny函数提供了一种实现,但不包含高斯平滑。该函数通过Sobel算子计算梯度,使用双阈值策略连接边缘,输出边缘图像。
摘要由CSDN通过智能技术生成

John Canny1986年提出Canny边缘检测算法。

John Canny研究了最优边缘检测方法所需的特性,给出了评价边缘检测性能优劣的三个指标:

1.好的信噪比,即将非边缘点判定为边缘点的概率要低,将边缘点判为非边缘点的概率要低;

2.高的定位性能,即检测出的边缘点要尽可能在实际边缘的中心;

3. 对单一边缘仅有唯一响应,即单个边缘产生多个响应的概率要低,并且虚假响应边缘应该得到最大抑制。

Canny算子求边缘点具体算法步骤如下:

1. 用高斯滤波器平滑图像

2. 用一阶偏导有限差分计算梯度幅值和方向

3. 对梯度幅值进行非极大值抑制

4. 用双阈值算法检测和连接边缘

在opencv里面提供了cvCanny函数来求canny算子,该算法没有进行高斯平滑图像。首先在xy方向求一阶导数,使用sobel算子,核的大小由用户输入(可以是357),然后组合成为4个方向的导数,分别判断相应方向上是否为极大值。这些方向导数达到局部最大值的点就是边缘的候选点。Canny算法最重要的一个新特点是试图将独立边的候选像素拼装成轮廓。轮廓的形成是对这些像素运用滞后性阈值。这意味着有两个阈值,上限和下限。如果一个像素的梯度大于上限阈值,则被认为是边缘像素,如果低于下限阈值,则被抛弃,如果介于二者之间,只有当其与高于上限阈值的像素连接时才会被接受。Canny推荐的上下限阈值比为2:13:1之间。具体算法如下:

1、使用sobel算子求每个像素xy方向的梯度;

2、求每个像素的方向。若|dy|< |dx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值