当前位置:文档之家› 基于matlab的边缘检测

基于matlab的边缘检测

基于matlab的边缘检测
基于matlab的边缘检测

基于MATLAB的图像边缘检测

作者:王艳燕

指导老师:秦怡

摘要:图像边缘检测技术是图像预处理技术之一,边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。

图像边缘检测的手段多种多样。本文介绍的检测方法是通过一些差分算子,由图像的亮度计算其梯度的变化,从而检测出边缘,主要有Robert、Sobel、Prewitt、Canny、Log等算子。

关键词:算子;边缘;检测

前言

在实际图像边缘检测问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。

图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息。而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是我们在图像边缘检测时所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。而边缘检测算法则是图像边缘检测问题中经典技术难题之一,它的解决对于我们进行高层次的特征描述、识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题。

经典的边界提取技术大都基于微分运算。首先通过平滑来滤除图像中的噪声,然后进行一阶微分或二阶微分运算,求得梯度最大值或二阶导数的过零点,最后选取适当的阈值来提取边界。本文主要介绍几种经典的边缘提取算法,选取两种用MATLAB语言编程实现,对提取结果进行比较和分析。

第1章图像边缘检测与提取概述

数字图像边缘检测技术起源于20世纪20年代,当时受条件的限制一直没有取得较大进展,直到20世纪60年代后期电子技术、计算机技术有了相当的发展,数字图像边缘检测处理技术才开始进入了高速发展时期。经过几十年的发展,数字图像边缘检测处理技术目前己经广泛应用于工业、微生物领域、医学、航空航天以及国防等许多重要领域,多年来一直得到世界各科技强国的广泛关注。

数字图像边缘检测处理技术在最近的10年发展尤为迅速,每年均有数以百计的新算法诞生,其中包括canny算法、小波变换等多种有相当影响的算法,这些算法在设计时大量运用数学、数字信号处理、信息论以及色度学的有关知识,而且不少新算法还充分吸取了神经网络、遗传算法、人工智能以及模糊逻辑等相关理论的一些思想,开阔了进行数字图像边缘检测处理的设计思路。

现代数字图像边缘检测处理的目标有三:可视化、自动化和定量化:(1)可视化:当图像被采集并显示时,这些图像通常需要改善以便观察者更容易解释它们。感兴趣的目标必须突出或者图像各部位之间的对比度需要增强处理。自从像CT和MRI等三维成像手段问世以来,可视化,特别是三维结构的可视化受到极大的关注。

(2)自动化:旨在使一些日常的或繁琐的工作自动化。例如,根据一个染色体分布的显微图像自动确定染色体核型的系统,从一个血液涂片自动生成白细胞分类计数报告的系统。这些应用的特征是要求最小的人工干预,全自动完成分析工作。关于白细胞分类计数应用,市售系统是在1970年开发成功的。但今天这项任务是以完全不同方式(采用流式白细胞计数技术)自动完成。

(3)定量化:有关定量化的图像边缘检测的例子有:测量动脉狭窄的程序以及用电子显微镜观察组织切片中特殊成分的定位和定量(如血色素沉着症中的铁元素)。在这些应用中,人工介入是允许的,因为处理时间的长短在这些应用中并不是主要矛盾。

数字图像边缘检测处理,即用计算机对图像的边缘进行处理,这一技术是随着计算机技术发展而开拓出来的一个新的应用领域,汇聚了光

学、电子学、数学、摄影技术、计算机技术等学科的众多方面。图像边缘检测处理作为一门学科已经被美国数学学会列为应用数学的一个研究分支。在其短暂的发展历史中,已经被成功的应用在几乎所有与成像有关的领域。近年来,图像分析和处理紧紧围绕理论、实现、应用三方面迅速发展起来。它以众多的学科领域为理论基础,其成果又渗透到众多的学科中,成为理论实践并重,在高新技术领域中占有重要地位的新兴学科分支。

1.1 图像边缘的定义

