计算机视觉理论笔记 (5) - 边缘检测 (Edge Detection)

2023-11-12

总览

我们通过分析亮度或颜色的突然变化(sudden variations of brightness or colour)来分离对象。通过分析单个对象,其组成和相互作用(composition and interaction)来分析图像内容。要分析对象,必须将对象与背景分开。

对象分离(object seperation) 是一个复杂的过程,但是它基于两个基本原理:

  • 检测的不连续性 discontinuities (亮度 luminance 或颜色 colour)
  • 相似性识别 (identification of similarity)

在这里插入图片描述

边缘(edges)

边缘是图像中亮度 (illuminance) 不连续 (discontinuity) 的位置。
在这里插入图片描述

基于梯度 (gradient)的边缘检测

亮度突然变化的区域在水平或者垂直方向上(或同时在这两个方向上)具有较大的梯度大小(large magnitude of the gradient)。
在这里插入图片描述
在这里插入图片描述
(x,y)处的边缘方向 (direction of edge) 垂直 (perpendicular) 于该点处的梯度方向 (direction of gradient)。以下是求点的梯度,点的梯度大小(垂直和水平),梯度方向的方法。
在这里插入图片描述

检测不连续性(detection of discontinuities)

1D

通过测量梯度并将其与阈值threshold相比较来检测不连续区域。梯度本质上是在一个方向上计算的导数(derivative)。由于图像是数字化序列 (digitised sequences),因此可以通过常用的数字微分器 (digital differentiator) 来计算导数。
在这里插入图片描述

2D

由于图像是二维序列,因此可以通过使用2D微分器 (2D differentiator) 对图像进行卷积 (convoluting) 来测量梯度。
在这里插入图片描述
每个梯度算子(gradient operator)产生的输出在每个位置与该位置的导数成比例(proportional)。对角梯度 (diagonal gradients) 对两个算子都会造成影响,但程度较小。两个算子的输出合并为单个梯度强度值(magnitude)。
在这里插入图片描述

梯度强度阈值 (threshold)

梯度强度在物体边缘拥有最大值。亮度均匀(uniform luminance)的区域(无论其绝对值absolute value 如何),其梯度强度都很低。物体内部的亮度变化也会产生较大的幅度,这可能会被误认为物体的边缘。因此,我们可以通过适当地选择 阈值(threshold) 来丢弃 通过物体亮度变化而产生的 梯度强度。
在这里插入图片描述
在这里插入图片描述

噪声影响

白噪声 (white noise) 会导致平滑区域 (smooth areas) 中图像亮度的随机突然变化 (random sudden variation),从而产生假点 (false dot) 和断线 (disconnected lines)。
因此,如果图像受噪声影响,则应该在执行边缘检测之前将其抑制 (suppressed)。
在这里插入图片描述
一些具有较大内核 (larger kernels) 的算子将微分(differentiation)和平滑相结合,可以减少噪声的影响。
在这里插入图片描述

其他算子(不同核)

在这里插入图片描述

一些研究结果建议将对角线边缘检测内核(diagonal edge detection kernels)与垂直和水平内核同时使用。
在这里插入图片描述

基于零交叉(zero-crossing)的边缘检测

更高阶的导数

在这里插入图片描述
能注意到,二阶导数在每个边的位置都有零交叉(zero-crossing)。
二阶导数能够被拉普拉斯算子 (Laplacian kernel) 来近似。
在这里插入图片描述
经过Laplacian滤波之后,位于两次拾取(double picks)之间的零交叉必须被检测。
Laplacian算子的其他数字近似:
在这里插入图片描述
Laplacian内核对噪声令人无法接受地敏感。同时,Laplacian内核对边缘方向不敏感,即它无法检测到边缘方向。由于其对噪声的敏感性,Laplacian算子总是与平滑处理 (smoothing) 结合在一起,这作为前驱操作 (precursor) 在通过零交叉找到边缘之前进行。

