边缘检测:Canny算子,Sobel算子,Laplace算子

2023-05-16

1、canny算子

Canny边缘检测算子是John F.Canny于 1986 年开发出来的一个多级边缘检测算法。更为重要的是 Canny 创立了边缘检测计算理论(Computational theory ofedge detection),解释了这项技术是如何工作的。Canny边缘检测算法以Canny的名字命名,被很多人推崇为当今最优的边缘检测的算法。

其中,Canny 的目标是找到一个最优的边缘检测算法,让我们看一下最优边缘检测的三个主要评价标准:

1.低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报。

2.高定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。

3.最小响应: 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。

Canny 边缘检测的步骤:

1.消除噪声。 一般情况下,使用高斯平滑滤波器卷积降噪。 如下显示了一个 size = 5 的高斯内核示例:

2.计算梯度幅值和方向。 此处,按照Sobel滤波器的步骤。

  Ⅰ.运用一对卷积阵列 (分别作用于 x 和 y 方向):

            

  Ⅱ.使用下列公式计算梯度幅值和方向:

           

梯度方向近似到四个可能角度之一(一般为0, 45, 90, 135)

 3.非极大值抑制。 这一步排除非边缘像素, 仅仅保留了一些细线条(候选边缘)。

 4.滞后阈值。最后一步,Canny 使用了滞后阈值,滞后阈值需要两个阈值(高阈值和低阈值):

  Ⅰ.如果某一像素位置的幅值超过 高 阈值, 该像素被保留为边缘像素。

  Ⅱ.如果某一像素位置的幅值小于 低 阈值, 该像素被排除。

  Ⅲ.如果某一像素位置的幅值在两个阈值之间,该像素仅仅在连接到一个高于 高 阈值的像素时被保留。

 tips:对于Canny函数的使用,推荐的高低阈值比在2:1到3:1之间。

 更多的细节,可以参考canny算子的wikipedia

 canny边缘检测的原理讲述,课参看这篇博文

 canny算子的中文wikipedia

 2、sobel算子

Sobel 算子是一个主要用作边缘检测的离散微分算子 (discrete differentiation operator)。 它Sobel算子结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。

 sobel算子的wikipedia

 sobel算子相关概念,还可以参看这篇博文

 sobel算子的计算过程:

 我们假设被作用图像为 I.然后进行如下的操作:

 1.分别在x和y两个方向求导。

   Ⅰ.水平变化: 将 I 与一个奇数大小的内核进行卷积。比如,当内核大小为3时, 的计算结果为:

 

  Ⅱ.垂直变化: 将: I 与一个奇数大小的内核进行卷积。比如,当内核大小为3时,  的计算结果为:

 

2.在图像的每一点,结合以上两个结果求出近似梯度:

 

另外有时,也可用下面更简单公式代替:

 

3、Laplace算子

Laplacian 算子是n维欧几里德空间中的一个二阶微分算子,定义为梯度grad()的散度div()。因此如果f是二阶可微的实函数,则f的拉普拉斯算子定义为:

(1) f的拉普拉斯算子也是笛卡儿坐标系xi中的所有非混合二阶偏导数求和:

(2) 作为一个二阶微分算子,拉普拉斯算子把C函数映射到C函数,对于k ≥ 2。表达式(1)(或(2))定义了一个算子Δ :C(R) → C(R),或更一般地,定义了一个算子Δ : C(Ω) → C(Ω),对于任何开集Ω。

根据图像处理的原理我们知道,二阶导数可以用来进行检测边缘 。 因为图像是 “二维”, 我们需要在两个方向进行求导。使用Laplacian算子将会使求导过程变得简单。

Laplacian 算子的定义:

 

需要点破的是,由于 Laplacian使用了图像梯度,它内部的代码其实是调用了 Sobel 算子的。

另附一个小tips:让一幅图像减去它的Laplacian可以增强对比度。

 关于Laplace算子的相关概念阐述,可以参看这篇博文

 Laplace算子的wikipedia

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/9563947.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