所谓图像边缘(Edlge)是指图像局部特性的不连续性,例如,灰度级的突变,颜色的突变,纹理结构的突变等。边缘广泛存在于目标与目标、物体与背景、区域与区域(含不同色彩)之间,它是图像分割所依赖的重要特征。本为主要讨论几种典型的图像灰度值突变的边缘检测方法,其原理也是用于其他特性突变的边缘检测。

图像的边线通常与图像灰度的一阶导数的不连续性有关。图像灰度的不连续性可分为两类:阶跃不连续,即图像灰度再不连续出的两边的像素的灰度只有明显的差异,如图1.1所示,线条不连续,即图

阶跃型房顶型突圆型

图1.1 边缘灰度变化

像灰度突然从一个值变化到另一个值,保持一个较小的行程又返回到原来的值。在实际中,阶跃和线条边缘图像是较少见的,由于空间分辨率(尺度空间)、图像传感器等原因会使阶跃边缘变成斜坡形边缘,线条边缘变成房顶形边缘。它们的灰度变化不是瞬间的而是跨越一定距离的。

1.2 图像边缘检测算法的研究内容

图像边缘检测和分析可定义为应用一系列方法获取、校正、增强、变换、检测或压缩可视图像的技术。其目的是提高信息的相对质量,以便提取有用信息。图像边缘检测的主要研究内容包括:(1)图像获得和抽样,其中通过人眼观察的视野获取图像的问题有:最常用的图像获取装置——电视(TV)摄像机问题,对所获得信号进行独立的采样和数字化就可用数字形式表达景物中全部彩色内容;电荷-耦合装置,用作图像传感器,对景物每次扫描一行,或通过平行扫描获得图像;选择正确的分辨力或采样密度,一幅图像实质上是二维空间中的信号,所以适用于信号处理的法则同样适用于图像边缘检测,在放射学中常常需要高分辨力,要求图像至少达到2048像素×2048像素;灰度量化,图像强度也必须进行数字化,通常以256级(按1字节编码)覆盖整个灰度,一般一幅灰度分辨力为8位,空间分辨力为512像素×512像素的图像需0.25兆字节的存贮容量。

(2)图像分割,目的是把一个图像分解成它的构成成分,以便对每一目标进行测量。图像分割是一个十分困难的过程。但其测量结果的质量却极大地依赖于图像分割的质量。有两类不同的图像分割方法。一种方法是假设图像各成分的强度值是均匀的并利用这种均匀性;另一种方法寻找图像成分之间的边界,因而是利用图像的不均匀性。主要有直方图分割,区域生长,梯度法等。

(3)边界查索,用于检测图像中线状局部结构,通常是作为图像分割的一个预处理步骤。大多数图像边缘检测技术应用某种形式的梯度算子,可应用对水平方向、垂直方向或对角线方向的梯度敏感的梯度算子,用它们的复合结果可检测任意方向的边界。

(4)图像增强和复原,用于改进图像的质量。不同的增强技术可以用于不同的目的,这取决于应用的类型。如果打算直接观察图像,可以增强对比度。如果是为了进一步对图像作数字处理,可以选择分割(一种突出各图像成分之间的边界和线状结构的运算)。该技术可以是整体的或局部的,也可以在某个频域或者空间域中进行。图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像

的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。

(5)图像分类(识别),图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

(6)图像变换:由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像边缘检测中也有着广泛而有效的应用。

1.3 图像边缘检测算法的主要应用

图像是人类获取和交换信息的主要来源,因此,图像边缘处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像边缘检测与提取处理的应用领域也将随之不断扩大。数字图像边缘检测(Digital Image Processing)又称为计算机图像边缘检测,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像边缘检测最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像边缘检测中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像边缘检测处理方法有图像增强、锐化、复原、编码、压缩、提取等。数字图像边缘检测与提取处理的主要应用领域有:

(1)航天和航空技术方面的应用,数字图像边缘检测技术在航天和航空技术方面的应用,除了月球、火星照片的处理之外,另一方面的应用是在飞机遥感和卫星遥感技术中。从60年代末以来,美国及一

些国际组织发射了资源遥感卫星(如LANDSAT系列)和天空实验室(如SKYLAB),由于成像条件受飞行器位置、姿态、环境条件等影响,图像质量总不是很高。现在改用配备有高级计算机的图像边缘检测系统来判读分析首先提取出其图像边缘,既节省人力,又加快了速度,还可以从照片中提取人工所不能发现的大量有用情报。

