canny

边缘检测原理和步骤:

在实际情况中理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,看起来其中的强度变化不是瞬间的,而是跨越了一定的距离。这就使得在边缘检测中首先要进行的工作是滤波。

        1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和(卷积)。

        2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。

        3)检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测。

opencv中的canny:

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

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

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

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

clipboard

参考链接: http://blog.csdn.net/liuzhuomei0911/article/details/51345591

个人小结:

1、将图像与高斯函数做卷积

clipboard

clipboard

通过步骤5可以尝试多个sigma。

2、对图像中每个像素求计算局部边缘的法向量(或者求梯度方向)

clipboard

从上面的算子可以计算出某个像素点的x方向的梯度值和y方向的梯度值(近似差分)。如下图:

clipboard

clipboard

计算可得每个像素点的梯度值,也是一个矩阵的形式。

将梯度方向归一化到下图的四个角度。

clipboard

3、非极大值抑制(抑制的是非极大梯度值)

clipboard

在上图中蓝色的线代表c点的梯度方向,因为极值肯定存在在梯度方向上,所以直接结算dTmp1和dTmp2既可以得出c是否为极大值点。dTmp1和dTmp2的梯度值可以通过线性插值计算。

完成非极大值抑制后,会得到一个二值图像,非边缘的点灰度值均为0,可能为边缘的局部灰度极大值点可设置其灰度为128。

到此为止已经可以看到边缘的样子了(差不多等同于sobel边缘检测),以上计算的非零点都是候选点,但是检测结果还是包含了很多由噪声及其他原因造成的假边缘。因此还需要进一步的处理。

4、对边缘图像做滞后阈值化处理

双阈值做法是将候选像素点拼接成轮廓,轮廓的形成时对这些像素运用滞后性阈值,设置高低阈值(通过信噪比确定)

作用:高阈值排除噪声点,得到比较信任度比较高的轮廓,此时会孤立噪声点,低阈值链接细轮廓,通过多次迭代,得到稳定的轮廓。

6、对递增的标准差,重复1-5

7、综合多个尺度的最终信息

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值