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

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

3天内不再提示

基于canny边缘检测算法有效解决检测边缘断裂问题

电子设计 来源:山西电子技术 作者:田秀荣 2020-08-06 09:12 次阅读

引言

边缘检测是图像处理中的重要内容。图像边缘是图像局部特性不连续性(灰度突变、颜色突变、纹理结构突变等)的反映,它标志着一个区域的终结和另一个区域的开始。在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去,同时它在图像识别、图像分割、图像增强以及图像压缩等领域中有较为广泛的应用。图像边缘检测的手段多种多样,大的框架有两种,一是传统的基于边缘检测算子的检测方法;另外一种是基于小波的多尺度边缘测算法。然而小波变换在用于处理图像时并不是最佳的,因为基于小波变换的图像边缘检测方法提取的边缘只具有有限的方向,而自然图像边缘的方向可能是任意的,因而小波边缘提取方法提取的边缘不能最佳地逼近图像边缘;传统的Robert、Sobel、Prewitt、Kirach和Laplacian算子对噪声较为敏感,在处理实际图像中效果并不理想。通过研究,本文提出了一种基于canny边缘检测算法,结合轮廓跟踪的方法,在物体边缘得到增强、对比度得到改善、噪声得到有效抑制的同时,很好地解决了使用传统的边缘检测算子在边缘检测过程中带来的检测边缘断裂的问题,从而能够保证检测到的边缘连续、单一、清晰,是一种实用的图像处理方法。最后把改进后的算法应用到实际医学图像边缘检测中,并与传统边缘检测算子的检测效果比较,从而得出结论。

1 Carmy算子的基本原理

1.1 平滑图像

Canny算子选用合适的一维高斯函数,分别按行和列对图像f(x,y)进行平滑去噪,这相当于对图像信号的卷积。所选的高斯函数为:

基于canny边缘检测算法有效解决检测边缘断裂问题

式中:σ为高斯曲线标准差,控制着平滑程度。

1.2 计算梯度的幅值和方向

Canny算子采用2×2邻域一阶偏导的有限差分来计算平滑后的数据阵列I(x,y)的梯度幅值和梯度方向。x和y方向偏导数的2个阵列Px[i,j]和Py[i,j]分别为:

基于canny边缘检测算法有效解决检测边缘断裂问题

像素的梯度幅值和梯度方向分别为:

1.3 获取边缘

为了提取单像素宽边缘,必须细化梯度幅值图。在梯度幅值图像中,M[i,j]的极大值所在位置附近会产生屋脊带,只有细化这些屋脊带才能精确地确定边缘的位置,仅保留幅值局部变化最大的点,这一过程叫做非极大值抑制。在非极大值抑制过程中,Canny算子使用3×3大小,包含8个方向的邻域对梯度幅值阵列M[i,j]的所有像素沿梯度方向进行梯度幅值的插值,在每一个点上,邻域的中心像素M[i,j]与沿梯度方向的2个梯度幅值的插值结果进行比较,如果邻域中心点的幅值M[i,j]不比梯度方向上的2个插值结果大,则将M[i,j]对应的边缘标志位赋值为0,这一过程把M[i.j]宽屋脊带细化为一个像素宽,并且保留了屋脊的梯度幅值。

对经过非极大值抑制和梯度直方图分类的子图像N[i,j]分别使用高、低2个阈值thrA和thrl,将梯度小于阈值的像素灰度置为0,分割得到2个阈值边缘图像TH[i,j]和TL[i,j]。由于图像TH[i,j]是由高阈值得到,因此伪边缘很少,但TL[i,j]保留边缘信息较为全面,但也含有一些伪边缘。因此以图像TH[i,j]为基础,图像TL[i,j]为补充获得相对较为全面的边缘。

1.4 轮廓跟踪或轮廓提取

在对图像进行canny边缘检测后,可能会出现某些检测边缘断裂、不连续的现象,为了解决这个问题,使获得的目标检测物体的边缘能够连续并且去除多余的伪边缘,在边缘检测后,再对图像进行边界跟踪,便可使这一问题得以很好地改善。

对于二值图像,轮廓提取的基本方法是掏空内部点,即如果原图像中有一点为黑,且其他相邻的8个点都为黑,则将该点删除。

本文借鉴二值图像轮廓跟踪方法,即将每一点与其相邻的8个点作比较。具体方法为:(1)先找到第一个边界像素。按从左到右、从下到上的顺序搜索,找到的第一个白点一定是最左下方的边界点,记为A0,它的右、右上、上、左上四个相邻点中至少有一个是边界点,记为B0,从B0开始找起,按右、右上、上、左上、左、左下、下、右下的顺序找8个相邻点中的边界点C0,如果C0就是A0点,则表明已经转了一

圈,结束;否则从C0点继续找,直到找到A0为止;(2)判断是否边界点:如果它的8个相邻点都不是白点,则它即为边界点。对于边界跟踪来说,跟踪后产生的轮廓边缘宽度只有一个像素,实现了边缘像素点单一、清晰,并很好地去除了伪边缘点。

2 实验结果对比

为验证本文算法,以医学图像为例,与传统边缘检测算子进行对比,实验表明,本文提出的方法具有很好的边缘检测效果,对比结果如图1~图5。

3 结果分析

本文采用将图像先进行Canny边缘检测,再进行轮廓跟踪的处理方法,一方面能够解决传统边缘检测算法所带来的边缘断裂问题,而且易于理解和实现,具有较好的检测效果。但另一方面,对图像分别进行两次处理,降低了图像处理的效率,在实时处理要求较高的应用环境,此算法还需进一步改进。

责任编辑:gt

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

    关注

    9

    文章

    519

    浏览量

    38230
  • 检测
    +关注

    关注

    5

    文章

    4434

    浏览量

    91354
  • 函数
    +关注

    关注

    3

    文章

    4304

    浏览量

    62413
收藏 人收藏

    评论

    相关推荐

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

    在上一篇FPGA图像处理--Canny边缘检测(一)里介绍了Canny边缘检测的NMS计算,这里
    的头像 发表于 11-18 17:07 2419次阅读

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

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

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

    本帖最后由 mr.pengyongche 于 2013-4-30 02:24 编辑 用DM642开发板做的canny边缘检测算法(附CCS源码),如果需要其他的相关资料大家可以向我要,我会将更多图像处理的资料上传
    发表于 03-31 14:50

    求Matlab图像自编边缘检测算法

    求Matlab图像自编边缘检测算法,多谢了
    发表于 12-03 20:58

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

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

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

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

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

    微分边缘检测算法主要是基于图像强度的一阶和二阶导数,而导数的计算对噪声很敏感,噪声的存在可能会使检测到的边缘变宽或在某些点处发生间断,因此,需要使用滤波器来滤掉噪声。大多数滤波器在降低
    发表于 09-21 11:45

    基于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边缘检测

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

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

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

    Robinson边缘检测算法

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

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

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