(2)生物医学工程方面的应用,数字图像边缘检测在生物医学工程方面的应用十分广泛,而且很有成效。除了CT技术之外,还有一类是对阵用微小图像的处理分析,如红细胞、白细胞分类检测,染色体边缘分析,癌细胞特征识别等都要用到边缘的判别。此外,在X光肺部图像增强、超声波图像边缘检测、心电图分析、立体定向放射治疗等医学诊断方面都广泛地应用图像边缘分析处理技术。

(3)公安军事方面的应用,公安业务图片的判读分析,指纹识别,人脸鉴别,不完整图片的复原,以及交通监控、事故分析等。目前己投入运行的高速公路不停车自动收费系统中的车辆和车牌的自动识别(主要是汽车牌照的边缘检测与提取技术)都是图像边缘检测技术成功应用的例子。在军事方面图像边缘检测和识别主要用于导弹的精确制导,各种侦察照片的判读,对不明来袭武器性质的识别,具有图像传输、存储和显示的军事自动化指挥系统,飞机、坦克和军舰模拟训练系统等;

(4)交通管理系统的应用,随着我国经济建设的蓬勃发展,城市的人口和机动车拥有量也在急剧增长,交通拥挤堵塞现象日趋严重,交通事故时有发生。交通问题已经成为城市管理工作中的重大社会问题,阻碍和制约着城市经济建设的发展。因此要解决城市交通问题,就必须准确掌握交通信息。目前国内常见的交通流检测方法有人工监测、地埋感应线圈、超声波探测器、视频监测4类。其中,视频监测方法比其他方法更具优越性。

视频交通流检测及车辆识别系统是一种利用图像边缘检测技术来实现对交通目标检测和识别的计算机处理系统。通过对道路交通状况信息与交通目标的各种行为(如违章超速,停车,超车等等)的实时检测,实现自动统计交通路段上行驶的机动车的数量、计算行驶车辆的速度以及识别划分行驶车辆的类别等各种有关交通参数,达到监

测道路交通状况信息的作用。

1.4边缘检测中存在的问题与难点

1.边缘检测中存在的问题

边缘检测是图像处理和理解的基本课题之一,它的基本要求是检测精度高,抗噪能力强,不漏掉实际边缘,不虚报边缘,在有些应用中还要求具有高的定位精度。但做到这些比较困难。因为:1)实际图像都含有噪声,并且噪声的分布、方差等信息也都是未知的,而噪声和边

缘都是高频信号;2)由于物理和光照等原因,实际图像中的边缘常常发生在不同的尺度围上,并且每一边缘像元的尺度信息是未知的。因此,传统的边缘检测算法检测效果并不理想,表现在:1)在含噪图像中,边缘检测需要对图像先进行平滑去噪,但在平滑噪声时,很容易丢失图像的高频信息,处理的效果不理想。2)大多数边缘检测算子针对的都是阶跃边缘,但实际图像中多数还是斜坡边缘,虽然斜坡边缘是阶跃边缘特殊的表现形式,但由于斜坡边缘的特性,针对阶跃边缘的边缘检测算子难以得到好的检测效果。3)图像中的边缘通常产生在不同的尺度范围内,利用传统的单一尺度的算子是不可能同时正确检测出所有边缘的,需要利用多个不同尺度的边缘检测算子对各种不同尺度的边缘进行有效检测。4)好的边缘定位是边缘检测的一个要求,在有些应用中对定位的精度要求甚至达到亚像素级,然而,传统的边缘检测方法的定位精度一般只能达到像素级。

2.边缘检测的发展趋势

边缘检测的研究多年来一直受到人们的高度重视,从边缘检测研究的历史和现状来看,边缘检测的研究有几个明显的趋势:1)对原有算法的不断改进。2)新方法、新概念的引入和多种方法的有效综合运用。3)对特殊图像边缘检测的研究越来越得到重视。目前有很多针对立体图像、彩色图像、多光谱图像、合成孔径雷达图像、深度图像、纹理图像、超声图像、计算机断层扫描、磁共振图像、共聚焦激光扫描显微镜图像以及运动图像等特殊图像的边缘检测技术的研究。4)对图像边缘检测评价的研究和对评价系统的研究越来越得到关注。5)将现有的算法应用于工程实际中。