边缘检测:Canny算子,Sobel算子,Laplace算子 的相关文章

  • 【数字图像处理】边缘检测

    文章目录 0 前言1 Sobel算子2 Canny算子3 深度学习算法3 1 Holistically Nested Edge Detection xff08 HED xff09 3 2 Richer Convolutional Featu
  • 边缘检测(5)Canny算法

    边缘检测 1 Sobel 2 Laplace 3 Roberts 4 Canny Canny canny对边缘检测质量进行分析时 xff0c 有3个原则 xff1a 1 信噪比准则 2 定位精度准则 3 单边缘响应准则 canny边缘检测的
  • OpenCV入门(四)——边缘检测

    目录 0x01 梯度算子 0x02 一阶微分算子 0x03 二阶微分算子 0x04 图像差分运算 0x05 非极大值抑制 0x06 基本边缘算子 Sobel 0x07 基本边缘算子 Laplace 0x08 基本边缘检测算子 Roberts
  • Canny边缘检测

    Canny边缘检测 1 使用高斯滤波器 xff0c 以平滑图像 xff0c 滤除噪声 2 计算图像中每个像素点的梯度强度和方向 3 应用非极大值 xff08 Non Maximum Suppression xff09 抑制 xff0c 以消
  • 边缘检测:Canny算子,Sobel算子,Laplace算子

    1 canny算子 Canny边缘检测算子是John F Canny于 1986 年开发出来的一个多级边缘检测 算法 更为重要的是 Canny 创立了边缘检测计算理论 xff08 Computational theory ofedge de
  • opencv_tutorial_code学习——canny边缘检测后findContours

    tutorial code ShapeDescriptors findContours demo cpp 步骤 xff1a 1 灰度化 2 滤波 3 canny边缘检测 4 findContours canny output contour
  • halcon边缘检测

    边缘检测 Ronny丶 博客园 寻找边缘的传统方法 xff0c 即图像中的暗 光转换 xff0c 是应用边缘滤波器 这些滤光器可以在光和暗区域的边界找到像素 从数学术语中来说 xff0c 这意味着这些滤波器决定了图像的梯度 此图像渐变通常作
  • python-图像边缘化处理

    本文由本人原创 仅作为自己的学习记录 主要利用Sobel 用作边缘检测 它是一离散性差分算子 用来运算图像亮度函数的灰度值 在图像的任何一点使用此算子 将会产生对应的灰度矢量或是其法矢量 Sobel边缘检测通常带有方向性 可以只检测竖直边缘
  • 10.9 图像分割

    3 9 图像分割 学习目标 了解图像分割的类型 知道阈值分割的内容 全阈值分割 自适应阈值分割 熟悉大津法 知道分水岭算法的原理 了解GrabCut算法 1 图像分割 所谓图像分割指的是根据灰度 颜色 纹理和形状等特征把图像划分成若干互不交
  • MATLAB数字图像处理(三)——图像轮廓提取与边缘检测

    文章目录 二值图像轮廓提取 灰度图像边缘检测 含噪图像边缘检测 均值滤波函数 二值图像轮廓提取 根据掏空内部点算法 运用Matlab编程实现二值图像的轮廓提取 以二值图像circles为例 I imread circles png subp
  • 关于图像处理中的卷积运算——sobel边缘检测

    一 卷积的概念以及计算 1 一维卷积 在泛函分析中 卷积是通过两个函数 f 和 g 生成第三个函数的数学运算 表征函数 f 和经过翻转 平移的g 的乘积函数围成的曲边梯形的面积 连续函数卷积 设 f x g x 是 R 上两个可积函数 作积
  • 深度学习边缘检测 HED 训练自己的数据

    深度学习边缘检测 HED 训练自己的数据 数据集制作 使用labelme标注 选择lineStrip 线条束 标注 生成json文件 之后使用批量处理脚本将json文件转为边缘数据集 具体过程如下 首先将所有的json文件放入一个文件夹内
  • 万字长文讲述我是怎样保送清华的

    点击 小卡片 回复 1024 获取大厂面试指南 背景 大家好 我是石头哥 本篇是系列文章第 4 篇 前三篇如下 家穷应该读大学吗 寒门学子的奋斗史 一 第一篇回忆了自己读小学的场景 寒门学子的奋斗史 二 第二篇讲了自己就读的贫困山区中学的
  • 图像边缘及matlab实现

    图像边缘是图像的重要特征 是图像中特性 如像素灰度 纹理等 分布的不连续处 图像周围特性有阶跃变化或屋脊状变化的那些像素集合 图像的边缘部分集中了图像的大部分信息 一幅图像的边缘结构与特点往往是决定图像特质的重要部分 图像边缘的另一个定义是
  • Python opencv学习-8寻找轮廓、绘制轮廓

    import numpy as np import cv2 im cv2 imread image canny png 寻找轮廓前要对其进行灰度化 二值化处理 也可使用canny进行边缘检测 imgray cv2 cvtColor im c
  • MATLAB实现五种边缘检测

    一 原理 常用的边缘检测算法有拉普拉斯边缘检测算法 Robert边缘检测算子 Sobel边缘检测算子 Prewitt边缘检测算子 Canny边缘检测算子 二 代码 filename pathname uigetfile jpg bmp gi
  • Python opencv学习-6Canny边缘检测学习

    代码 图片参考https blog csdn net tengfei461807914 article details 76376941 修正了其文中出现的错误 canny作用及用法简单理解 阈值针对的是图像灰度梯度而言 需要确定哪些边界是
  • 丁鹏:多角度回顾因果推断的模型方法

    来源 集智俱乐部 本文约23000字 建议阅读20 分钟 本文整理自丁鹏老师的8篇短文 从多角度回顾了因果推断的各种模型方法 导读 推断因果关系 是人类思想史与科学史上的重要主题 现代因果推断的研究 始于约尔 辛普森悖论 经由鲁宾因果模型
  • 计算机视觉入门之构建一个扫描仪

    源代码 import the necessary packages from transform import four point transform from skimage filters import threshold local
  • 如何提高索贝尔边缘检测器的效率

    我正在写一个计算机视觉库 https github com RoadKillCat PiCamVision从头开始使用 Python 来使用rpi相机 目前 我已经实现了转换为greyscale以及其他一些基本的img在我的设备上运行速度相

