图像处理+边缘检测算法

2023-11-16

一、边缘检测算子类别 

     常见边缘检测算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia

二、一阶微分算子:Roberts 、Sobel 、Prewitt

        Robert算子是第一个边缘检测算子,提出者Lawrence Roberts in 1963。

        Sobel边缘算子,当年作者并没有公开发表过论文,仅仅是在一次博士生课题讨论会(1968)上提出("A 3x3 Isotropic Gradient Operator for Image Processing"),后在1973年出版的一本专著("Pattern Classification and Scene Analysis")的脚注里作为注释出现和公开的。提出者Irwin Sobel。

        Prewitt算子来自J.M.S. Prewitt "Object Enhancement and Extraction" in "Picture processing and Psychopictorics", Academic Press,1970。

        我们看这三种边缘检测算子模板及写成差分的形式



 Roberts算子



Sobel算子



Prewitt算子

图 4 一阶微分算子

       如何计算边缘幅值与方向?以Sobel算子为例。3*3 Sobel两个方向的算子在图像上滑动,模板与其覆盖的图像3*3区域9个像素进行卷积,求和后得到此方向的边缘检测幅值。





f(x,y)为图像,Gx和Gy分别是水平和竖直方向算子的卷积结果,G则是最终得到的边缘幅值,θ值则是边缘方向。当然G的计算有时简化为

  

或者

 

求幅值时是有多种选择的,一般根据具体应用选择用水平还是竖直或是两个方向同时检测。

        另外,需要说明的是,Sobel算子还有一种变种,是各向同性Sobel算子,其模板为



图 5 各向同性Sobel算子

Sobel各向同性算子的权值比普通Sobel算子的权值更准确。为什么?模板的权值是离中心位置越远则权值(看绝对值)影响越小,如上图,把模板看成是9个小正方形,小正方形边长为1,则虚线三角形的斜边长为,下直角边长为1,则如果(0,0)位置权值绝对值大小为1,则按照距离关系,位置(1,0)处的权值绝对值大小应该为才是准确的。

三、 二阶微分算子:Laplacian、Log/Marr

        拉普拉斯算子来自拉普拉斯变换,而Log算子又称Marr算子,由David Courtnay Marr和Ellen Hildreth(1980)共同提出,计算神经学创始人Marr在1980年正式发表论文时,因换白血病早逝,后面设立Marr奖以此纪念其贡献,现在每两年的ICCV(与ECCV,CVPR并称计算机视觉三大顶级会议)会评出一个Marr奖。这两种算子模板如下:


Laplacian算子(两种模板)


Log算子

图 6 二阶微分算子


拉普拉斯算子数学公式是

写成差分形式为


        Log边缘检测则是先进行高斯滤波再进行拉普拉斯算子检测,然后找过零点来确定边缘位置,很多时候我们只是知道Log 5*5模板如上图所示,但是具体是怎么得到的?下面进行推导。

二维高斯公式是


按拉普拉斯算子公式求x,y方向的二阶偏导后为


这里x,y不能看成模板位置,应看成是模板其他位置到中心位置的距离。那么写成


这里x0,y0就是模板中心位置,x,y是模板其他位置,对于5*5模板,则x0=2,y0 = 2,那对于模板中(0,0)位置的权值,即把x= 0,y= 0,x0= 2,y0 = 2带入上式,另= 1,得到约等于0.0175,这样得到


通过取整变符号,且模板总和为0,得到图6所示的模板。

        另外,这里模板大小是如何取的?通常高斯分布中,在(-3,3)的范围内就覆盖了绝大部分区域,所以模板大小一般取dim = 1 + 6(在SIFT特征中,其中的高斯模糊也是这样取),dim如果为小数,则取不小于dim的最小整数,当然实际使用时没有这么严格,如上面我们取=1时,模板大小取5*5。那同一个尺寸的模板中的权值调整就是的变化得到的,变化到一定程度,模板尺寸大小改变(这个是个人理解,欢迎拍砖羡慕)。

