Canny边缘检测算法

借鉴:知乎

Canny算子目标是找到一个最优的边缘,其最优边缘定义:

  • 好的检测:算法能够尽可能多的标识出图像的实际边缘
  • 好的定位:标识出的边缘要与实际图像中的实际边缘尽可能接近
  • 最小响应:图像中的边缘只能标识一次,并且可能存在的图像噪声不应该标识为边缘

具体步骤:
(1)高斯滤波

高斯滤波是目前最为流行的去噪滤波算法,其原理为根据待滤波的像素点及其领域点的灰度值按照高斯公式生成的参数规则进行加权平均,这样可以有效滤去理想图像中叠加的高频噪声。

其实高斯滤波器很像一个金字塔结构,其滤波器的值大小可以理解为权重,值越大对应的像素点权重越大,分量也就越大,因此从高斯滤波器可以看出对应当前像素点,距离越远权重越小,对灰度值的贡献也就越小。
(2)计算梯度图像和角度图像

计算梯度图像就是用各种边缘检测算子进行梯度的检测,Canny是使用高斯滤波器进行梯度计算 得到的滤波器,得到的也类似于Sobel算子,及距离中心点越近的像素点权重越大。
(3)对梯度图像进行非极大值抑制

从上一步得到的梯度图像存在边缘粗宽、弱边缘干扰等众多问题,可以通过非极大值抑制来寻找像素点局部最大值,将非极大值所对应的灰度值置0,这样可以剔除一大部分非边缘的像素点。
(4)使用双阈值进行边缘连接

经过以上三步得到的边缘质量已经很高,但还是存在很多伪边缘,因此Canny算法中所采用的算法是双阈值法,具体思路为选取两个阈值,将小于低阈值的点认为是假边缘置0,将大于高阈值的点认为是强边缘置1,介于中间的像素点需进一步的检查。

相关推荐
小和尚同志2 小时前
54.6k star 的 Multica: 集多 Agent 和看板于一体的 AI 平台
人工智能·aigc·three.js
一枕槐安4873 小时前
少样本提示(Few-shot)在业务场景的落地实践
大数据·人工智能·意图分类·mmr多样性·knn检索·动态示例选择
ZhengEnCi4 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
王中阳Go4 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
海宇AI4 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
tellmewhoisi4 小时前
深度学习32:卷积神经网络:卷积层(卷积运算,填充,步幅)
人工智能·深度学习·cnn
weixin_307779135 小时前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
Sinokap5 小时前
OpenAI 披露 AI 安全实验:智能体如何突破隔离边界?
人工智能·安全
云和数据.ChenGuang5 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
重生之我在番茄自学网安拯救世界5 小时前
AI 开发者日报 第1期(本周精选)| 插件市场投毒、智能体搞出“官僚饥荒村”,十年前的 CNN 打赢大模型
人工智能·网络安全·大模型·ai编程·智能体