第2章图像的边缘检测与提取

2.1 引言

物体的边缘是以图像局部的不连续性的形式出现的,例如,灰度值的突变,颜色的突变,纹理结构的突变等。从本质上说,边缘常常意味着一个区域的终结和另一个区域的开始。图像边缘信息在图像分布和人的视觉中都是十分重要的,是图像识别中提取图像特征的一个重要属性。

图像边缘检测和计算机视觉都是新兴学科分支,近几十年来,取得了许多重大的成果。随着研究的深入和应用的需要,新概念、新思想、新方法陆续产生,它们正朝着智能化、系统化的方向发展。而作为图像边缘检测和计算机视觉最基本的技术——图像边缘提取技术,也突破了其狭义的概念,成为一个内容丰富的领域。本论文工作的目的是探索和研究经典的图像边缘提取方法。

利用计算机进行图像边缘检测有两个目的:一是产生更适合人观察和识别的图像;二是希望能由计算机自动识别和理解图像。无论为了哪种目的,图像边缘检测中关键的一步就是对包含有大量各式各样景物信息的图像进行分解。图像的边缘是图像的最基本特征。所谓边缘(或边沿)是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。因此,它是图像分割所依赖的重要特征。

由于图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息。而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是我们在图像边缘检测时所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。而边缘提取算法则是图像边缘检测问题中经典技术难题之一,它的解决对于我们进行高层次的特征描述、识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题。在通常情况下,我们可以将信号中的奇异点和突变点认为是图像中的边缘

点,其附近灰度的变化情况可从它相邻像素灰度分布的梯度来反映。根据这一特点,提出了多种边缘检测算子:如 Robert算子、Sobel 算子、Prewitt 算子、Laplacian 算子,Canny算子等。这些方法多是以待处理像素为中心的邻域作为进行灰度分析的基础,实现对图像边缘的提取并已经取得了较好的处理效果。

边缘提取是图像边缘检测和计算机视觉等领域最基本的技术,如何准确、快速的提取图像中的边缘信息一直是这些领域的研究热点,随着此项技术研究的深入和整个领域的不断发展,边缘提取技术已经成为图像分割、目标识别、图像压缩等技术的基础。其理论意义深远,应用背景广泛,有相当的使用价值和理论难度。边缘提取算法的提出通常是面向具体问题的,普遍实用性较差。

物体的边缘是由灰度不连续性所反映的。经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘,即边缘检测局部算子法。众所周知,边缘是图像的基本特征,所谓边缘就是指周围灰度强度有变化的那些像素的集合,是图像分割、纹理分析和图像识别的重要基础。

图像的边缘是待识别类型之间的界线,它是指图像中像素单元灰度有阶跃变化或屋顶状变化的那些像素单元的集合。边缘检测在图像分割、纹理特征提取、形状特征提取和图像识别等方面起着重要的作用。图像边缘对图像识别和计算机分析十分有用。边缘能勾划出目标物体,使观察者一目了然;边缘蕴含了丰富的内在信息,是图像识别中抽取图像特征的重要属性。从本质上说,图像边缘是图像局部特性不连续性的反应,它标志着一个区域的终结和另一个区域的开始。边缘提取首先检出图像局部特性的不连续性,然后再将这些不连续的边缘像素连成完备的边界。图像中灰度变化剧烈的区域即强度的非连续性对应着边缘。边缘提取就是既要检测出强度的非连续性,又能确定它们在图像中的精确位置。在图像中边缘区域的灰度在空间上的变化形式一般可分为三个类型:阶跃型、房顶型和凸缘型,如图2.2所示。

阶跃型房顶型突圆型

图2.1 边缘灰度变化