四、非微分边缘检测算子:Canny

       Canny边缘检测大家应该很熟悉,这里列出步骤,并给出一个详细介绍的链接Canny算子

    1.      彩色图像转换为灰度图像
    2.      对图像进行高斯模糊
    3.      计算图像梯度,根据梯度计算图像边缘幅值与角度(这里其实用到了微分边缘检测算子来计算梯度幅值方向)
    4.      非最大信号压制处理(边缘细化)
    5.      双阈值边缘连接处理

    6.      二值化图像输出结果

五、方向算子Kirsch(8个3*3模板),Nevitia (12个5*5模板)

        这两个算子是利用多个方向的子模板进行分别计算,最后取幅值最大的那个为最终边缘幅值,方向即最大幅值对应的那个方向。

六、各边缘检测算子对比


参考文献:

1、http://blog.csdn.net/xiaojiegege123456/article/details/7714863

2、http://blog.csdn.net/yanmy2012/article/details/8110316

3、http://blog.csdn.net/langb2014/article/details/45667921

4、https://blog.csdn.net/tigerda/article/details/61192943

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

图像处理+边缘检测算法 的相关文章

  • zjy-easyinput文本框带按钮,uni-easyinput增强版

    一 zjy calendar简介 zjy calendar日历是对uniapp uni easyinput文本框的增强 支持文本框前后加按钮 二 使用方法 源使用说明 https uniapp dcloud net cn component
  • 功率和evm的关系_详解功率放大器PA设计指标

    PA指标分析 一 PA的工艺 PA的设计指标包括频率 带宽 功率 效率 线性度 甚至可能也要要求噪声 目前主要有两种工艺CMOS和GaAs CMOS工艺 比GaAs有优势的地方 主要是集成度和成本 所以但凡是要求效率 噪声 线性度等指标的放
  • STM32 以太网W5500

    文章目录 W5500简介 以太网接入方案 SPI读写访问 寄存器以及地址 源码以及配置 实现 TCP Server 三次握手过程 SPI 配置 网络相关函数 W5500简介 W5500 是一款全硬件 TCP IP 嵌入式以太网控制器 为嵌入
  • 嵌入式(线程的创建和回收)

    线程的创建 include
  • 我的第一个油猴脚本「屏蔽CSDN底下的登录栏」

    CSDN博客不登录就弹这么个东西 挡住视线不胜其烦 你问我为啥不登录 登录过呀 关了浏览器又要重新登 csdn的session不保存的吗 emmmm我也不太懂这方面的东西 于是我就想 在每次访问csdn博客的时候 浏览器都能自动执行一个js
  • c++ vector基本函数、排序、查找用法

    终于把自己的个人博客安排上啦 欢迎访问我的个人博客 XJHui s Blog vector用法目录 1 基本用法 2 vector的删除操作 3 vector的sort排序 4 翻转vector中的所有元素 5 find 函数的用法 6 v
  • python中shutil.copy()的用法

    shutil copy src dst 是为了复制文件内容且不包含元数据从src到dst dst必须是完整的文件路径文件名 注意 如果src和dst是同一个文件 就会引发错误 dst必须是可写的 否则将引发错误 如果dst已经存在 就会被替
  • C++函数模板的具体化

    一 函数模板的具体化 先看看C 98里面有关具体化方法的标注 对于给定的函数名可以有非模板函数 模板函数 显式具体化函数以及它们的重载函数 显示具体化以template lt gt 打头 并通过函数参数来指示类型 优先级顺序为 非模板函数
  • PyCharm分屏,左右。

    Windows下安装的pycharm 为了对比两个文件的不一致 把新旧文件 左右分屏呈献 操作如下图 即可把当前编辑界面 呈献在屏幕2中 左右对比更方便 当然也可以选择上下分屏 Split Horizontally
  • 程序员工资真的高吗?

    一直以来都很奇怪的事情 每当别人知道我晚上7点才下班 他们几乎都是会发出这样的惊呼 你居然这么晚才下班 而每当这个时候又轮到我来惊呼了 这么早7点就下班还算晚 每次打听别人的下班时间 要么5点30就下班了 要么6点就下班了 打听完了 这个时
  • 【A-Star算法】【学习笔记】【附GitHub一个示例代码】

    文章目录 一 算法简介 二 应用场景 三 示例代码 Reference 本文暂学习四方向搜索 一 算法简介 一个比较经典的路径规划的算法 相关路径搜索算法 广度优先遍历 BFC 深度优先遍历 DFC Di jkstra算法 最短路径问题 D
  • 实现 strStr() 函数

    实现 strStr 函数 给定一个 haystack 字符串和一个 needle 字符串 在 haystack 字符串中找出 needle 字符串出现的第一个位置 从0开始 如果不存在 则返回 1 示例 1 输入 haystack hell
  • STM32 电机教程 30 - 无刷无感入门2

    前言 无刷直流 Brushless Direct Current BLDC 电机是一种正快速普及的电机类型 它可在家用电器 汽车 航空航天 消费品 医疗 工业自动化设备和仪器等行业中使用 正如名称指出的那样 BLDC 电机不用电刷来换向 而
  • 面渣逆袭:计算机网络六十二问,三万字图文详解

    基础 1 说下计算机网络体系结构 计算机网络体系结构 一般有三种 OSI 七层模型 TCP IP 四层模型 五层结构 三种网络体系结构 简单说 OSI是一个理论上的网络通信模型 TCP IP是实际上的网络通信模型 五层结构就是为了介绍网络原
  • 小程序锚点定位(通讯录)

    1 使用视图容器组件scroll view 2 在scroll view中设置属性scroll into view 属性值为锚点id 3 在需要的位置设置锚点ID值 点击后将scroll into view设置为对应的id即可跳转 示例 名
  • idea空Maven项目部署Tomcat提示:no artifacts configured 、以及后续 No artifacts marked for deployment解决方案

    no artifacts configured 没有配置artifacts 关于artifacts的介绍推荐大家看这篇博文点击查看 我们先退到项目界面 右击项目名导入web程序所需的库 导入成功后继续配置tomcat 点击之后我们发现又报了
  • 聊聊网络安全等级保护“能力验证”:配置核查(Linux系统)

    前言 作为测评机构一定会知道每年会举行 能力验证 活动 申请认可和获准认可的合格评定机构通过参加能力验证活动 包括 CNAS 组织实施或承认的能力验证计划 测评机构间比对和测量审核 证明其技术能力 之前的线上会议也表明了对测评机构能力建设方
  • 关于Layui后台ajax返回问题

    刚接触LayUI 几次出现 返回的数据异常 问题 皆是因为数据的格式不对 这里做个小笔记 一般的格式这个样子 data result array code gt 0 msg gt count gt 100 data gt

