zoukankan      html  css  js  c++  java
  • 边缘检测算法——Canny和LoG边缘检测算法

    首先回顾一下边缘检测的一般步骤:

    边缘检测算法一般包含如下四个步骤:

      1.滤波(去噪)

      2.增强(一般是通过计算梯度幅值)

      3.检测(在图像中有许多点的梯度幅值会比较大,而这些点并不都是边缘,所以应该用某种方法来确定边缘点,比如最简单的边缘检测判据:梯度幅值阈值)

      4.定位(有的应用场合要求确定边缘位置,可以在子像素水平上来估计,指出边缘的位置和方向)

     

    边缘检测方法比较常用的有基于各种算子的方法,有基于一阶导数的各种算子(Roberts、Sobel、Prewitt等),还有基于二阶导数的拉普拉斯算子等。

    其中一阶导数一般找梯度极大值。

    二阶导数找过零点(需要忽略无意义的过零点(即均匀零区))。

    本文主要概述一下边缘检测中比较有代表性的的Canny和LoG算法。

    其中Canny基于一阶导数,而LoG算法基于二阶导数。

     

    Canny边缘检测器

    Canny边缘检测的算法步骤:

      1.用高斯滤波器平滑图像(不同尺度的Canny检测子由高斯的不同标准差来表示)

      2.用一阶偏导有限差分计算梯度幅值和方向(梯度方向为边缘法向)

      3.对梯度幅值进行非极大值抑制(Non-Maxima Suppression, NMS)

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

      其中非极大值抑制细化了幅值图像中的屋脊带,只保留幅值局部变化最大的点。

      双阈值算法:用两个阈值得到两个阈值图像,然后把高阈值的图像中的边缘连接成轮廓,连接时到达轮廓的端点时,在低阈值图像上找可以连接的边缘。不断收集,直到所有的间隙连接起来为止。

     

    LoG边缘检测算法

    LoG边缘检测算法步骤:

      1.平滑:高斯滤波器

      2.增强:Laplacian算子计算二阶导

      3.检测:二阶导零交叉点并对应于一阶导数的较大峰值

      4.定位:线性内插

    根据卷积的求导法则,先卷积后求导和先求导后卷积是相等的,所以可以把第1、2步合并为一步,先对高斯滤波器做拉普拉斯变换,得到墨西哥草帽算子,然后再用这个算子与图像做卷积。

    这个算子还有一个有效的近似:使用两个具有明显不同的标准差的高斯平滑掩模的差(DoG, difference of Gaussians)。

  • 相关阅读:
    redis sentinel(哨兵)配置解读
    配置哨兵监控Redis运行情况
    java 客户端链接不上redis解决方案
    Redis配置主从架构,实现读写分离
    Redis简介,安装和配置,停止,卸载(图解方式)
    linux下监控用户的操作记录---录像播放性质
    Spring的数据库开发
    Spring中Bean的作用域、生命周期
    Spring中Bean的实例化
    Spring之初体验
  • 原文地址:https://www.cnblogs.com/mengdd/p/2732179.html
Copyright © 2011-2022 走看看