0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器视觉学习—边缘检测

新机器视觉 来源:新机器视觉 2023-02-14 10:13 次阅读

前言

边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。有许多方法用于边缘检测,它们的绝大部分可以划分为两类:

基于一阶导数

首先计算边缘强度, 通常用一阶导数表示, 例如梯度模,然后,用计算估计边缘的局部方向, 通常采用梯度的方向,并利用此方向找到局部梯度模的最大值。

即:图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。

一阶:Roberts Cross算子,Prewitt算子,Sobel算子, Kirsch算子,罗盘算子;

基于 零穿越/零交叉 的一类:二阶导数

基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是Laplacian过零点或者非线性差分表示的过零点。

基于二阶导数:Marr-Hildreth,在梯度方向的二阶导数过零点,Canny算子,Laplacian算子。

一、边缘检测

为什么要进行边缘检测呢?因为这是稳定的视觉特征,是人类经验的结果。边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。主要包括:

深度上的不连续(物体处在不同的物平面上);

表面方向不连续(如正方体的不同的两个面)

物质属性变化(会导致光的反射系数不同)

场景照明变化(阴影)

c554d590-ac0c-11ed-bfe3-dac502259ad0.png

那么,对于下面这张图像进行边缘检测时,沿着这条红色的水平线,得到其每个像素点上的强度(也就是灰度值),由此可知边缘就是在像素值发生突变的地方。那么如果从一个信号中找到突变的地方呢?

c5856d4a-ac0c-11ed-bfe3-dac502259ad0.png

c59588c4-ac0c-11ed-bfe3-dac502259ad0.png

显然,根据数学知识,对信号曲线进行求一阶导数,对于边缘来说,并不需要关注方向,只需要关注极值即可,所以可以通过求导得到边缘所在位置。

由此将这跟红色的水平线从上至下滑动即可得到整个图像的竖直方向上的边缘。

c5ac71c4-ac0c-11ed-bfe3-dac502259ad0.png

对于一个二元函数f(x,y) ,响应的的求导公式:

c5c656ac-ac0c-11ed-bfe3-dac502259ad0.png

在图像处理过程中,对于像素值的位置的最小单位是 1 px,因此令 ε=1 ,使用这种近似来作为点前位置的导数,则有:

c5d189a0-ac0c-11ed-bfe3-dac502259ad0.png

其实由这个公式可以看出,就是右面一个像素减去左面一个像素,作为当前位置的导数,这样简化之后其实就可以把这个过程使用卷积代替,即卷积核为:这就是检测竖直方向上边缘的卷积核。同理也可以得到水平方向上边缘的卷积核。

c5dd63ba-ac0c-11ed-bfe3-dac502259ad0.png

那么接下来举个例子,下面这两个边缘检测结果哪个是水平方向卷积核检测到的?

哪个是竖直方向卷积核检测到的?因为只有水平卷积核检测的是左右差异较大的像素值,自然而然连成线之后就是竖直方向的线条。

c5f00ba0-ac0c-11ed-bfe3-dac502259ad0.png

接下来,解释一下梯度(一维叫导数,高维叫梯度),对于一副图像的一个像素点

c61b1778-ac0c-11ed-bfe3-dac502259ad0.png

c62b83f6-ac0c-11ed-bfe3-dac502259ad0.png

c640f768-ac0c-11ed-bfe3-dac502259ad0.png

这个幅值越大说面这点附近像素值变化越剧烈,就越有可能是边缘。

其实梯度对于一副图像来说就是图像变化剧烈的方向。而且梯度方向与边缘是垂直的。

二、边缘检测流程

由于在实际应用过程中信号的采集往往伴随着噪声的出现,假设有下面这么一个一维信号,很显然边缘就在突变的地方。但是由于真实点附近存在噪声,如果直接使用边缘滤波器(边缘卷积)得到的结果会是什么样?

c652e3ce-ac0c-11ed-bfe3-dac502259ad0.png

c67a6822-ac0c-11ed-bfe3-dac502259ad0.png

显然,通过边缘检测器之后得到导数(梯度)是无法确定极大值极小值的,因此无法判断边缘位置。所以,往往在进行边缘检测前首先要进行滤波。

这是因为边缘检测算子主要是基于图像强度的一阶导数和二阶导数,但是通常情况下导数对噪声十分敏感,因此必须使用滤波器来进行平滑噪声。

c695cc48-ac0c-11ed-bfe3-dac502259ad0.png

