边缘检测算法——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)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了