边缘检测算法——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)。

posted @   圣骑士wind  阅读(16937)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示