因此对于一维图像f使用高斯卷积核 g进行滤波,通过将f*g(卷积)得到的结果可以看出,最左边和最右面为什么没了呢?这就是因为卷积过程中如果不对边界补充的话,卷积结果相比原来图像会小一圈。

经过高斯卷积之后的图像就相对平滑很多,在这个基础上再进行边缘检测,得到结果如下。很显然求极值就十分简单了。

c6c3cdfa-ac0c-11ed-bfe3-dac502259ad0.png

因此,我们在对图像进行边缘检测前首先用高斯卷积对图像进行平滑就是了,因为我们也无法确定图像是否包含噪声。

虽然上面这个过程实现了边缘检测,但是在这个过程中使用了两次卷积,首先是滤波过程的卷积,然后是求导过程的卷积,显然卷积是十分耗时的,那么能否使用一次卷积完成这个操作呢?

c6de783a-ac0c-11ed-bfe3-dac502259ad0.png

这个公式成立是因此卷积是满足交换律,结合律和分配率的。所以使用右面的公式,先对高斯卷积核进行求导,这个模板一般比较小,求导也相对简单,然后再进行卷积。这样就能加速运算过程了。

c6ec45d2-ac0c-11ed-bfe3-dac502259ad0.png

c746b292-ac0c-11ed-bfe3-dac502259ad0.png

虽然,使用平滑对图像进行去噪,但是它也会模糊图像,因此我们可以考虑在不同的scale下进行边缘检测。

也就是选择响应的窗宽和标准差即可对图像进行平滑并边缘检测,由于窗宽一般默认经验值3σ,因此只需要指定参数σ即可执行这两个过程。所以可以考虑使用不用的σ在不同的scale下进行边缘检测。

因此,接下来对比重新认识一下高斯卷积核与高斯一阶导数核的区别:

高斯卷积核(smoothing filters):高斯卷积实际上是滤除高频信号,是低通滤波器,滤波器模板中的数值没有负数,而且这些值相加和为1。

c76be7c4-ac0c-11ed-bfe3-dac502259ad0.png

高斯一阶导数核(derivative filters):滤波器模板中的数值一定有负数,而且这些相加为0。

c77b3972-ac0c-11ed-bfe3-dac502259ad0.png

总结一下,对于一副图像进行边缘检测的流程

滤波

增强,增强算法可以将图像灰度点邻阈强度值有显著变化的点凸显出来。

边缘检测,经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定应用中,这些点并不是要找的边缘点,所以应该采用某些方法对这些点进行取舍。实际工程中,常用的方法是通过阈值化的方法进行检测。

三、Canny边缘检测

c793980a-ac0c-11ed-bfe3-dac502259ad0.png

对于这样一张图像进行边缘检测时,首先第一步,对图像进行滤波处理,然后计算两个方向的梯度,先计算每个像素点的梯度,然后计算幅值,得到下面这张图像。

c7b00e22-ac0c-11ed-bfe3-dac502259ad0.png

在进行梯度计算时,梯度较大的地方可能是边缘也有可能是噪声,虽然已经进行过一次平滑滤波,但是仍然还会有一些高强度的噪声无法滤除,因此在这里选择使用阈值对其进行第二次过滤,去除一些梯度相对较小的点。

c7c7227e-ac0c-11ed-bfe3-dac502259ad0.png

然而经过阈值处理后,还是会有一些小问题,就是图像中的边缘会很宽,这是由于图像中的边缘像素值都是缓慢变化的,不会是一个垂直的突变,即使原始图像中的边缘是一个垂直的突变,经过高斯平滑之后它就会变得不那么垂直了,所以这就是为什么边会那么宽。那如何解决呢?

接下来就介绍了一个著名的算法:NMS非极大值抑制。它的一个主要思想就是,首先确定边上的一个点,然后沿着边的梯度方向比较跟相邻点的梯度进行比较,也即是右图中的q和Ρ,γ进行比较。如果 q 最大则保留,如果不是则舍去。

c80c6438-ac0c-11ed-bfe3-dac502259ad0.png

经过抑制以后:显然这就细化了很多,但是也会存在一定的问题,比如脖子下面的边缘消失了,出现了断断续续的情况,出现这种情况的原因是什么呢?

这是因为设置的阈值太高了,导致这部分梯度被滤除掉了,但是如果阈值设置的较低又会出现很多“假边”,因此这里需要对刚刚设置阈值过滤这一步进行改进。

c82b7d50-ac0c-11ed-bfe3-dac502259ad0.png

