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

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

3天内不再提示

Canny双阈值边缘检测和弱边缘连接详解

FPGA开源工坊 来源:FPGA开源工坊 2023-11-18 17:07 次阅读

在上一篇FPGA图像处理--Canny边缘检测(一)里介绍了Canny边缘检测的NMS计算,这里就介绍一下双阈值边缘检测和弱边缘连接。

双阈值检测顾名思义就是要有两个阈值,在Sobel中只有一个阈值,这样就可能带来一些潜在的问题,比如阈值设置过低导致检测出来的边缘很多,或者设定的过高导致检测出来的边缘比较少。

在Canny中引入了双阈值检测,也就是定义一个高阈值和一个低阈值。当边缘的幅值大于高阈值的时候就认为这个边缘是一个强边缘,低于低阈值的时候就认为他不是边缘,而在高阈值和低阈值之间的值被认为是弱边缘。通过后面的弱边缘连接就可以让弱边缘有可能被识别为边缘,也有可能被忽视掉。从而带来更好的检测效果。

我们来看一下Python的参考模型:

f09d474a-85e7-11ee-939d-92fbcf53809c.png

这里定义了一个函数来处理双阈值的问题,当像素的值大于等于高阈值的时候就设置当前像素为255,介于低阈值和高阈值之间的值设置为127,小于低阈值的值设置为0,这个就很简单了。

我们来看一下效果吧。

可以看到边缘信息都被很好的检测出来了,但是有的边缘是断断续续的,这个时候就需要使用弱边缘连接了。

最理想的弱边缘连接肯定是做一遍深搜,但是这个对于资源消耗太大了,那么我们就退而求其次,如果一个点是弱边缘的话,只要他周围八个点里面有一个是强边缘,那么我们就把这个点变为强边缘。是不是很简单。

来看看Python的参考模型:

f0cb11e8-85e7-11ee-939d-92fbcf53809c.png

只要当前值是127也就是我们在第一步中分离出来的弱边缘,然后做一个判断,判断他周边有没有强边缘,来决定是否将其变为强边缘点。

我们来看一下做了一次弱边缘连接的效果:

大家注意看红色框里面的这部分,可以看到一部分边缘相对于之前已经连接了起来。

如果我们多做几次弱边缘连接效果肯定会更好,不过与之带来的就是计算成本的增加。

f0f58c0c-85e7-11ee-939d-92fbcf53809c.png

这里通过一个循环来控制做弱边缘连接的次数。

来看一下弱边缘连接改为五次的效果,可以看到效果比之前更好一点。

再来看一下不做高斯模糊的效果,可以看到有很多的噪点:

最后来展示下所有的效果图,分别是原图,sobel,nms,canny后的结果:

参考模型到这里就介绍完毕了,之后就是用Verilog来实现它。

审核编辑:汤梓红

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

    关注

    26

    文章

    1224

    浏览量

    55824
  • 边缘检测
    +关注

    关注

    0

    文章

    91

    浏览量

    18105
  • Canny
    +关注

    关注

    0

    文章

    14

    浏览量

    9677
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467

原文标题:FPGA图像处理--Canny边缘检测(二)

文章出处:【微信号:FPGA开源工坊,微信公众号:FPGA开源工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于Canny边缘检测算子的图像检索算法

    【摘要】:针对依赖传统Canny算子的基于边缘的图像检索系统所存在的不足,提出一种基于Canny边缘检测的图像检索算法。使用改进的
    发表于 04-24 10:03

    canny算法的具体程序

    求助canny算法的具体步骤程序啊,老师不让直接使用canny函数,不会啊,泪奔。步骤如下:1.用高斯滤波器平滑图像.2.用一阶偏导有限差分计算梯度幅值和方向.3.对梯度幅值进行非极大值抑制.4.用
    发表于 09-29 22:52

    【DragonBoard 410c试用体验】之OpenCV中canny算子边缘检测

    方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测Canny 算子的目标是找到一个最优的边缘检测算法,让我们看一下最优
    发表于 09-11 23:24

    关于canny算子边缘检测的问题

    本帖最后由 豆吖豆 于 2017-4-4 23:14 编辑 grd=edge(Egray,'canny',0.09,'both');大神门 问一下这个后面的0.09和both什么意思是指的是Egray图像的上下大小还是,另外可以的话能大概说说这个canny
    发表于 04-04 22:27

    基于Qualcomm FastCv的边缘检测算法详解

    Canny,Laplacian,Log 以及二阶方向导数等算子检测法。1.边缘检测在图像中,边缘是图像局部强度变化最明显的地方,它主要存在
    发表于 09-21 11:45

    图象处理中的哈夫变换和Canny边缘检测算法

    图象处理中的边缘检测------canny算子
    发表于 03-16 06:48

    Labview图像处理——边缘检测

    ,能够检测到真正的边缘。优点在于,使用两种不同的阈值分别检测边缘
    发表于 12-01 12:16

    边缘检测的几种微分算子

    一、边缘检测边缘检测的几种微分算子:一阶微分算子:Roberts、Sobel、Prewitt二阶微分算子:Laplacian、Log/Marr非微分算子:
    发表于 07-26 08:29

    Canny边缘检测器的详细介绍以及Pytorch实现

    Canny滤波器当然是最著名和最常用的边缘检测滤波器。我会逐步解释用于 轮廓检测canny滤波器 。因为
    发表于 11-04 11:59

    国产嵌入式实验箱操作教程_创龙教仪:5-12 边缘检测(LCD显示)

    一、实验目的 学习Canny边缘检测的原理,掌握图像的读取方法,并实现在LCD上显示边缘检测前后的图像。 二、实验原理
    发表于 12-14 14:09

    基于Canny边缘检测算子的图像检索算法

      针对依赖传统Canny算子的基于边缘的图像检索系统所存在的不足,提出一种基于Canny边缘检测的图像检索算法。使用改进的
    发表于 02-11 11:22 28次下载

    canny边缘检测

    《OpenCV3编程入门》书本配套源代码canny边缘检测
    发表于 06-06 15:20 2次下载

    使用iVeia视觉套件进行Canny边缘检测HLS IP

    iVeia使用嵌入式世界2015中的iVeia视觉套件演示了Canny边缘检测HLS IP
    的头像 发表于 11-30 06:41 2685次阅读

    什么是边缘检测边缘检测的算法由来

    在这篇文章中,我们将学习如何在OpenCV中使用基于深度学习的边缘检测,它比目前流行的canny边缘检测器更精确。
    的头像 发表于 03-12 10:00 8070次阅读

    python中用Canny边缘检测和霍夫变实现车道线检测方法

    Canny边缘检测+霍夫变换 颜色阈值+图像掩模的方法虽然简单,但是只能应对一些固定颜色车道线的场景。图像像素受光照影响将是一个极其常见的问题。 c
    的头像 发表于 11-17 16:55 302次阅读
    python中用<b class='flag-5'>Canny</b><b class='flag-5'>边缘</b><b class='flag-5'>检测</b>和霍夫变实现车道线<b class='flag-5'>检测</b>方法