我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:主页 > 边缘深断裂 >

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

归档日期:10-15       文本归类:边缘深断裂      文章编辑:爱尚语录

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

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

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

  为了提取单像素宽边缘,必须细化梯度幅值图。在梯度幅值图像中,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]为补充获得相对较为全面的边缘。

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

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

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

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

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

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

  本文档的主要内容详细介绍的是Python字符的实例详细说明包括了:Python 转义字符,Pytho....

  鸿蒙HDF架构:DeviceManager如何生成所有的host配套设施

  我们阐述了在启动DeviceManager这个核心服务时,是如何生成所有的host配套设施的,下面我....

  本文档的主要内容详细介绍的是使用Python实现截取路径中的文件名的实例说明免费下载。

  神经网络无需学习就能驾驶虚拟赛车。 动物生下来就具有天生的能力和禀性。马生下来几小时后就会走,鸭子孵....

  本书基于 MATLAB 7.1 版,详细介绍了 MATLAB 的基础知识、数值计算、符号运算、图形处....

  本文档的主要内容详细介绍的是电路经常使用的定理详细介绍包括了:1.叠加定理,2.替代定理,3.戴维宁....

  随着越来越多的用户与服务参与到服务计算中,服务推荐变得日益重要,但个别用户的虚假评价降低了服务推荐结....

  这称为正态分布或高斯分布。它遵循熟悉的钟形曲线形状,但是使用名称“正态”或“高斯”而不是“钟形曲线”....

  贝叶斯优化是机器学习超参数优化的常用技术之一,本文不会使用艰深的数学论证,而是通过简单的术语带你领略....

  本文通过案例介绍了正态分布和贝塔分布的概念。 正态分布 正态分布,是一种非常常见的连续概率分布,其也....

  本文介绍了采用创建一个Python脚本,用该脚本模仿R风格的函数的方法来方便地进行统计。 是用R语言....

  函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用....

  为你的机器学习项目选择一个好的优化器是非常困难的。热门的深度学习库,如PyTorch或TensorF....

  明明有强大的frida工具,可以无需过反调试,无需IDA去动静态调试,无需获取RC4密钥,直接用主动....

  针对传统的小区内开环功率控制算法通常以提升本小区的吞吐量性能为目标,忽略了当前小区用户对邻小区用户同....

  有一个函数f(x),它的计算成本很高,甚至不一定是解析表达式,而且导数未知。你的任务是,找出全局最小....

  近日,由中国无人机产业联盟、深圳市无人机行业协会主办、深圳市安博会展有限公司承办的2020第四届世界....

  本文提出了一种最优修正对数谱幅度(OM-LSA)语音估计器和一种用于鲁棒语音增强的最小控制递归平均(....

  Keil C是常用的嵌入式系统编程工具,它通过init_mempool、mallloe、free等函....

  下图是由CJ036A构成的气体检漏报警电路。适用于需要对可燃气体进行检测WJ场合。

  我们先来看一下压摆率,压摆率的概念与上升时间类似,但有一些重要区别。如图1所示,阶跃响应的上升时间被....

  如今,深度学习已经贯穿于我们的生活,无论是汽车自动驾驶、AI 医学诊断,还是面部、声音识别技术,无一....

  本文主要讲解 Python 的 5 种高级特征,以及它们的用法。 1. Lambda 函数 Lamb....

  电路板故障检测仪也称作在线电路维修测试仪和电路维修测试仪,是一种通用型电路板故障检测设备。缺乏图纸资....

  除了这个方式,SV还提供了和C/C++直接的接口DPI。DPI接口允许用户用C编写程序,并和SV实现....

  ORB特征是一种图像识别、追踪和匹配中常用的特征,大名鼎鼎的ORB-SLAM就是使用的这一特征。它提....

  OIST博士后研究人员Riccardo Funari表示,现有抗体检测平台有一定的准确度和可靠度,但....

  Adish Co.,Ltd.将提供具有警告功能的人工智能检测服务“ matte”

  “ Matte”接收发布的内容,由AI立即确定它,并在弹出窗口中通知您。如果有您担心不适当的帖子,则....

  由英国与全球疫苗免疫联盟(Gavi)合作成立的“疫苗联盟”正支持加纳政府使用Zipline无人机从全....

  BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的。具体来说....

  本文介绍利用电流检测放大器、差分放大器和仪表放大器测量智能手机、平板电脑、笔记本计算机及 USB 附件中的电池充电和放电电...

  这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以....

  本文档的主要内容详细介绍的是C语言程序设计全套培训课件免费下载包括了:第1章 C语言概述,第2章 程....

  这一条概括了模块化的实现方法和实质:将一个功能模块的代码单独编写成一个.c文件,然后把该模块的接口函....

  在8051体系中,数据指针DPTR作为一个特殊的16位寄存器,用于寻址64 KB的XDATA或COD....

  把 DS1302 的底层操作封装为一个 DS1302.c 文件,对上层应用提供基本的实时时间的操作接....

  Web前端和后端的区别是什么?如何区分?从前端和后端两者工作内容和负责项目是完全不同。后端:入门难深....

  sys.getrefcount( )函数可以获得对象的当前引用计数多数情况下,引用计数比你猜测得要大....

  这篇文章主要介绍了python 文件和目录的操作方法,简明总结了文件和目录操作中常用的模块、方法,并....

  这篇文章主要介绍了python 文件和目录的操作方法,简明总结了文件和目录操作中常用的模块、方法,并....

  地下管线检测和识别在管网传输中起到越来越重要的作用。随着科技的发展,越来越多的非金属管线用于通信、给....

  几乎所有的python2 程序都需要一些修改才能正常的运行在python3 的环境下。为了简化这个转....

  五大模块构筑机器视觉系统:按照信号的流动顺序,机器视觉系统主要包括光学 成像、图像传感器、图像处理、....

  Verilog是一种流行的硬件描述语言,他是由工业界开发的,1984年,Verilog作为一种私用的....

  来源:嵌入式客栈 1 什么是回调函数?首先什么是回调呢? 我的理解是:把一段可执行的代码像参数传递那....

  “探索Python ” 这一系列的前几篇文章已为Python 编程新手介绍了几方面的主题, 包括变量....

  每个C程序都有一个main()函数。当然,有可能编写一个成功的程序,其中唯一的功能是main()。我的猜测是已经做过很多次了,确...

  该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函 ...

  自动将传入函数的指针所指地址xptr和yptr四字节对齐,还是在此判断xptr和yptr地址是否是四字节对齐?

  Hello 您好, 今天在阅读SPRU198k.pdf 文档时,看到下面函数,想知道,编译器在编译时遇到 WORD_ALIGNED(xptr...

  函数void OSTaskStatHook (void) 当中为什么没有任何代码呢?

  原子哥,为什么在例程当中这个函数void OSTaskStatHook (void) 当中为什么没有任何代码呢???这个函数不是在...

  使用28035时,有个函数,DSP28x_usDelay函数的定义在哪里...

  portBase_TYPE vTaskResumeFromISR(xTaskHandle pxTaskToResum) 这个函数是用来唤醒某个任务的。 但是使用教...

  各位大神 请问有人会使用netconn_recv这个函数吗? 是v1.3.2版本的api.lib.c 我从server端回传的文字会存在哪里 我要怎么样才...

  追踪函数和其他变量都可以,但是有个别就弹出这个,u8都弹出..... 求赐教...

本文链接:http://maxyservices.com/bianyuanshenduanlie/162/