Laplacian of a Gaussian (LoG)

一个典型的平滑是对内核进行高斯平滑(Gaussian smoothing)。
在这里插入图片描述
对于给定图像 f(x, y):
在这里插入图片描述
而因为二阶导数是一个线性操作,公式可以化为:
在这里插入图片描述
LoG可以近似为以下算子:
在这里插入图片描述
Laplacian of Gaussian 可以通过两个不同的 Gaussian算子 之间的差来近似。
在这里插入图片描述
在这里插入图片描述

边缘细化和链接(edge thinning and linking)

通常我们对使用 Sobel 和 Prewitt 算子计算出来的梯度进行阈值筛选而检测到的边缘通常是带有多个像素 (multiple pixels) 并且由于噪声而是破碎的(broken due to noise)。
因此,我们在许多视觉任务中,都需要细化 (thinning) 边缘(将其转化为单像素边缘 one pixel edge)以及跟踪并链接像素点(tracing and linking)。

边缘链接 (edge linking)

对于每个边缘像素,考虑其本地邻点区域,如 3 x 3 或者 5 x 5。
如果满足以下条件,则应该链接两个边缘像素(x, y)和(x0, y0)。
在这里插入图片描述
在这里插入图片描述
当我们选择了E = 25, A = 15° 并应用在水平和垂直的边缘时效果如上图。(E 梯度强度阈值,A 梯度方向阈值)

Canny边缘检测 (Canny edge detector)

Canny边缘检测器是最常用的边缘检测器之一。该方法结合了边缘检测,细化,跟踪和链接。
通常Canny的输入是Sobel滤波的结果,先进行高斯平滑,然后在图像的x和y轴上分别使用Sobel进行滤波,并且得到了点的梯度强度和方向。
方法使用了高斯导数(derivative of Gaussian)。

非最大抑制(non-maximum suppression)

将多像素宽的边细化为单像素宽度。
在这里插入图片描述
选择边缘宽度上的单个最大点作为单像素边缘点。

链接和阈值

低,高边缘强度阈值。
接受到连接到高阈值边缘的所有低阈值边缘。
在这里插入图片描述
假设标记点q是边缘点。在该点取梯度的法线 (normal),并用它来预测连续点(r或者p)。
在这里插入图片描述
Edge Hysteresis: 边缘迟滞是一种效果的滞后现象,是一种惯性。在阈值化的环境中,如果某个低阈值以上的区域连接到了更高阈值以上的区域,则认为他们高于该低阈值。
方法:保持两个阈值 k_high 和 k_low。(通常满足,k_high / k_low = 2)
使用k_high来查找强边缘以开始边缘链。高于k_high的一定是边缘。
使用k_low来查找边缘链的弱边缘。低于k_low的点一定不是边缘。低于k_high 并高于 k_low 的点,则根据该点是不是和强边缘点相连来决定其是否边缘点。