随机推荐

  • C#实现Windows 服务的制作安装和删除[转]

    关于C 实现windows服务的制作与安装还有删除 运行Visual Studio NET xff0c 建立一个C 的Windows服务项目 主程序代码 xff1a 以下是引用片段 xff1a Code using System using
  • 相机与IMU联合标定

    相机与IMU联合标定 1 imu utils 标定IMU的内参1 1 安装环境1 2 录制IMU数据集 2 kalibr 标定工具2 1 安装2 2 校准相机的内外参2 3 校准相机与IMU外参 总结参考资料 1 imu utils标定IM
  • matlab练习程序(寻找凸包,Graham扫描法)

    我不太清楚这个凸包在图像处理中到底会怎样的运用 xff0c 因为这个好像更多的是计算几何或是图形学里面的东西 不过作为一个算法 xff0c 我感觉还是有必要研究一下的 我主要的参考资料是 算法导论 的33 3和这个博客 代码在这里 xff0
  • 1

    stage 1 xff1a 尝试直接使用Adobe acrobat xff0c foxit阅读器 xff0c 以及CAJ等PDF阅读器 xff0c 尝试使用CAJ是因为CAJ有文字识别功能 xff0c 但是对于加密的文档 xff0c 依然是
  • Python自动化备份系统及网站

    随着目前IT迅猛的发展 xff0c 自动化运维对于Linux运维人员也越来越重要 xff0c 传统的运维方式靠大量的人力 xff0c 现在也逐渐转向自动化运维 xff0c 我们常见的跟自动化有关的软件有哪些呢 今天我们来简单列举一下 xff
  • AI 黑箱难题怎么破?基于神经网络模型的算法使机器学习透明化

    编者按 xff1a 人们可以训练人工智能 xff08 AI xff09 和机器人完成任务 xff0c 但整个过程在黑箱中运作 我们并不知道 AI 和机器人是如何决策的 一家名为 OptimizingMind 的初创公司想要解决这个问题 这篇
  • 技术面试介绍

    内容 xff1a 1 技术面试的形式 2 技术面试的大致环节 3 技术面试应具备的素质 4 技术面试的经验建议 参考 xff1a 剑指offer 第二版 第一章 Java程序员面试笔试宝典 第一章 第二章 1 技术面试的形式 技术面试大致上
  • 今天是 Java 诞生日,Java 24 岁了!

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 今天是 Java 诞生日 xff0c Java 今年 24 岁了 xff0c 比栈长还年轻 还有得搞 xff0c 别慌 xff01 作为一名Java语言的学习者 xff0c
  • [原创]求两个经纬度之间的距离

    经常要根据两个经纬度值 求它们之间的距离 delphi实现代码 xff1a 求两个经纬度之间的距离 function Distince const lon1 lat1 lon2 lat2 double double var alpha1 a
  • cmake的命令execute_process

    execute process COMMAND lt cmd1 gt args1 COMMAND lt cmd2 gt args2 WORKING DIRECTORY lt directory gt TIMEOUT lt seconds g
  • php 输出数组内容_php数组怎么输出

    PHP数组的输出方式有两种 xff1a print r 函数和var dump 函数 1 print r 利用 print r 函数可以打印输出整个数组内容及结构 xff0c 按照一定格式显示键和元素 注意 print r 函数不仅是只用于
  • VNC常用操作及常见问题解决办法汇总

    VNC登录用户缺省是root xff0c 但在安装oracle时必须用oracle用户的身份登录 xff0c 下面我们就以oracle为例说明如何配置VNC xff0c 从而可以使用不同的用户登录到主机 步骤描述如下 xff1a 步骤一 x
  • Xsens 在ROS环境下读取数据

    Xsens 在ROS环境下读取数据 1 Xsens 参数配置2 Xsens ROS环境下读取数据2 1 安装ROS二进制包2 2 Xsens修改rule文件2 3 启动节点 参考资料 1 Xsens 参数配置 软件可以在官网上进行下载 1
  • 交换机***查询篇

    如何确定 类型 当设备遭受 时 xff0c 通常伴随着如下现象 xff1a 用户无法获取ARP 用户上线成功率较低 用户无法访问网络 l严重时可能导致设备上所有用户都无法正常访问网络 当大量用户或固定某个端口下的所有用户出现上述现象时 xf
  • tomcat部署war包访问显示404

    在eclipse导出的maven项目war包 xff0c 放到tomcat下启动 xff0c 顺利启动且无报错 xff0c 但是浏览器访问该项目时显示404 原因 xff1a 未在server xml中配置这几个项目 xff0c 导致服务器
  • Pycharm: 代码跳转如何回退 (小技巧)

    背景 玩Python已经有段时间了 一般都是通过vim和Pycharm来开发 真心觉得这两个是神器 Vim神器暂且不说 今天来分享Pycharm的一个小技巧 用Pycharm的童鞋都知道 它有个跳转的功能 可以让我们在想深入了解某个函数 库
  • 最近沉迷美女图片无法自拔,所以我决定用PHP扒海量妹子图

    为什么80 的码农都做不了架构师 xff1f gt gt gt 学习PHP 43 MySQL制作WEB应用有一阵子了 xff0c 没有上过学所以只能学习到CURD的地步 最近对国产美女图片 私房写真特别感兴趣 xff0c 什么周妍希 刘飞儿
  • elementui的loading啊。。。踩坑了。。。

    为什么80 的码农都做不了架构师 xff1f gt gt gt 总结如下 xff1a 1 elementui的loading其实是fullscreen才是全局唯一 xff0c 不然会Loading service一次创建一次实例 2 ele
  • a padding to disable MSIE and Chrome friendly error page 填充禁用MSIE铬友好的错误页面

    一个网页在用户登录后 xff0c 应该自动刷新后 xff0c 显示登录用户信息 xff0c 但是没有自动刷新反而报错 xff0c 手动刷新后显示正常 显示如下 xff1a 检查代码 xff1a 可能原因 xff1a 文件读写权限 权限和用户
  • 边缘检测:Canny算子,Sobel算子,Laplace算子

    1 canny算子 Canny边缘检测算子是John F Canny于 1986 年开发出来的一个多级边缘检测 算法 更为重要的是 Canny 创立了边缘检测计算理论 xff08 Computational theory ofedge de