在图像中边缘有方向和幅度两个特性。沿着边缘走向的灰度变化平缓,而垂直于边缘方向的像素变化剧烈。在边缘上灰度的一阶导数幅度较大,而二阶导数在边缘上的值为零,其左右分别为一正一负两个峰。因此,利用梯度最大值或二阶导数过零点提取边界点成为一种有利的手段。

2.2 边缘检测与提取过程

边缘是图像最基本的特征,所谓边缘就是指周围灰度强度有反差变化的那些像素的集合,是图像分割所依赖的重要基础,也是纹理分析和图像识别的重要基础。理想的边缘检测应当正确解决边缘的有无、真假、和定向定位,长期以来,人们一直关心这一问题的研究,除了常用的局部算子及以后在此基础上发展起来的种种改进方法外,又提出了许多新的技术。

要做好边缘检测初步准备条件如下:

第一,清楚待检测的图像特性变化的形式,从而使用适应这种变化的检测方法。

第二,要知道特性变化总是发生在一定的空间范围内,不能期望用一种检测算子就能最佳检测出发生在图像上的所有特性变化。当需要提取多空间范围内的变化特性时,要考虑多算子的综合应用。

第三,要考虑噪声的影响,其中一个办法就是滤除噪声,这有一定的局限性;再就是考虑信号加噪声的条件检测,利用统计信号分析,或通过对图像区域的建模,而进一步使检测参数化。

第四,可以考虑各种方法的组合,如先找出边缘,然后在其局部利用函数近似,通过内插等获得高精度定位。

第五,在正确检测边缘的基础上,要考虑精确定位的问题。经典

的边缘检测方法得到的往往是断续的、不完整的结构信息,噪声也较为敏感,为了有效抑制噪声,一般都首先对原图像进行平滑,再进行边缘检测就能成功地检测到真正的边缘。

从人的直观感受来说,边缘对应于物体的几何边界。图像上灰度变化剧烈的区域比较符合这个要求,我们一般会以这个特征来提取图像的边缘。但在遇到包含纹理的图像上,这有点问题,比如说,图像中的人穿了黑白格子的衣服,我们往往不希望提取出来的边缘包括衣服上的方格。这就又涉及到纹理图像的处理等方法。但一般认为边缘提取是要保留图像的灰度变化剧烈的区域,这从数学上,最直观的方法就是微分(对于数字图像来说就是差分),在信号处理的角度来看,也可以说是用高通滤波器,即保留高频信号。用于图像识别的边缘提取往往需要输出的边缘是二值图像,即只有黑白两个灰度的图像,其中一个灰度代表边缘,另一个代表背景。此外,还需要把边缘细化成只有一个像素的宽度。

图像边缘检测的基本步骤:

(1)滤波。边缘检测主要基于导数计算,但受噪声影响。但滤波器在降低噪声的同时也导致边缘强度的损失。

(2)增强。增强算法将邻域中灰度有显著变化的点突出显示。一般通过计算梯度幅值完成。

(3)检测。但在有些图像中梯度幅值较大的并不是边缘点。最简单的边缘检测是梯度幅值阈值判定。

(4)定位。精确确定边缘的位置。

总的说来传统边缘检测的流程图如下:

图2.2 边缘检测的流程图

特征提取作为图像边缘检测的一个重要内容,发展了众多的方

法。这些方法经过实践的检验,成为了经典的内容。经典的边缘检测

算子包括:Roberts 算子,Prewitt 算子,Sobel 算子,Log (Laplacian of Gaussian)算子等。这些经典的边缘提取算子在使用时都是使用预定义

好的边缘模型去匹配。

2.3 边缘检测与提取主要算法

边缘检测的实质是采用某种算法来提取出图像中对象与背景间

的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可

以用局部图像微分技术来获得边缘检测算子。

经典的边界提取技术大都基于微分运算。首先通过平滑来滤除图

像中的噪声,然后进行一阶微分或二阶微分运算,求得梯度最大值或

二阶导数的过零点,最后选取适当的阈值来提取边界。

2.3.1 Roberts 边缘算子

Roberts 算子是一种利用局部差分算子寻找边缘的算子,由下式给