示例过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于边缘的对象提取

  1. 进行高斯平滑(Gaussian smooth),参数选择 σx, σy。若大,容易检测到大规模边缘,若小,容易检测到精细特征。(根据具体需求而定)
  2. 进行canny边缘检测,参数选择 k_high, k_low。过高的阈值可能会损失细节,过低的阈值可能会引入噪声。
  3. 提取对象的轮廓。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机视觉理论笔记 (5) - 边缘检测 (Edge Detection) 的相关文章

  • 仅需一个样本即可定制个性化的SAM

    Personalize Segment Anything Model with One Shot https arxiv org pdf 2305 03048 pdf https github com ZrrSkywalker Person
  • 区域生长算法及其实现

    区域生长算法及其实现 背景 前面我们已经介绍了 最大熵分割法 OTSU算法 他们都有各自的优缺点 通常都不是单独使用这些算法 需要和其它算法来结合使用 前面两类算法都是单独对图像的灰度信息进行处理 不包含图像的空间信息 而区域生长算法则包含
  • 【论文阅读】learning with noisy correspondence for cross-modal matching ------ 跨模态匹配,噪声对应

    注意 本博客非逐字逐句翻译论文 是作者阅读论文后根据自己的理解所写 预知论文详情 请参阅论文原文 论文标题 Learning with Noisy Correspondence for Cross modal Matching 作者 Zhe
  • 毕业设计-基于机器视觉的数字图像处理技术研究-OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 基于OpenCV数据库的程序环境构建 二 基于OpenCV的图像技术处理 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕
  • Opencv学习笔记(三)线性及非线性滤波

    大纲 1 滤波综述 2 方框滤波 3 均值滤波 4 高斯滤波 5 中值滤波 6 双边滤波 一 滤波综述 图像的滤波指的是在尽量保证图像细节特征的的情况下对图像中的噪声进行抑制 又因为图像的能量大部分集中在低频或者中频的区域 图像大部分区域是
  • 深度学习2015年文章整理(CVPR2015)

    国内外从事计算机视觉和图像处理相关领域的著名学者都以在三大顶级会议 ICCV CVPR和ECCV 上发表论文为荣 其影响力远胜于一般SCI期刊论文 这三大顶级学术会议论文也引领着未来的研究趋势 CVPR是主要的计算机视觉会议 可以把它看作是
  • python人脸识别(转载)

    源码出处 http www cnblogs com AdaminXie 该项目笔记是基于下面博客的摘抄 Python 3 利用 Dlib 实现摄像头实时人脸识别 coneypo 博客园 cnblogs com Python 3 利用 Dli
  • 人体姿态估计算法

    人体姿态估计算法 1 什么是人体姿态估计 2 基于经典传统和基于深度学习的方法 2 1 基于经典传统的人体姿态估计算法 2 2 基于深度学习的人体姿态估计算法 OpenPose AlphaPose RMPE
  • 工业相机与镜头选型方法(含实例)

    一 相机介绍及选型方法 1 工业相机介绍 工业相机与我们手机上面的相机或者我们单反相机不同 工业相机它能够使用各种恶劣的工作环境 比如说高温 高压 高尘等 工业相机主要有面阵相机和线阵相机 线阵相机主要用于检测精度要求很高 运动速度很快的场
  • 软件测试/人工智能丨常见的计算机视觉的业务场景有哪些?计算原理和测试指标

    计算机视觉在各种业务场景中都有广泛的应用 以下是一些常见的计算机视觉的业务场景 以及与之相关的计算原理和测试指标 图像识别和分类 业务场景 识别图像中的对象 场景或模式 如物体识别 人脸识别 计算原理 使用卷积神经网络 CNN 等深度学习模
  • 大语言模型:开启自然语言处理新纪元

    导言 大语言模型 如GPT 3 Generative Pre trained Transformer 3 标志着自然语言处理领域取得的一项重大突破 本文将深入研究大语言模型的基本原理 应用领域以及对未来的影响 1 简介 大语言模型是基于深度
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 什么是“人机协同”机器学习?

    人机协同 HITL 是人工智能的一个分支 它同时利用人类智能和机器智能来创建机器学习模型 在传统的 人机协同 方法中 人们会参与一个良性循环 在其中训练 调整和测试特定算法 通常 它的工作方式如下 首先 对数据进行人工标注 这就为模型提供了
  • 友思特分享 | CamSim相机模拟器:极大加速图像处理开发与验证过程

    来源 友思特 机器视觉与光电 友思特分享 CamSim相机模拟器 极大加速图像处理开发与验证过程 原文链接 https mp weixin qq com s IED7Y6R8WE4HmnTiRY8lvg 欢迎关注虹科 为您提供最新资讯 随着
  • 图像分割-Grabcut法

    版权声明 本文为博主原创文章 转载请在显著位置标明本文出处以及作者网名 未经作者允许不得用于商业目的 本文的C 版本请访问 图像分割 Grabcut法 C CSDN博客 GrabCut是一种基于图像分割的技术 它可以用于将图像中的前景和背景
  • 文档扫描与矫正-仿射变换

    图像变换是计算机视觉和图像处理中的关键技术之一 它允许我们对图像进行各种形式的变形 调整和校正 其中 仿射变换是一种常见的变换方式 在文档扫描过程中 由于拍摄角度和畸变等原因 文档图像可能存在一定程度的形变 仿射变换可以用于校正文档图像 使
  • 【图像融合】基于联合双边滤波和局部梯度能量的多模态医学图像融合研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 图像 文章
  • 作物叶片病害识别系统

    介绍 由于植物疾病的检测在农业领域中起着重要作用 因为植物疾病是相当自然的现象 如果在这个领域不采取适当的护理措施 就会对植物产生严重影响 进而影响相关产品的质量 数量或产量 植物疾病会引起疾病的周期性爆发 导致大规模死亡 这些问题需要在初
  • 回望计算机视觉会议ICCV的31年

    作者 原野寻踪 编辑 汽车人 原文链接 https zhuanlan zhihu com p 670393313 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 本文只做