随机推荐

  • pycm库详解_机器学习评价

    详细介绍pycm库的使用方法
  • qqkey获取原理_qqkey获取器下载

    qqkey获取工具 QQkey控制接收生成器 是一款类似于灰鸽子的一款软件 不同的是不能不能盗号 在你的好友打开了你配置的文件后 你可以在工具中获取到好友的QQkey信息 可以把对方的QQ当做的自己的QQ一样 想干嘛就干嘛 赶紧来下载使用吧
  • 在 esmodule 环境下使用 jsts

    文章目录 1 说明 Geometry 类 2 安装 3 使用 以 buffer 为例 4 JTS 文档 1 说明 jsts 完全就是根据其老妈 jts 的 java 包结构移植的 除了部分分析功能需要额外注意外 基本上所有的子模块的根路径位
  • C++ 中隐藏DOS调用的命令行窗口

    转自 http hi baidu com jackyho2000 blog item b5c5fabdd3b4db0019d81fbb html 我演示了一下在MFC程序中怎么应用DOS的dir的命令 可是我们遇到了需要解决的问题 首先就是
  • 包含抽象方法的类是抽象类吗?

    如果这个问题的范围是围绕 类 那么 包含抽象方法的类一定是抽象类 因为抽象方法的特征是 必须定义在抽象类中 但是话由说回来了 因为在JAVA中还有一种允许使用抽象方法的结构 那就是接口 在接口中的方法只能是抽象方法 不允许出现具体实现的方法
  • Python,创建map

    import matplotlib pyplot as mpp import os random math matplotlib version 3 5 1 numpy version 1 21 5 创建画布及坐标轴 def set cav
  • C语言二级题库(刷题软件+60套真题+填空题+大题)2022年9月份新题第三套

    文章只能发选择题 刷大题去刷题软件效果会更好 刷题软件 gongzhonghao 露露IT 选择题 1 下面选项中不是关系数据库基本特征的是 A 不同的列应有不同的列名 B 不同的列应有不同的数据类型 C 与行的次序无关 D 与列的次序无关
  • 业内常用即时传输网盘

    工具名称 业内常用即时传输网盘 功能简介 无需登录 短时间内有效 多用于传输小型敏感文件 外部链接 请见文内 内部网盘链接 在线站点 无网盘链接 使用说明 许多安全行内人士在团队内互传敏感文件时 为实现上传和下载文件时提供较快的速度和数据隐
  • 为什么我不使用JetBrains的屌炸天编辑器

    首先解释一下 JetBrains并没有出过一款叫做 屌炸天 的编辑器 作为一个提到编辑器圣战内心就无比激动的码农 我使用过JetBrains的大部分产品 从开始的PhpStorm 到PyCharm Intellij IDEA CLION a
  • XAML基础控件

    常用布局控件
  • QT内存管理

    Qt内存管理机制 Qt 在内部能够维护对象的层次结构 对于可视元素 这种层次结构就是子组件与父组件的关系 对于非可视元素 则是一个对象与另一个对象的从属关系 在 Qt 中 在 Qt 中 删除父对象会将其子对象一起删除 C 中delete 和
  • mmap和常规文件操作的区别

    mmap和常规文件操作的区别 对linux文件系统不了解的朋友 请参阅我之前写的博文 从内核文件系统看文件读写过程 我们首先简单的回顾一下常规文件系统操作 调用read fread等类函数 中 函数的调用过程 1 进程发起读文件请求 2 内
  • C语言:初阶指针和结构体

    1 指针是什么 指针理解的两个要点 指针是内存中的一个最小单元的编号 也就是地址 平时口语说的指针 通常指的是指针变量 是用来存放内存地址的变量 为了管理计算机内存空间 会把内存分为一个一个一个小的内存单元 每个内存单元占一个字节的空间 那
  • [carla]carla-ros-bridge调整主监视器视角

    打开文件 carla ros bridge src carla ros bridge actor factory py 在class ActorFactory object 中添加函数 def set spectator self worl
  • 输入缓冲区

    输入缓冲区 一 什么是输入缓冲区 二 如何处理 一 什么是输入缓冲区 如上图所示 当我们输入密码的字符串按下回车后 我们发现还没来得及输入yes or no 就已经显示输入失败 这是怎么回事儿呢 这就要引出我们今天介绍的主角 输入缓冲区 输
  • osg学习(七十二)SPHERE_MAP REFLECTION_MAP NORMAL_MAP

    1 球面贴图 已知视点 物体顶点 物体法线 计算反射向量 在球面上根据反射向量和视向量计算法向量 也即球面点 根据球面点计算纹理坐标进行采样贴图 2 反射贴图 根据1计算反射向量 以反射向量计算纹理坐标进行采样贴图 3 法线贴图 直接根据法
  • vb 字符串截取 资料 搜集

    1 ASC X Chr X 转换字符字符码 格式 P Asc X 返回字符串X的第一个字符的字符码 P Chr X 返回字符码等于X的字符 2 Len X 计算字符串X的长度 格式 P Len X 说明 空字符串长度为0 空格符也算一个字符
  • yolov5网络结构学习

    注 原文链接是深入浅出Yolo系列之Yolov5核心基础知识完整讲解 我觉得这篇文章写的很好 所以自己手敲了一遍 并修改了很小一部分的细节 或者加了一些来自作者另一篇文章深入浅出Yolo系列之Yolov3 Yolov4 Yolov5核心基础
  • Go(十三)Error接口和错误处理

    Go 语言中的错误处理与其他语言不太一样 它把错误当成一种值来处理 更强调判断错误 处理错误 而不是一股脑的 catch 捕获异常 目录 Error 接口 Error 接口 创建错误 fmt Errorf 错误结构体类型 Error 接口
  • 图像处理+边缘检测算法

    一 边缘检测算子类别 常见边缘检测算子 Roberts Sobel Prewitt Laplacian Log Marr Canny Kirsch Nevitia 二 一阶微分算子 Roberts Sobel Prewitt Robert算