出: g(x,y)={[y x f ,(-)1,1(++y x f ]2+[y x f ,(-

)1,1(++y x f ]2}21 , 其中f(x,y)是具有整数像素坐标的输入图像,平方根运算使该处

理类似于在人类视觉系统中发生的过程。

Roberts 算子边缘定位准,但是对噪声敏感。适用于边缘明显而且

噪声较少的图像分割,在应用中经常用Roberts 算子来提取道路。

2.3.2 Sobel 边缘算子

Sobel 边缘算子的卷积和如图2.2所示,图像中的每个像素都用这

两个核做卷积。这两个核分别对垂直边缘和水平边缘响应最大,两个卷积的最大值作为该点的输出位。运算结果是一幅边缘幅度图像。

Sobel 所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越大,产生的影响越小。

2.3.3 Prewitt 边缘算子

Prewitt 边缘算子的卷积和如图2.3所示,图像中的每个像素都用

这两个核做卷积,取最大值作为输出,也产生一幅边缘幅度图像。

Prewitt 因而对噪声相对不敏感,有抑制噪声作用。但是像素平均相当于对图像的低通滤波,所以Prewitt 算子对边缘的定位不如Roberts 算子。

2.3.4 Laplacian 边缘算子

拉普拉斯算子一种二阶边缘检测算子,它是一个线性的、移不变

算子。是对二维函数进行运算的二阶导数算子,对一个连续函数f (x, y)它在图像中的位置(x, y),拉普拉斯值定义为:

222

22f f f x y ???=+?? Laplacian 算子利用二阶导数信息,具有各向同性,即与坐标轴方

向无关,坐标轴旋转后梯度结果不变。使得图像经过二阶微分后,在边缘处产生一个陡峭的零交叉点,根据这个对零交叉点判断边缘。其

4邻域系统和8邻域系统的Laplacian 算子的模板分别如图2.4和图

2.5所示。

图2.4 邻域Laplacian 算子 图2.5 邻域Laplacian 算子

通常使用的拉普拉斯算子3×3模板如图2.6所示:

图2.6 拉普拉斯算子 Laplacian 算子对噪声比较敏感,Laplacian 算子有一个缺点是它对

图像中的某些边缘产生双重响应。所以图像一般先经过平滑处理,通常把Laplacian 算子和平滑算子结合起来生成一个新的模板。

2.3.5 Log 边缘算子

现在介绍一种利用图像强度二阶导数的零交叉点来求边缘点的

算法对噪声十分敏感,所以在边缘增强前滤除噪声。为此,马尔(Marr )和希尔得勒斯(Hildreth )根据人类视觉特性提出了一种边缘检测的方法,该方法将高斯滤波和拉普拉斯检测算子结合在一起进行边缘检测的方法,故称为Log (Laplacian of Gassian )算法。也称之为拉普拉斯高斯算法。该算法的主要思路和步骤如下:

(1)滤波:首先对图像f(x,y)进行平滑滤波,其滤波函数根据人

类视觉特性选为高斯函数,即:

??? ??+-=

)(21exp 21

),(2222y x y x G πσπσ

其中,G (x ,y )是一个圆对称函数,其平滑的作用是可通过σ来

控制的。将图像),(y x G 与),(y x f 进行卷积,可以得到一个平滑的图像,即:

),(*),(),(y x G y x f y x g =

(2)增强:对平滑图像),(y x g 进行拉普拉斯运算,即:

()),(*),(),(2y x G y x f y x h ?=

(3)检测:边缘检测判据是二阶导数的零交叉点(即0),(=y x h 的

点)并对应一阶导数的较大峰值。

这种方法的特点是图像首先与高斯滤波器进行卷积,这样既平滑

了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除。但是由于平滑会造成图像边缘的延伸,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点。这一点可以用二阶导数的零交叉点来实现。拉普拉斯函数用二维二阶导数的近似,是因为它是一种无方向算子。在实际应用中为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点。由于对平滑图像),(y x g 进行拉普拉斯运算可等效为),(y x G 的拉普拉斯运算与),(y x f 的卷积,故上式变为:

),(y x h = ),(*),(2y x G y x f ?

式中),(2y x G ?称为LOG 滤波器,其为: ),(2y x G ?= 22x G

?? + 22y G ?? = ???? ??-+1212224δπδy x ()??? ??+-22221exp y x δ 这样就有两种方法求图像边缘:

①先求图像与高斯滤波器的卷积,再求卷积的拉普拉斯的变换,然后再进行过零判断。

②求高斯滤波器的拉普拉斯的变换,再求与图像的卷积,然后再进行过零判断。

这两种方法在数学上是等价的。上式就是马尔和希尔得勒斯提出

的边缘检测算子(简称M -H 算子),由于LOG 滤波器在),(y x 空间中的图形与墨西哥草帽形状相似,所以又称为墨西哥草帽算子。

拉普拉斯算子对图像中的嗓声相当敏感。而且它常产生双像素宽

的边缘,也不能提供边缘方向的信息。高斯-拉普拉斯算子是效果较

好的边沿检测器,常用的5×5模板的高斯--拉普拉斯算子如图2.7所示:

图2.7 高斯—拉普拉斯算子

高斯--拉普拉斯算子把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平化掉噪声,再进行边缘检测,所以效果更好。

2.3.6 Canny边缘算子

检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。图像边缘检测必须满足两个条件:一是必须能有效地抑制噪声;二是必须尽量精确确定边缘的位置。既要提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感。

1.Canny边缘检测基本原理:

(1)具有既能滤去噪声又保持边缘特性的边缘检测最优滤波器,其采用一阶微分滤波器。采用二维高斯函数的任意方向上的一阶方向导数为噪声滤波器,通过与图像卷积进行滤波;然后对滤波后的图像寻找图像梯度的局部最大值,以此来确定图像边缘。根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。

(2)类似与Marr(LOG)边缘检测方法,也属于先平滑后求导数的方法。

2.Canny边缘检测算法:

step1:用高斯滤波器平滑图象;

step2:用一阶偏导的有限差分来计算梯度的幅值和方向;

step3:对梯度幅值进行非极大值抑制;

step4:用双阈值算法检测和连接边缘。

其数学描述如下:

step1:

二维为高斯函数为:

),(y x G =221

πδ()???

? ??+-2222exp δy x 在某一方向n 上是),(y x G 的一阶方向导数为:

n G =n

G ??= n ▽G n=??????θθsin cos G ?=?????

???????????y G x G 式中:n 式方向矢量,▽G 是梯度矢量。

将图像),(y x f 与n G 作卷积,同时改变n 的方向,n G *),(y x f 取得最

大值时的n 就是正交于检测边缘的方向。

step2:

X E =

*x G ??),(y x f , y E =y G ??*),(y x f ),(y x A =22Y X E E + ???

? ??=Y X

E E Arc tan θ ),(y x A 反映了图像(x,y)点处的边缘强度,

θ是图像(x,y)点处的法向矢量。

step3:

仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须

保留局部梯度最大的点,而抑制非极大值。(non-MaxiMa suppression,NMS )

解决方法:利用梯度的方向。

图示--非极大值抑制

四个扇区的标号为0到3,对应3*3邻域的四种可能组合。在每一点上,邻域的中心像素M与沿着梯度线的两个像素相比。如果M 的梯度值不比沿梯度线的两个相邻像素梯度值大,则令M=0。

step4:

减少假边缘段数量的典型方法是对G(x,y)使用一个阈值。将低于阈值的所有值赋零值。但问题是如何选取阈值?

解决方法:双阈值算法进行边缘判别和连接边缘。

①首先是边缘判别:凡是边缘强度大于高阈值的一定是边缘点;凡是边缘强度小于低阈值的一定不是边缘点;如果边缘强度大于低阈值又小于高阈值,则看这个像素的邻接像素中有没有超过高阈值的边缘点,如果有,它就是边缘点,如果没有,它就不是边缘点。

②其次是连接边缘:双阈值算法对非极大值抑制图像作用两个阈值τ1和τ2,且2τ1≈τ2,从而可以得到两个阈值边缘图像G1(x,y)和G2(x,y)。由于G2(x,y)使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)。双阈值法要在G2(x,y)中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在G1(x,y)的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在G1(x,y)中收集边缘,直到将G1(x,y)连接起来为止。

实际上,还有多种边缘点判别方法,如:将边缘的梯度分为四种:水平、竖直、45度方向、135度方向。各个方向用不同的邻接像素进行比较,以决定局部极大值。若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比并不是最大的,那么将该像素置为零,即不是边缘。

此外,在实际应用中,检测效果还与滤波模板大小有关,当b

N时有较好的检测效果。

2+

1

Canny算子检测方法的优点:①低误码率,很少把边缘点误认为非边缘点;②高定位精度,即精确地把边缘点定位在灰度变化最大的像素上;③抑制虚假边缘。

在这几种算法中除Roberts算子外都使用了图像模板,模板运算是图像的一种处理手段——邻域处理,有许多图像增强效果都可以采用模板运算实现,如平滑效果,中值滤波,油画效果,图像的凹凸效

果等等。在模板运算中,首先定义一个模板,模板的大小以3*3的较常见,也有2*2, 5*5或更大尺寸的。运算时,把模板中心对应到图像的每一个像素位置,然后按照模板对应的公式对中心像素和它周围的像素进行数学运算,算出的结果作为输出图像对应像素点的值。

这些经典的边缘提取算子,虽然各自不同,有不同的长处,但是它们也有共同的特点:每种算子对应的预定义的边缘是它们最适合使用的情形,也就是说它们有针对性。这一点在应用中是有优越性的,它们的针对性可以帮助我们完成特定的任务。同时这也是算子的局限性,对于一般的问题或者情况未知的问题,预定义边缘的方法可能不会达到最佳效果。

第3章算法的选择和实现

近年来,图像分析和处理紧紧围绕理论、实现、应用三方面迅速发展起来。它以众多的学科领域为理论基础,其成果又渗透到众多的学科中,成为理论实践并重,在高新技术领域中占有重要地位的新兴学科。迄今已有许多边缘检测方法,其中Robert算子、Sobel 算子、Prewitt 算子、Laplace 算子、Prewitt算子、Krisdl算子、Canny算子、Gauss边缘检测算子及轮廓提取或轮廓跟踪、利用平滑技术提取图像边缘、利用差分技术提取图像边缘、利用小波分析技术提取图像边缘等方法是常用的方法,但各种算法结果差异很大。

因此,在这一章中,我们将选取两种经典、具有代表性的图像边缘检测与提取算法:一阶微分算子——Canny算子算法和二阶微分算子——高斯-拉普拉斯算子算法,用Matlab语言分别进行编程实现效果。并且这两种算法的效果也是较好的,原因如下:

3.1 坎尼(Canny)算法

检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。而canny算子边缘检测算法则是既能滤去噪声又保持边缘特性的边缘检测的一阶微分算法中的最佳选择方法。其Matlab程

序编写如下:(第一部分图)

I=imread('lena.bmp');

imshow(I);

title('原始图像');

BW1= edge(I,'Canny',0.00) ; %edge调用Canny为检测算子判别阈值为0.00

figure,imshow(BW1);

title( '阈值为0.00的Canny算子边缘检测图像');

BW2= edge(I,'Canny',0.05) ; %edge调用Canny为检测算子判别阈值为0.05

figure,imshow(BW2);

title( '阈值为0.05的Canny算子边缘检测图像');

BW20= edge(I,'Canny',0.1) ; %edge调用Canny为检测算子判别阈值为0.1

figure,imshow(BW20);

title( '阈值为0.1的Canny算子边缘检测图像');

BW21= edge(I,'Canny',0.2) ; %edge调用Canny为检测算子判别阈值为0.2

figure,imshow(BW21);

title( '阈值为0.2的Canny算子边缘检测图像');

BW22= edge(I,'Canny',0.3) ; %edge调用Canny为检测算子判别阈值为0.3

figure,imshow(BW22);

title( '阈值为0.3的Canny算子边缘检测图像');

(第二部分图)

I=imread('lena.bmp');

imshow(I);

title('原始图像');

BW1= edge(I,'Canny',0.01) ; %edge调用Canny为检测算子判别阈值为0.01

figure,imshow(BW1);

相关主题
文本预览
相关文档 最新文档