随机推荐

  • Mac下使用Xcode的freopen读取输入输出

    很多使用Mac的小伙伴都知道 类似于win或者linux系统下的直接freopen是不行的 或者说强制读入也是不可的 于是 就是去想办法去读入它了 那么怎么读文件和写文件呢 创建 txt 文件 找到文本编辑 点击新建文稿 但是发现 怎么是这
  • 我要自学网视频教程ajax,这么逆天的自学网站,还是第一次见,难怪考不上清华北大...

    原标题 这么逆天的自学网站 还是第一次见 难怪考不上清华北大 有很多朋友 工作了N年之后 工资一直不涨 其实就是没有找到正确的方法 这个时候呢 我们就需要用到一些非常好用的自学网站 去帮助自己在所在的领域进行充电啦 首选的当然就是下面几个啦
  • Servlet 的应用程序设计

    目录 1 基于 Servlet Controller 的应用程序设计 2 基于 Filter Dispatcher 的应用程序设计 3 使用表单验证器 4 添加数据库访问 5 依赖注入 在该模型中 用一个 Servlet 或者过滤器充当控制
  • Flex中字符串String按照格式转化为日期Date的方法

    在Flex中 要通过传入时间的字符串和格式字符串的方式来转换出Date Flex本身没有完善的方法 不知道Adobe在想什么 这么简单实用的功能都没有 回想起来 还是java神马的好 在网上找了好久都没有完善的解决方案 最后偶然发现Date
  • cout << 输出格式突然变成了16进制

    1 背景 在工程中 我通过cout打印一个被频繁调用的函数里面某个参数的值 在前面若干次调用中 cout lt lt 工作正常 是打印的10进制 突然 不清楚什么原因 就开始打印16进制的值 而且是不加0x的16进制 导致我一直以为是10进
  • 力扣:338. 比特位计数

    给你一个整数 n 对于 0 lt i lt n 中的每个 i 计算其二进制表示中 1 的个数 返回一个长度为 n 1 的数组 ans 作为答案 示例 1 输入 n 2 输出 0 1 1 解释 0 gt 0 1 gt 1 2 gt 10 示例
  • 枪神纪紫霄系列服务器,枪神纪紫霄左轮枪简测评

    枪神纪最新的新年红包武器紫霄左轮枪上线 小编这就给各位玩家带来 枪神纪紫霄左轮枪武器测评 枪神纪紫霄左轮枪怎么样 红包武器 紫霄左轮枪 面板 面板伤害比重击左轮高出10点伤害 穿甲多出65 稳定高出20 便携高6 外观 简直和这皮肤是一套的
  • Mac M1 安装配置TensorFlow-GPU

    在Mac上安装了TensorFlow 但是import Tensorflow时却一直显示TensorFlow不存在 看了各种安装方法 最后终于成功了 进入正题 直接进官网 根据苹果官方给的安装方法进行安装 https developer a
  • Windows下安装 Redis

    目录 1 下载 1 1 Redis官网 1 2 github下载地址 2 安装步骤 2 1 解压Redis压缩包 2 2 创建临时服务 2 3 启动客户端 2 4 注册Redis服务 3 总结 4 致谢 1 下载 1 1 Redis官网 D
  • python linux系统巡检脚本

    使用python 实现linux 系统巡检远程获取系统资源情况 导出为excel表格 背景 因为服务器很多 刚开始一台一台手动巡检 效率很低 于是我想能不能写个工具实现一劳永逸 于是我想到了python python 具有丰富的类库 且语言
  • Arduino安装ESP32下载失败的解决方法

    Arduino安装ESP32时 经常下载失败 解决办法 1 复制命令行中的提示信息到记事本 找到下载地址 2 打开浏览器 在地址栏中贴粘下载地址 回车开始下载 3 将下载的包复制到C Users Administrator AppData
  • 《Cesium 基础知识点》- 申请 Cesium Ion 密钥

    一 为什么要申请 学习 链接 Cesium ion是一个提供瓦片图和3D地理空间数据的平台 Cesium ion支持把数据添加到用户自己的应用程序中 Cesium ion的使用需要申请access token 申请成功后 就能畅快的访问Ce
  • Pandas 中DataFrame的groupby()计数、groupby()取样及reset_index()的使用

    什么是groupby 以下为对DataFrame对象按A进行分组操作 图片来源 内容 目的 DataFrame对象按照指定列 LNG LAT 分组计数 并将分组计数结果 包括指定列及计数值 写入csv文件中 过程 代码一 import pa
  • python中line的意思_关于python代码,line[:-1]的意思

    line 1 其实就是去除了这行文本的最后一个字符 换行符 后剩下的部分 line abcde line 1 结果为 abcd line abcde line 1 结果为 edcba 扩展资料 1 先定义一个array数据 1 import
  • Http 状态码

    常见HTTP状态码大全1xx 临时响应 表示临时响应并需要请求者继续执行操作的状态代码 代码 说明http状态码 100 继续 请求者应当继续提出请求 服务器返回此代码表示已收到请求的第一部分 正在等待其余部分 http状态码 101 切换
  • org.springframework.beans.factory.BeanCreationException的问题所在!!

    今天一不小心弄出的小问题 严重 Exception sending context initialized event to listener instance of class org springframework web contex
  • 记录一次iPhone5s的iCloud bypass经历

    之前成功过一次 使用的是checkra1n v0 9 5 越狱成功后 使用ssh连接手机 执行以下几个命令 正在挂载根目录文件系统为读写 bash 3 2 mount o rw union update bash 3 2 echo gt g
  • C语言:选择+编程(每日一练Day3)

    目录 选择题 题一 题二 题三 题四 题五 编程题 题一 记负均正 思路一 题二 旋转数组的最小数字 思路一 选择题 题一 1 已知函数的原型是 int fun char b 10 int a 设定义 char c 10 int d 正确的
  • Centos7部署MySQL主从复制

    一 准备 1 准备两台服务器 如果本地测试 准备两台虚拟机 2 两台服务器上安装相同的mysql数据库 3 我这里准备两台虚拟机演示 192 168 21 102 主机 192 168 21 105 从机 4 在两台mysql数据库分别创建
  • 计算机视觉理论笔记 (5) - 边缘检测 (Edge Detection)

    边缘检测 Edge Detection 总览 边缘 edges 基于梯度 gradient 的边缘检测 检测不连续性 detection of discontinuities 1D 2D 梯度强度阈值 threshold 噪声影响 其他算子