改进的思路:就是使用双阈值法,首先使用一个较高的阈值去将那些确定度较高的边检测出来,称为“强边”,然后再使用一个较小的阈值显露更多的边,称为“弱边”,此时选择保留那些跟强边有连接关系的边。这个想法就很巧妙。

c85b43b4-ac0c-11ed-bfe3-dac502259ad0.png

左边是高阈值,中间是低阈值,右边是双阈值

关于Canny边缘检测是有严格意义上的数学推导的,这个后续补充一下!

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器视觉
    +关注

    关注

    161

    文章

    4046

    浏览量

    118369
  • 边缘检测
    +关注

    关注

    0

    文章

    91

    浏览量

    18106
  • 数字图像
    +关注

    关注

    2

    文章

    117

    浏览量

    18631

原文标题:机器视觉学习—边缘检测

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    #硬声创作季 机器视觉技术与应用:基于微分的边缘检测

    机器视觉边缘检测
    Mr_haohao
    发布于 :2022年10月26日 15:12:17

    #硬声创作季 机器视觉技术与应用:canny边缘检测算子

    机器视觉边缘检测
    Mr_haohao
    发布于 :2022年10月26日 15:13:01

    [5.2.2]--基于微分的边缘检测

    机器视觉边缘检测
    学习电子知识
    发布于 :2022年11月25日 20:46:58

    机器视觉在布匹生产在线检测系统应用

    适合于快速实时地检测。布匹生产在线检测系统正是基于机器视觉的技术,快速高效的检测出布匹的颜色和存在的杂质。
    发表于 07-31 10:16

    机器视觉 --检测图像边缘小程序

    机器视觉 --检测图像边缘小程序
    发表于 08-23 21:35

    机器视觉表面缺陷检测技术

    结果的不精确。当今社会,随着计算机技术,人工智能等科学技术的出现和发展,以及研究的深入,出现了基于机器视觉技术的表面缺陷检测技术。这种技术的出现,大大提高了生产作业的效率,避免了因作业条件,主观判断等
    发表于 01-20 10:29

    机器视觉算法与应用(双语版)

    机器视觉算法与应用(双语版)》是一本关于机器视觉算法与应用的中英文对照版教材。是第一本有关机器视觉
    发表于 06-29 13:48

    机器视觉检测设备的优势

    `机器视觉检测是指通过机器视觉产品将被摄取目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号;图
    发表于 10-14 15:31

    深圳机器视觉检测项目包括哪些?

    目前机器视觉在智能制造、自动化领域的作用越来越重要,机器视觉检测技术的应用能更大程度地把关、提高产品质量、降低生产成本,
    发表于 11-11 10:07

    高性能的机器学习边缘计算更给力

    的自主学习能力战胜了围棋世界冠军柯洁。当然,AI发展的如此迅速,也与人类智慧的不断进步是密不可分的。利用机器学习(ML)等方面的技术,开发人员可以创建更丰富多样的应用,比如工业机器
    发表于 10-15 13:58

    基于机器视觉定位技术之产品边缘轮廓检测

    边缘是指图像局部亮度变化最显著的部分。边缘主要存在于目标与目标、目标与背景、区域与区域之间,是图像分割、纹理特征提取及形状特征提取和图像分析的基础。边缘检测
    的头像 发表于 04-14 16:18 1816次阅读

    探究机器视觉定位技术之产品边缘轮廓检测

    边缘是指图像局部亮度变化最显著的部分。边缘主要存在于目标与目标、目标与背景、区域与区域之间,是图像分割、纹理特征提取及形状特征提取和图像分析的基础。边缘检测
    的头像 发表于 04-19 09:38 1651次阅读

    OpenCV使用深度学习边缘检测的流程

    导读 分析了Canny的优劣,并给出了OpenCV使用深度学习边缘检测的流程。 在这篇文章中,我们将学习如何在OpenCV中使用基于深度学习
    的头像 发表于 05-08 11:05 1979次阅读
    OpenCV使用深度<b class='flag-5'>学习</b>做<b class='flag-5'>边缘</b><b class='flag-5'>检测</b>的流程

    什么是边缘学习

    所谓边缘学习即指“边缘深度学习”, 其是将基于规则的高效机器视觉嵌入到一套预先训练的深度
    的头像 发表于 10-20 09:31 2005次阅读

    机器视觉检测平台

    机器视觉检测平台 系统包含工业级智能机械手、机器视觉边缘处理终端、
    发表于 06-29 11:39 536次阅读