《图像处理中的边缘提取算法及实现设计.doc》由会员分享,可在线阅读,更多相关《图像处理中的边缘提取算法及实现设计.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流图像处理中的边缘提取算法及实现设计毕业论文(设计)题 目: 图像处理中的边缘提取算 法及其实现 原 创 性 声 明本人郑重声明:本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名: 日 期: 关于毕业论文使用授权的声明本人在指导老师指导下所完成的论文及相关的资料(包
2、括图纸、试验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属XXX。本人完全了解XXX有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权XXX可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为XXX。本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为XXX。论文作者签名: 日 期: 指导老师签名: 日 期: .精品文档.毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重
3、承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字
4、化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 图像处理中的边缘提取算法及实现 摘 要数字图像边缘检测是图像分割、目标区域识别和区域形状提取等图像分析领域十分重要的基础,是图像识别中提取图像特征的一个重要方法。边缘中包含图像物体有价值的边界信息,这些信息可以用于图像理解和分析,并且通过边缘检测可以降低后续图像分析和处理的数据量。本文主要阐述基于Matlab的图像边缘检测技术。以Matlab为开发平台和编程语言,设计出图像边缘检测软件,并且设计了图形用户界面GUIDE,在图形用户界面中添加了与各种算子相对应的处理程序,以及图形文件的获取、
5、保存等功能,完成了图像边缘检测软件。最终图形界面可实现打开图片并对其进行边缘处理,并可以将处理好的图片保存。全文内容安排组织如下:第一章,对图像边缘处理的意义进行了概述;第二章,对软件平台的选择及其特点做了简要的介绍;第三章,叙述了几种常用的边缘检测算子的原理;第四章,通过实例分析了各种算子的定位性以及稳定性;第五章,借助Matlab中的GUI功能设计了图像边缘检测的图形用户界面,并在GUI界面中完成了对各种算子的调用,完成了基于MATLAB的图形化图像边缘检测软件;第六章,对已经完成的图像检测软件进行测试。本文写作的主要目的是对常用的图像边缘提取算法进行研究和对比,了解常用边缘提取算法的原理
6、及其特点,为以后深入学习图像分析领域的其它知识打下基础。关键词:图像边缘处理,MATLAB,GUI,Log算子,Canny算子Edge extraction algorithm in image processing and its implementationAbstractDigital image edge detection plays an import part in image analysis, such as image segmentation, interested region recognition and region shape extraction.And it
7、s an import method in image feature extraction of image recognition.The edge includes the valuable infotmation of the image which can be use in image understanding and analysis.And through edge detection,we can reduce the calculation of image analysis and processing in the following step.This articl
8、e discusses the Matlab-based image edge detection .Discussed in Matlab as the development platform and programming language, designed edge detection software , the design of the graphical user interface GUIDE , combining the portrait maps ,text maps, fractal images to illustrate the positioning of t
9、hese operators; combined increase noise images to illustrate the stability of the operator .Add in the graphical user interface with a variety of operators corresponding to the processing procedures, and graphics files for the acquisition, preservation and other functions the completion of the image
10、 edge detection software. The final graphical interface allows the edge to open the picture and its treatment, and may well save the picture processing. Arrangement of this paper is as follows:The first chapter introduces the significance of the image edge processing. The second chapter introduces t
11、he software platform of choice in this paper .The third chapter introduces some common principle of marginal operator. The fourth chapter, by example, analysis of the various algorithmss relocatability and stability; The fifth chapter, resort to GUI inside Matlab, design the image edge detection int
12、erface, and completion of the various algorithm is invoked by GUI, eventually completed the graphical edge detection software based on Matlab; The sixth chapter, testing the finished software of image edge detection. In this paper,the main purpose of writing is that studying of the commonly used edg
13、e extraction algorithm, understand principle of edge extraction algorithm and whose characteristic. To studying image analysis field of other knowledge to lay the foundation.Keywords: Edge Treatment , MATLAB, GUI, Log operator, Canny operator 目 录第一章 绪论11.1 数字图像简介11.2 数字图像的处理21.3 图像边缘处理的意义31.4 本章小结3第
14、二章 开发平台的选择42.1 开发平台的选择42.2 Matlab简介42.3 本章小结5第三章 常用的图像边缘检测算法63.1 引言63.2 边缘检测与提取过程73.3 边缘检测与提取常用算法83.3.1 Roberts边缘算子83.3.2 Sobel边缘算子93.3.3 Prewitt边缘算子93.3.4 Log边缘算子103.3.5 Canny边缘算子113.4 本章小结13第四章 常用算法的实现与比较144.1 常用算法的Matlab实现144.2 算子之间的比较184.1.1 算子的定位性184.1.2 算子的稳定性194.3 本章小结22第五章 图像边缘提取的GUI设计235.1
15、主要函数的介绍235.2 GUI的实现245.3 本章小结30第六章 系统测试316.1 打开图像模块测试316.2 保存图像模块316.3 执行模块测试316.4 本章小结32结论33参考文献34致谢35第一章 绪论在实际图像边缘检测问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中,它在图像识别、图像分割、图像增强以及图像压缩等领域中有较为广泛的应用。图像的边缘是图像最基本的特征之一。边缘往往携带着一幅图像的大部分信息,它存在于图像的不规则结构和不平稳现象中,即存在于信号的突变点处。这些点给出了图像轮廓的位置,这些轮廓常常是我们在图像边缘检测时所需要的非常重要的一些
16、特征条件,这就需要我们对一幅图像检测并提取出它的边缘。边缘检测算法是图像边缘检测问题中经典技术难题之一,它的解决对于我们进行高层次的特征描述、识别和理解等有着重大的影响1。由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及效果的边缘检测算子的问题。1.1 数字图像简介在我们的生活中,可以说,数字图像无处不在,每个人都是满身的数字装备,MP3、MP4、PSP、PPC、手机、数码相机、笔记本电脑,这些设备的使用都离不开对数字图像的支持。从广义上来说,图像是自然界景物的客观反映,是人类认识世界和自身的重要源泉1。照片、绘画、影视画面无疑属于图像,照
17、相机、显微镜或望远镜的取景器上的光学成像也是图像,此外,汉字也可以说是图像的一种,因为汉字起源于象形文字,所以可以当作是一种特殊的图像。图像也可以理解为介于文字和绘图之间的一种形式。总之,凡是人类视觉上能够感受到的信息,都可以称之为图像。随着计算机技术的发展,人们可以人为地创造出色彩斑斓千姿百态的各种图像。概括的讲,图像包含视频、图形、动画、符号文字等主要内容。1.2 数字图像的处理一幅图像可以定义为一个二维函数f (x , y),这里的x和y是空间坐标,而且在任何一对空间坐标(x , y)上的幅值f被称为该点图像的强度或灰度。当x,y和幅值f为有限离散的数值时,称该图像为数字图像2。数字图像
18、的处理是指用计算机处理数字图像,值得提及的是数字图像是由有限的元素组成的,每个元素都有一个特定的位置和幅值,这些元素被称为图像元素、画面元素或像素。视觉是人类最高级的感知器官,所以,毫无疑问,图像在人类感知中扮演着非常重要的角色。然而,人类感知只是限于电磁波谱的视觉波段,而成像机器则可覆盖几乎全部电磁波谱,他们可以对那些非人类习惯的那些图像源进行加工,这些图像源包括超声波、电子显微镜及计算机所产生的图像。因此,数字图像处理涉及很多应用领域。图像处理和分析可定义为应用一系列方法获取、校正、增强、变换或压缩可视图像的技术,其目的是提高信息的相对质量以便获取信息。现在已经有很多的图像生成技术,但是,
19、除了图像恢复技术以外,图像处理技术在很大程度上与图像形成的过程无关。当图像已被采集且已对获取过程中产生的失真进行了校正,那么所有可用图像处理技术在本质上是通用的。因此图像处理是一种超越具体应用的过程:任何为解决某一特殊问题而开发的图像处理新技术或新方法,几乎肯定能找到其他完全不同的应用领域。图像处理技术分为:灰度量化、图像恢复、图像增强、边缘检测、图像分割、图像测量、图像压缩、图像配准、可视化、图像存档。本文着重讨论图像边缘检测的问题。边缘是图像最基本的特征,所谓边缘,就指周围灰度强度有反差变化的那些像素的集合,是图像分割所依赖的重要基础,也是纹理分析和图像识别的重要基础。要做好边缘检测,首先
20、,要清楚待检测的图像特征变化的形式,从而使用相应的检测方法;其次,要知道特性变化总是发生在一定的空间范围内,不能期望用一种检测算子就能最佳检测出发生在图像上的所有特征变化。当需要提取多空间范围内的变化特征时,要考虑多算子的综合应用;第三,要考虑噪声的影响,其中一个办法就是滤除噪声,这有一定的局限性,再就是考虑信号加噪声的条件检测,利用统计信号分析或通过对图像区域的建模进一步使检测参数化;第四,可以考虑各种方法的组合,如先利用LOG找出边缘,然后在其局部利用函数近似的方法获得高精度定位;第五,在正确检测边缘的基础上,要考虑精确定位的为题。经典的边缘检测方法是构造对像素灰度级阶跃变化敏感的微分算子
21、,如Roberts梯度算子、Sobel梯度算子等,其边缘检测速度快,但得到的往往是断续的、不完整的结构信息,这类方法对噪声较为敏感,为了有效抑制噪声,一般都首先对原图像进行平滑处理然后再进行边缘检测,就能成功的检测到真正的边缘。1.3 图像边缘处理的意义图像处理是自动化学科的一个分支,在工程技术领域有着广泛的应用,而边缘检测技术又是图形处理中的重要部分。数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础,图像理解和分析的第一步往往就是边缘检测,目前它已经成为机器视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。边缘检测对物体的识别也是很重要的,主
22、要有以下几个理由:首先,人眼通过追踪未知物体的轮廓而扫视一个未知的物体;其次,如果我们能成功的得到图像的边缘,那么图像分析就会大大简化,图像识别就会容易的多;最后,很多图像并没有具体的物体,对这些图像的理解取决于它们的纹理性质,而提取这些纹理性质与边缘检测有极其密切的关系。1.4 本章小结本章介绍了什么是数字图像,什么是数字图像处理,在此基础上详细的介绍了图像边缘处理的应用及其意义,下一章将介绍实现图像边缘处理的软件开发平台的选择。第二章 开发平台的选择2.1 开发平台的选择现在可用于图像处理编程的软件有很多,基本上主流的编程工具软件都可以,但对于我们要完成毕业设计的大学生而言,要在很短的时间
23、内将图像处理程序给编写出来的话,用那些专业的编程软件是比较困难的。因为要浪费大量的时间在基础代码上,而不能花足够的时间在算法的研究上。所以应选一款编程效率较高的编程软件来完成本次的设计课题。Matlab图像处理程序开发的特点是上手容易,开发周期短,见效快,和VB、VC等专业级编程工具相比,在Matlab平台上开发图像处理软件程序代码编写量明显较小3。这是因为Matlab有专门的图像处理工具箱,有很多实现某种图像处理功能的函数,而专业级的编程工具并没有专门为图像处理而编写的函数,很多图像处理函数需要开发者自己编写。因此,图像处理工作采用Matlab编程是非常合适的。2.2 Matlab简介Mat
24、lab是美国MathWorks公司出品的商业化数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境,主要包括Matlab和Simulink两大部分。Matlab是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件4。它在数学类科技应用软件中,在数值计算方面首屈一指。Matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理于通讯、图像处理、信号检测、金融建模设计与分析等领域。Matlab的基本数据单位是矩阵,它的指令表达式与数学、工
25、程中常用的形式十分相似,故用Matlab来解决问题要比用C、FORTRAN等语言完成相同的事情简捷的多,并且Mathwork也吸收了像Maple等软件的优点,使Matlab成为一个强大的数学软件。Matlab不仅仅是一门编程语言,还是一个集成的软件平台,它包含以下几个部分:1. Matlab语言2. Matlab集成工作环境3. Matlab图形系统4. Matlab数学函数库5. Sumlink交互式仿真环境6. Matlab编译器7. 应用程序接口API8. Matlab工具箱9. Notebook工具本文主要用到的是Matlab的图像处理功能。Matlab图形处理研究的主要问题有:图像变
26、换:通过图像的变换,改变图像的表示域以及表示数据。图像增强:改善图像质量。图像分析:为了更好的研究与分析图像,往往需要从图像中提取一些信息来反应图像的主要特征。图像压缩:便于图像的传输和存储。本文主要使用到图像分析中的图像边缘检测功能。2.3 本章小结本章先说明了为什么选择Matlab作为本课题的开发平台,简要的介绍了Matlab软件的特点及其功能,下一章将从数学的角度介绍常用的边缘检测算子的实现原理。第三章 常用的图像边缘检测算法3.1 引言物体的边缘是以图像局部的不连续性的形式出现的,例如,灰度值的突变、颜色的突变、纹理结构的突变等。从本质上说,边缘常常意味着一个区域的终结和另一个区域的开
27、始。图像边缘信息在图像分布和人的视觉中都是十分重要的,是图像识别中提取图像特征的一个重要属性。图像边缘检测和计算机视觉都是新兴学科分支,近几十年来,取得了许多重大的成果。随着研究的深入和应用的需要,新概念、新思想、新方法不断产生,它们正朝着智能化、系统化的方向发展5。作为图像边缘检测和计算机视觉最基本的技术图像边缘提取技术,也突破了其狭义的概念,成为一个内容丰富的领域。本文写作的目的是探索和研究几种经典的图像边缘提取算法。利用计算机进行图像边缘检测有两个目的:一是产生更适合人观察和识别的图像;二是希望能由计算机自动识别和理解图像。无论为了哪种目的,图像边缘检测中关键的一步就是对包含有大量信息的
28、图像进行分解。图像的边缘是图像的最基本特征。所谓边缘(或边沿)是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间,因此,它是图像分割所依赖的重要特征。在通常情况下,我们可以将信号中的奇异点和突变点认为是图像中的边缘点,其附近灰度的变化情况可从它相邻像素灰度分布的梯度来反映。根据这一特点,提出了多种边缘检测算子:如 Robert算子、Sobel 算子、Prewitt 算子、LoG 算子,Canny算子等。这些方法多是以待处理像素为中心的邻域作为进行灰度分析的基础,实现对图像边缘的提取并已经取得了较好的处理效果。图像的边缘是待识别类
29、型之间的界线,它是指图像中像素单元灰度有阶跃变化或屋顶状变化的那些像素单元的集合6。边缘检测在图像分割、纹理特征提取、形状特征提取和图像识别等方面起着重要的作用。图像边缘对图像识别和计算机分析十分有用,边缘能勾划出目标物体,使观察者一目了然;边缘蕴含了丰富的内在信息,是图像识别中抽取图像特征的重要属性。从本质上说,图像边缘是图像局部特性不连续性的反应,它标志着一个区域的终结和另一个区域的开始。边缘提取首先检出图像局部特性的不连续性,然后再将这些不连续的边缘像素连成完备的边界。图像中灰度变化剧烈的区域即强度的非连续性对应着边缘。边缘提取就是既要检测出强度的非连续性,又能确定它们在图像中的精确位置
30、。在图像中边缘区域的灰度在空间上的变化形式一般可分为三个类型:阶跃型、房顶型和凸缘型,如图3-1所示: 阶跃型 房顶型 突圆型 图2.1 边缘灰度变化图3-1 三个类型3.2 边缘检测与提取过程从人的直观感受来说,边缘对应于物体的几何边界。图像上灰度变化剧烈的区域比较符合这个要求,我们一般会以这个特征来提取图像的边缘,但在遇到包含纹理的图像上,如,图像中的人穿了黑白格子的衣服,我们往往不希望提取出来的边缘包括衣服上的方格,这就又涉及到纹理图像的处理等方法。一般认为边缘提取是要保留图像的灰度变化剧烈的区域,这从数学上看,最直观的方法就是微分(对于数字图像来说就是差分),在信号处理的角度来看,也可
31、以说是用高通滤波器,即保留高频信号。用于图像识别的边缘提取往往需要输出的边缘是二值图像,即只有黑白两个灰度的图像,其中一个灰度代表边缘,另一个代表背景。此外,还需要把边缘细化成只有一个像素的宽度。图像边缘检测的基本步骤:1)滤波:边缘检测主要基于导数计算,会受到噪声的影响,可以通过设计滤波器来降低噪声,但滤波器在降低噪声的同时也会导致边缘精度的损失。2)增强:增强算法将邻域中灰度有显著变化的点突出显示。一般通过计算梯度幅值来完成。3)检测:在有些图像中梯度幅值较大的并不是边缘点。最简单的边缘检测是梯度幅值阈值判定。4)定位:精确确定边缘的位置。特征提取作为图像边缘检测的一个重要内容,发展了众多
32、的方法。这些方法经过实践的检验,成为了经典的内容。经典的边缘检测算子包括:Roberts算子、Prewitt算子、Sobel算子、Log算子、Canny算子等7,这些经典的边缘提取算子在使用时都是使用预定义的边缘模型去匹配。3.3 边缘检测与提取常用算法边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线,也就是提取图像中灰度发生急剧变化区域的边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此可以用局部图像微分技术来获得边缘检测算子。经典的边界提取技术大都基于微分运算,首先通过平滑来滤除图像中的噪声,然后进行一阶微分或二阶微分运算,求得梯度最大值或二阶导数的过零点,最后选取
33、适当的阈值来提取边界。3.3.1 Roberts边缘算子Roberts算子是一种利用局部差分算子寻找边缘的算子,由下式给出:g(x,y)=-+- 其中f(x,y)是具有整数像素坐标的输入图像,平方根运算使该处理类似于在人类视觉系统中发生的过程。Roberts算子边缘定位精确度比较高,但是对噪声敏感,容易丢失一部分边缘,因此,该算子适用于边缘明显而且噪声较少的图像检测,在应用中经常用Roberts算子来提取道路。3.3.2 Sobel边缘算子Sobel边缘算子的卷积核如图3-2所示,图像中的每个像素都用这两个核做卷积,这两个核分别对垂直边缘和水平边缘响应最大,两个卷积的最大值作为该点的输出位。-
34、1-2-1000121-101-202-101图3-2 Sobel边缘算子Sobel算子认为邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。该算子对噪声具有一定的抑制能力,但不能完全排除检测结果中出现虚假边缘,虽然该算子的定位效果不错,但检测的边缘容易出现多像素宽度。 3.3.3 Prewitt边缘算子Prewitt边缘算子的卷积核如图3-3所示,图像中的每个像素都用这两个核做卷积,取最大值作为输出,从而产生一幅边缘幅度图像。-1-1-1000111 图3-3 Prewitt边缘算子10-110-110-1 Prewitt算子在一个方向求
35、微分,而在另一个方向求平均,因而对噪声相对不敏感,有抑制噪声作用,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。3.3.4 Log边缘算子由于利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感,所以要在边缘检测前滤除噪声,为此,马尔(Marr)和希尔得勒斯(Hildreth)根据人类视觉特性提出了一种边缘检测的方法,该方法将高斯滤波和拉普拉斯检测算子结合在一起进行边缘检测的方法,故称为Log(Laplacian of Gassian )算法,也称之为高斯-拉普拉斯算子,该算法的主要思路和步骤如下:(1)滤波:首先对图像f(x,y)进行平
36、滑滤波,其滤波函数根据人类视觉特性选为高斯函数,即:其中,G(x,y)是一个圆对称函数,其平滑的作用是可通过来控制的。将图像与进行卷积,可以得到一个平滑的图像,即:(2)增强:对平滑图像进行拉普拉斯运算,即:(3)检测:边缘检测判据是二阶导数的零交叉点(即 的点)并对应一阶导数的较大峰值。 这种方法的特点是图像首先与高斯滤波器进行卷积,这样既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除,但是由于平滑会造成图像边缘的延伸,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点。这一点可以用二阶导数的零交叉点来实现。拉普拉斯函数用二维二阶导数的近似,是因为它是一种无方向算子。在实际
37、应用中为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点。由于对平滑图像进行拉普拉斯运算可等效为的拉普拉斯运算与的卷积,故上式变为:式中称为LOG滤波器,其为:这样就有两种方法求图像边缘:先求图像与高斯滤波器的卷积,再求卷积的拉普拉斯的变换,然后再进行过零判断。求高斯滤波器的拉普拉斯的变换,再求与图像的卷积,然后再进行过零判断。这就是马尔和希尔得勒斯提出的边缘检测算子(简称M-H算子),又称为墨西哥草帽算子。高斯-拉普拉斯算子把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑掉噪声,再进行边缘检测,所以效果更好。3.3.5 Canny边缘算子坎尼算子是一类最优的边缘算子
38、,它在许多图像领域得到了广泛的应用。该算子的基本思想是:先对处理的图像选择一定的高斯滤波器进行平滑处理,抑制图像的噪声,然后采用一种称之为“非极值抑制”的技术,细化平滑后的图像梯度幅值矩阵,寻找图像中的可能的边缘点,最后利用双门限检测通过双阈值递归寻找图像的边缘点,实现边缘提取。Canny方法也使用拉普拉斯算子,该方法与其他边缘检测方法不同之处在于,它使用2种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘与强边缘相连时才将弱边缘包含在输出图像中,因此这种方法容易检查出真正的弱边缘。Canny边缘检测算法:step1:用高斯滤波器平滑图象;step2:用一阶偏导的有限差分来计算梯度的幅值和方向
39、;step3:对梯度幅值进行非极大值抑制;step4:用双阈值算法检测和连接边缘。其数学描述如下:step1:二维为高斯函数为:在某一方向n上是的一阶方向导数为:= nn= =式中:n式方向矢量,是梯度矢量。将图像与作卷积,同时改变n的方向,*取得最大值时的n就是正交于检测边缘的方向。step2:反映了图像(x,y)点处的边缘强度,是图像(x,y)点处的法向矢量。step3:仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。解决方法:利用梯度的方向。图3-6 非极大值抑制四个扇区的标号为0到3,对应3*3邻域的四种可能组合。在每一点上,邻域的中心像素
40、M与沿着梯度线的两个像素相比。如果M的梯度值不比沿梯度线的两个相邻像素梯度值大,则令M=0。step4:减少假边缘段数量的典型方法是对G(x,y)使用一个阈值。将低于阈值的所有值赋零值。理论上是可行的,问题是如何选取阈值。解决方法:双阈值算法进行边缘判别和连接边缘。首先进行边缘判别,凡是边缘强度大于高阈值的一定是边缘点;凡是边缘强度小于低阈值的一定不是边缘点;如果边缘强度大于低阈值又小于高阈值,则看这个像素的邻接像素中有没有超过高阈值的边缘点,如果有,它就是边缘点,如果没有,它就不是边缘点。然后进行边缘连接,双阈值算法对非极大值抑制图像作用两个阈值1和2,且212,从而可以得到两个阈值边缘图像
41、G1(x,y)和G2(x,y)。由于G2(x,y)使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)。双阈值法要在G2(x,y)中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在G1(x,y)的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在G1(x,y)中收集边缘,直到将G1(x,y)连接起来为止。以上介绍了五种常用边缘检测算子的实现步骤及其优缺点。由于在边缘检测中,边缘定位能力和噪声抑制能力是一对矛盾体,有的算法边缘定位能力比较强,有的抗噪声能力比较好,所以,在实际应用的过程中,要有针对性的选取算子对图像进行处理。 3.4 本章小结本章介绍了边缘检测中五种比较有代表性的算法,
42、从数学的角度讲述了各算子的实现步骤,下一章将介绍各种算法在Matlab中的实现。第四章 常用算法的实现与比较近年来,图像分析和处理紧紧围绕理论、实现、应用三方面迅速发展起来。图像边缘识别与在实际中有很重要的应用,一直是图像边缘检测中的热点和难点,迄今已有许多边缘检测方法,其中Robert算子、Sobel 算子、Prewitt 算子、LOG算子、Canny算子及轮廓提取或轮廓跟踪、利用平滑技术提取图像边缘、利用差分技术提取图像边缘、利用小波分析技术提取图像边缘等方法是常用的方法,但各种算法处理结果差异很大。 因此,在这一章中,我们将用Matlab语言对常用的五种边缘检测与提取算子分别进行编程实现
43、,查看并比较效果。4.1 常用算法的Matlab实现Matlab图像处理工具箱提供的edge函数可以实现边缘检测的功能。edge函数的语法格式:BW = edge(I , sobel)BW = edge(I , sobel , thresh)BW = edge(I , sobel , thresh , direction)BW , thresh = edge(I , sobel ,)BW = edge(I , prewitt)BW = edge(I , prewitt , thresh)BW = edge(I , prewitt , thresh , direction)BW , thresh
44、 = edge(I , prewitt ,)BW = edge(I , roberts)BW = edge(I , roberts , thresh)BW = edge(I , roberts , thresh , direction)BW , thresh = edge(I , roberts ,)BW = edge(I , log)BW = edge(I , log , thresh)BW = edge(I , log , thresh ,sigma)BW , threshold = edge(I , log ,)BW = edge(I , zerocross , thresh , h)B
45、W , thresh = edge(I , zerocross ,)BW = edge(I , canny)BW = edge(I , canny , thresh)BW = edge(I , canny , thresh ,sigma)BW , threshshold = edge(I , canny ,)下面我们将使用上述的边缘检测算法实现以下检测算子:a) Prewitt; b) Roberts; c) Laplacian of Gaussian (LoG); d) Canny;e)Sobel主要代码为:f = imread (D:SYSTEM桌面新建文件夹30.jpg); %读入图像f
46、 = rgb2gray(f); %将彩色图像转换为灰度图像f = im2double(f); %转换为双精度,便于后面的计算figure, imshow(f),title(Original Image);PF = edge(f, prewitt); %边缘探测,算子为prewittfigure, imshow(PF),title(Prewitt Filter);RF = edge(f, roberts); %边缘探测,算子为robertsfigure, imshow(RF),title(Roberts Filter);LF = edge(f, log); %边缘探测,算子为logfigure, imshow(LF),title(Laplacia