目录摘要 (1)引言 (2)第一章绪论 (3)1.1 课程设计选题的背景及意义 (3)1.2 图像边缘检测的发展现状 (4)第二章边缘检测的基本原理 (5)2.1 基于一阶导数的边缘检测 (8)2.2 基于二阶导的边缘检测 (9)第三章边缘检测算子 (10)3.1 Canny算子 (10)3.2 Roberts梯度算子 (11)3.3 Prewitt算子 (12)3.4 Sobel算子 (13)3.5 Log算子 (14)第四章MATLAB简介 (15)4.1 基本功能 (15)4.2 应用领域 (16)第五章编程和调试 (17)5.1 edge函数 (17)5.2 边缘检测的编程实现 (17)第六章总结与体会 (20)参考文献 (21)摘要边缘是图像最基本的特征,包含图像中用于识别的有用信息,边缘检测是数字图像处理中基础而又重要的内容。
该课程设计具体考察了5种经典常用的边缘检测算子,并运用Matlab进行图像处理结果比较。
梯度算子简单有效,LOG 算法和Canny 边缘检测器能产生较细的边缘。
边缘检测的目的是标识数字图像中灰度变化明显的点,而导函数正好能反映图像灰度变化的显著程度,因而许多方法利用导数来检测边缘。
在分析其算法思想和流程的基础上,利用MATLAB对这5种算法进行了仿真实验,分析了各自的性能和算法特点,比较边缘检测效果并给出了各自的适用范围。
关键词:边缘检测;图像处理;MATLAB仿真引言边缘检测在图像处理系统中占有重要的作用,其效果直接影响着后续图像处理效果的好坏。
许多数字图像处理直接或间接地依靠边缘检测算法的性能,并且在模式识别、机器人视觉、图像分割、特征提取、图像压缩等方面都把边缘检测作为最基本的工具。
但实际图像中的边缘往往是各种类型的边缘以及它们模糊化后结果的组合,并且在实际图像中存在着不同程度的噪声,各种类型的图像边缘检测算法不断涌现。
早在1965 年就有人提出边缘检测算子,边缘检测的传统方法包括Kirsch,Prewitt,Sobel,Roberts,Robins,Mar-Hildreth 边缘检测方法以及Laplacian-Gaussian(LOG)算子方法和Canny 最优算子方法等。
本设计主要讨论其中5种边缘检测算法。
在图像处理的过程需要大量的计算工作,我们利用MATLAB各种丰富的工具箱以及其强大的计算功能可以更加方便有效的完成图像边缘的检测。
并对这些方法进行比较第一章绪论1.1 课程设计选题的背景及意义边缘是图像的最基本特征,它包含了用于识别的有用信息,为人们描述或识别目标以及解释图像提供了一个重要的特征参数。
物体的边缘是以图像局部特性的不连续性为形式出现的。
从本质上说,边缘常常意味着一个区域的终结和另一个区域的开始,它普遍存在于目标与背景、目标与目标、区域与区域、基元与基元之间,是图像分割所依赖的重要特征,也是纹理特征的重要信息源和形状特征的基础。
有了图像边缘,我们就可以确定物体的几何尺寸并进一步对其测量,确定物体在空间中的几何位置,确定物体的形状特征并对物体进行识别。
图像的边缘信息在图像分析和计算机视觉中都是十分重要的,是图像识别中提取图像特征的一个重要属性。
尽管边缘在数字图像处理中的作用非常重要,但是到目前为止还没有关于边缘的精确且被广泛承认的数学定义。
这里将边缘定义为图像局部特性的不连续性,如灰度的突变、颜色的突变、纹理结构的突变等。
对于灰度图像,边缘是指灰度的突变,是图像中灰度变化较剧烈的地方,也即我们通常所说的信号发生奇异变化的地方。
通常沿边缘走向的像素变化平缓,而垂直于边缘走向的像素变化剧烈。
图像的边缘有方向和幅度两个特性。
按照幅度的变化,边缘可粗略分为两种:一种是阶跃型边缘,它两边象素的灰度值有显著不同;另一种是屋顶状边缘,它位于灰度值从增加到减少的变化的转折点。
图1.1给出这两种边缘的示意图。
(a) 阶跃型边缘 (b) 屋顶状边缘图1.1 边缘类型边缘检测就是要检测出图像中这种灰度的不连续性,同时确定它们在图像中的精确位置,是在局部区域上针对“点”的一种运算,表现为一种典型的信号处理问题。
在图像处理、模式识别和计算机视觉中,图像的边缘检测具有极其重要的意义。
在大量的视觉模块计算中,边缘检测通常是视觉计算的第一步,高层次计算机视觉处理的成功与否极大地依赖于边缘检测算子的优越性能。
1.2 图像边缘检测的发展现状图像的边缘检测有着很长的研究历史,学术思想非常活跃,新理论、新方法不断涌现,一直是国内外图像处理领域研究的热点,目前为止己经提出了许多方法和理论。
至今提出的关于边缘检测的方法和理论尚存在不足之处,在某些具体情况下仍然无法很好的检测出目标物体的边缘,难以找到一种普遍适应性的边缘检测方法。
因此,根据具体的应用要求设计新的边缘检测方法,或对现有的方法进行改进以得到满意的边缘检测结果,这些依然是研究的主流方向。
第二章边缘检测的基本原理图像边缘是图像最基本的特征,边缘在图像分析中起着重要的作用。
所谓边缘(edge)是指图像局部特征的不连续性。
灰度或结构等信息的突变称为边缘,例如:灰度级的突变、颜色的突变、纹理结构的突变。
边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。
当人们看一个有边缘的物体时,首先感觉到的便是边缘,如图2.1所示。
(a) 理想边缘模型 (b) 斜坡边缘模型图2.1 灰度级跃变的边缘模型一条理想的边缘应该具有如图2.1(a) 所示模型的特性。
每个像素都处在灰度级跃变的一个垂直的台阶上(例如图形中所示的水平线通过图像的灰度剖面图)。
而实际上,诸如图像采集系统的性能、采样频率和获得图像的照明条件等因素的影响,得到的边缘往往是模糊的,边缘被模拟成具有“斜坡面”的剖面,如图2.1(b) 所示,在这个模型中不再有细线(宽为一个像素的线条),而是出现了边缘的点包含斜坡中任意点的情况。
由此可以看到:模糊的边缘使边缘的“宽度”较大,面清晰的边缘使边缘的宽度较小。
由于图像中物体的边缘是以图像的局部特征,像素的不连续性形成出现的,同时也是图像局部亮度变化最显著的部分,同时物体的边缘也是不同区域的分界线。
图像的边缘是具有方向和幅度两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素点灰度变化剧烈。
而这种不连续性往往可以通过求导数方便地检测到,根据灰度变化的特点,一般常用一阶导数和二阶导数来检测边缘。
如图2.2所示,第一行是一些具有边缘的图像示例,第二行是沿图像水平方向的一个剖面,第三行和第四行分别为剖面的一阶导数据和二阶导数。
边缘剖面有3种:阶跃形、脉冲形和屋顶形。
(a) 正阶跃形 (b) 负阶跃形 (c) 脉冲形 (d) 屋顶形图2.2 图像边缘的灰度变化与导数阶跃形的边缘处于图像中两个不同灰度值的相邻区间之间,脉冲形的边缘主要对应细条状的灰度值突变区域,而屋顶状的边缘上升沿和下降沿都比较缓慢。
由于采样的缘故,数字图像的边缘总有一些模糊,所以这里垂直上下的边缘剖面都表示有一定的坡度。
在图 2.2(a) 中,对灰度剖面的一阶导数在图像由亮变暗的位置处,有一个向上的阶跃而在其它位置为零。
这表明可以用一阶导数来检测边缘的存在,幅度峰值一般对应边缘位置。
对灰度剖面的二阶导数在一阶导数的阶跃上升区有一个向上的脉冲,而在一阶导数的阶跃下降区有一个向下的脉冲。
在这两个阶跃之间有一个过零点,它的位置正对应原图像的边缘位置。
所以可以用二阶导数的过零点来检测边缘位置,而用二阶导数在过零点处的符号确定边缘像素在图像边缘的暗区或亮区。
同样分析图2.2(b) 可以得到相同的结论。
这这里是由亮变暗,所以与图2.2(a) 相比,剖面左右对换,一阶导数左右对换,二阶导数据上下对换。
图 2.2(c) 中,脉冲形的剖面边缘与图 2.2(a) 的一阶导数形状相同,所以图2.2(c) 的一阶导数形状与图2.2(a) 的二阶导数形状相同,而它的2个二阶导数过零点正好对应脉冲的上升沿和下降沿。
通过检测脉冲剖面的2个二阶导数过零点就可以确定脉冲的范围。
同理,不难得出图2.2(d) 屋顶形边缘,通过检测屋顶形边缘的剖面的一阶导数过零点就可以确定屋顶位置。
图像的边缘有方向的幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。
边缘上的这种变化可以用微分算子检测出来,通常用一阶导数或二阶导数来检测边缘,不同的是一阶导数认为最大值对应边缘位置,而二阶导数以过零点对应边缘位置。
实际上,对于图像中的任意方向上的边缘都可以进行类似的分析。
图像边缘检测中对任意点的一阶导数可以利用该点梯度的幅度来获得,二阶导数可以用拉普拉斯算子得到。
2.1 基于一阶导数的边缘检测梯度是函数变化的一种度量,是图像对应二维函数的一阶导数。
而一幅图像可以看作是图像强度连续导数的取样点数组。
梯度是一阶导数的二维等价式,可定义为向量有两个重要的性质和梯度有关,一是向量G(x,y)的方向就是函数f(x,y)增大时的最大变化率方向;二是梯度的幅值。
对于数字图像,偏导数可用差分来近似,则边缘往往在差分值最大处,最小处或过零点发生。
在计算梯度时,计算空间同一位置处(x,y)的真实偏导数是至关重要的。
而采用上面公式计算的梯度近似值并不位于同一位置。
所以常常使用2×2的一阶差分模板来计算位于内插点[x+1/2,y+1/2]的x方向和y方向偏导数,此时Gx和Gy可表示为2.2 基于二阶导的边缘检测以上介绍的计算一阶导数的方法,把一阶导数大于阈值的点作为边界点的方法,有可能会导致检测出的边缘点过多,数据存储量比较大。
一种在理论上更有效的方法是求梯度局部最大值对应的点,并认为它们是边缘点。
这种去除了一阶导数中的非局部最大值的方法,可以检测出更精确的边缘,一阶导数的局部最大值对应着二阶导数的零交叉点。
这样,通过找图像灰度的二阶导数的零交叉点就能较好地找到精确边缘点。
从图1可以看出,图像灰度二阶导数的过零点对应边缘点。
图2.3 图像的二阶导数第三章边缘检测算子数字图像中,边缘(edge)是指图像局部强度变化最显著的部分。
边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间。
边缘检测常用到的有属于简单空域微分算法的Roberts算子、Sobel算子、Prewitt算子,拉普拉斯高斯(LOG)算法以及 Canny 边缘检测器等。
边缘检测算法的基本步骤:①滤波:改善与噪声有关的边缘检测器的性能;一般滤波器降导致了边缘的损失;增强边缘和降低噪声之间需要折衷;②增强:将邻域强度值有显著变化的点突显出来,边缘增强一般是通过计算梯度幅值来完成的;③检测:最简单的边缘检测判据是梯度幅值阀值;④定位:边缘的位置和方位在子像素分辨率上估计。
3.1 Canny算子Canny边缘检测利用高斯函数的一阶微分,在噪声抑制和边缘检测之间寻求较好的平衡,其表达式近似于高斯函数的一阶导数。