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

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

3天内不再提示

Canny边缘检测算法可以改进的地方做一些讨论

Dbwd_Imgtec 来源:lq 2018-12-22 12:08 次阅读

传统的Canny边缘检测算法是一种有效而又相对简单的算法,可以得到很好的结果。但是Canny算法本身也有一些缺陷,可以有改进的地方。

1. Canny边缘检测第一步用高斯模糊来去掉噪声,但是同时也会平滑边缘,使得边缘信息减弱,有可能使得在后面的步骤中漏掉一些需要的边缘,特别是弱边缘和孤立的边缘,可能在双阀值和联通计算中被剔除。很自然地可以预见,如果加大高斯模糊的半径,对噪声的平滑力度加大,但也会使得最后得到的边缘图中的边缘明显减少。这里依然用Lena图为例,保持Canny算法中高阀值 100 ,低阀值 50 不变,高斯半径分别为 2,3,5 的Canny边缘二值图像如下。可知高斯模糊把很多有用的边缘信息也模糊掉了,因此如何精确的选择高斯半径就相当重要。

高斯半径2

高斯半径3

高斯半径5

2. 在最初的Canny算法中是使用的最小的 2 x 2 领域来计算梯度幅值的。这种方法对噪声很敏感,比较容易检测到伪边缘或漏掉真是边缘。

3. 传统Canny算法的双阀值是全局固定的,因此双阀值大小的选取对最终的结果影响很大,也有一些经验,比如选择低阀值是高阀值的 0.4 或 0.5 。然而这毕竟是一种经验选择,阀值的确定仍然很难决定一个最优值。而且一个图像的不同局部区域可能需要各不相同的阀值来精确地找到真实边缘,因此全局阀值就不太合适了。

4. 传统算法仍然可能产生一条宽度大于 1 的边缘,达不到满意的高精度单点响应。也就是需要继续细化边缘。

下面就一些可以改进的地方做一些讨论。

代替高斯模糊

噪声是高频信号,边缘信号也属于高频信号。既然高斯模糊不加区分的对所有的高频信息进行了模糊,效果自然不尽如人意。那么自然就想到了带有保留边缘功能的各种选择性平滑方法,似乎在这里比高斯模糊会更加合适,那我们就来试一试。带有保留边缘功能的平滑方法的基本思想不是让领域范围内的所有像素都参与该种平滑方法的计算,而是设定一个阀值,仅仅让和中心像素灰度的差值小于这个阀值的像素参与计算。这样和中心像素相差过大的像素被认为是带有有效的信息,而不是噪声,不会参与平滑计算,从而保留了这些有用的高频信号,那么边缘信号自然也在保留的范围。具体的算法可以参考这篇文章http://www.cnblogs.com/Imageshop/p/4694540.html,已经讲得很清楚了。无论是均值平滑,中值平滑,表面模糊,都可以参考这种算法来实现选择性模糊。

应用有保留边缘的选择性模糊来代替高斯模糊后,可以发现,模糊领域的半径值基本影响不了Canny检测的结果,最后的结果只跟选择模糊设定的阀值有关。下面以均值模糊为例,Canny检测的高阀值 100 低阀值 50 不变,均值模糊阀值 30 ,不同模糊半径的结果。在均值模糊阀值不变的情况下,不同领域半径下,最后的结果差别不大。

均值模糊半径2,阀值30

均值模糊半径5,阀值30

均值模糊半径15,阀值30

均值模糊半径5,阀值40

均值模糊半径5,阀值50

相对于高斯模糊,在相同半径下,可以看出应用有保留边缘功能的选择性模糊,明显能保留了更多的边缘细节,使得很多相对较弱的边缘得意保留下来了。我另外还实验了选择性的中值模糊,表面模糊,他们和选择性的均值模糊都能达到类似的效果。这里就不一一列举结果了。其中选择性的表面模糊,因为中心像素的权重高,最后Canny检测结果在参数相同的情况下,保留的边缘相对较多一些。总的来说,应用有保留边缘功能的选择性模糊来代替高斯模糊,参数的选择(领域半径和阀值门限)不像高斯模糊半径参数选择那么严格,所以检测结果更稳定一些。但是参数要多了一个。

梯度算子选择

对于算法中梯度的计算,梯度算子可以有多种选择。我试了一下,如果用一阶梯度算子,Robert交叉算子,他们都是 2 x 2 的算子,来代替Sobel,保持高斯模糊半径 2,高阀值 100 低阀值 50 不变,结果如下。要注意的是,由于一阶梯度算子和Robert算子都是 2 x 2 的算子,他们算出来的梯度在幅度上都要小于Sobel算子。即使用同样的高低阀值,最后的结果也不具有可比性。因此,参照Sobel算子的幅度,2 x 2 算子的 x,y 方向梯度都乘以相应地倍数(4倍),最后进行比较。

一阶差分Canny二值图

Robert交叉梯度Canny二值图

Sobel算子Canny二值图

可以看到,一阶差分最后的结果在边缘的连通性上是最差的,Robert算子要好一些,Sobel算子最好。在这几种选择当中,似乎Sobel算子是最好的选择。另外还可以使用Prewitt算子和 5 x 5 Sobel算子。Prewitt算子也是 3 x 3 的,仅仅参数不同,在平滑性能上略微不如Sobel算子。一般来说,比如在Lena图上,Canny边缘结果和用Sobel算子的结果差别不大。5x5Sobel算子在平滑性能上要更强一些。

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

    关注

    23

    文章

    4457

    浏览量

    90761
  • 边缘检测
    +关注

    关注

    0

    文章

    91

    浏览量

    18105
  • Canny
    +关注

    关注

    0

    文章

    14

    浏览量

    9677

原文标题:Canny边缘检测算法的一些改进

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

    用DM642开发板canny边缘检测算法(附CCS源码

    本帖最后由 mr.pengyongche 于 2013-4-30 02:24 编辑 用DM642开发板canny边缘检测算法(附CCS源码),如果需要其他的相关资料大家
    发表于 03-31 14:50

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

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

    图像边缘检测算法体验步骤(Photoshop,Matlab)

    图像边缘检测算法体验步骤(Photoshop,Matlab)1. 确定你的电脑上已经安装了Photoshop和Matlab2. 使用手机或其他任何方式,获得张彩色图像(任何格式),建议图像颜色丰富
    发表于 03-06 10:51

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

    会引起边缘强度的损失,增强图像边缘可以弥补损失,但增强边缘和降低噪声之间需要折衷。在边缘检测算法
    发表于 09-21 11:45

    分享款高速人脸检测算法

    集与MTCNN算法的准确率相当,可以应用将该算法部署在边缘设备,进行人脸识别算法进行整体算法提速
    发表于 12-15 07:01

    一种改进的数学形态学边缘检测算法

    针对传统数学形态学边缘检测算法存在的边缘分辨率较低、低强度边缘保护能力较差等问题,提出一种改进的数学形态学
    发表于 04-23 09:15 19次下载

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

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

    基于Canny算法改进Kirsch人脸边缘检测方法

    针对Kirsch边缘检测算法的不足,提出了一种基于Canny算法改进的Kirsch人脸边缘
    发表于 02-23 14:31 10次下载

    医学图像边缘检测算法的研究

    边缘检测是医学图像处理中非常重要的一个环节,通过对几种经典边缘检测算法的分析,提出了一种基于Canny算子的
    发表于 07-05 16:50 15次下载

    基于Canny检测算法实现的目标跟踪

    为了设计一种实时高效、稳定可靠的图像目标跟踪系统平台,避免因图像边缘提取效果差而引起跟踪失败,采用自适应Canny边缘检测算法。该自适应算法
    发表于 03-05 16:14 38次下载
    基于<b class='flag-5'>Canny</b><b class='flag-5'>检测算法</b>实现的目标跟踪

    基于改进Canny的图像边缘检测算法

    图像边缘是计算机理解图像的重要特征之一。在数字图像中,边缘就是相邻的具有显著不同特征区域间的分界线。在机器视觉领域,对边缘检测算法进行了深入的研究,得到了各种针对不同领域图像的
    发表于 11-02 15:15 19次下载
    基于<b class='flag-5'>改进</b><b class='flag-5'>Canny</b>的图像<b class='flag-5'>边缘</b><b class='flag-5'>检测算法</b>

    Robinson边缘检测算法

    传统的Canny边缘检测算子是一种含有最优化思想的算子,它具有较高的检测精度,可以达到单像素级,但是因为它本身对噪声比较敏感,所以需要先利用
    发表于 12-01 14:13 0次下载

    canny算子的语法原理分析

    Canny算子Canny边缘检测算子是JohnF.Canny于1986年开发出来的一个多级边缘
    发表于 12-18 17:55 8572次阅读
    <b class='flag-5'>canny</b>算子的语法原理分析

    关于边缘检测算子的实现原理

    Canny 边缘检测算法 是 John F. Canny 于 1986年开发出来的一个多级边缘检测算法
    的头像 发表于 01-05 11:41 1094次阅读