当前位置:文档之家› 边缘提取不同算子方法的分析比较

边缘提取不同算子方法的分析比较

目录摘要 (I)1简介 (1)1.1MATLAB 简介 (1)1.2数字图像处理简介 (1)2边缘检测 (3)2.1边缘的含义 (3)2.2边缘检测的含义 (3)2.3边缘检测的步骤 (3)3常用的边缘检测算子 (5)3.1微分算子 (5)3.1.1 Sobel算子 (5)3.1.2 robert算子 (6)3.1.3 prewitt算子 (6)3.2 Laplacian算子 (6)3.3 Log算法 (7)3.4 Canny边缘检测法 (7)4程序设计 (8)5运行结果 (10)6边缘检测结果比较 (12)7心得体会 (13)参考文献 (14)摘要边缘检测是利用边缘增强算子,突出图像中的局部边缘,然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。

本设计利用MATLAB软件分析几种应用于数字图像处理中的边缘检测算子,根据它们在实践中的应用结果进行研究,主要包括:Robert 边缘算子、Prewitt 边缘算子、Sobel 边缘算子、LoG边缘算子以及Laplacian 算子等对图像边缘检测,根据实验处理结果对几种算子进行比较。

关键词:Matlab边缘检测算子1简介1.1MATLAB简介Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言。

有人称它为“第四代”计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化界面设计、便捷的与其它程序和语言接口的功能。

随着Matlab语言功能越来越强大,不断适应新的要求并提出新的解决方法,可以预见,在科学运算,自动控制与科学绘图领域,Matlab语言将长期保持其独一无二的地位。

Matlab 的特点如下:(1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;(2) 具有完备的图形处理功能,实现计算结果和编程的可视化;(3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;(4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具.Matlab的优势如下:(1)友好的工作平台和编程环境(2)简单易用的程序语言(3)强大的科学计算机数据处理能力(4)出色的图形处理功能(5)应用广泛的模块集合工具箱(6)实用的程序接口和发布平台(7)应用软件开发(包括用户界面)1.2数字图像处理简介数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,以提高图像的实用性,达到人们所要求的预期结果。

从处理的目的来讲主要有:(1)提高图像的视感质量,以达到赏心悦目的效果;(2)提取图像中所包含的某些特征或特殊信息;(3)对图像数据进行变换、编码和压缩,以便用于图像的存储和传输。

数字图像处理技术是计算机技术、信息论和信号处理相结合的综合性学科。

数字图像处理的特点有如下几点:(1)处理信息量很大:数字图像处理的信息大多是二维信息,处理信息量很大,对计算机的计算速度、存储容量等要求较高。

(2)占用频带较宽:数字图像处理占用的频带较宽。

与语言信息相比,占用的频带要大几个数量级。

(3)各像素相关性大:数字图像中各个像素是不独立的,其相关性大。

在图像画面上,经常有很多像素有相同或接近的灰度。

就电视画面而言,同一行中相邻两个像素或相邻两行间的像素,其相关系数可达0.9以上,而相邻两帧之间的相关性比帧内相关性一般说还要大些。

(4)无法复现三维景物的全部几何信息:由于图像是三维景物的二维投影,一幅图象本身不具备复现三维景物的全部几何信息的能力,很显然三维景物背后部分信息在二维图像画面上是反映不出来的。

(5)受人的因素影响较大:数字图像处理后的图像一般是给人观察和评价的,因此受人的因素影响较大。

由于人的视觉系统很复杂,受环境条件、视觉性能、人的情绪爱好以及知识状况影响很大,作为图像质量的评价还有待进一步深入的研究。

另一方面,计算机视觉是模仿人的视觉,人的感知机理必然影响着计算机视觉的研究。

2边缘检测2.1边缘的含义边缘(edge)是指图像局部强度变化最显著的部分,边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础。

图像分析和理解的第一步常常是边缘检测(edge detection),由于边缘检测十分重要,因此成为机器视觉研究领域最活跃的课题之一。

边缘是图像的最重要的特征。

边缘是指周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。

边缘检测主要是灰度变化的度量、检测和定位。

有很多种不同的边缘检测方法,同一种方法使用的滤波器也不尽相同。

图像边缘检测就是研究更好的边缘检测方法和检测算子。

2.2边缘检测的含义边缘检测的基本思想首先是利用边缘增强算子,突出图像中的局部边缘,然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。

由于噪声和模糊的存在,监测到的边界可能会变宽或在某点处发生间断。

因此,边界检测包括两个基本内容:(1)用边缘算子提取出反映灰度变化的边缘点集。

(2)在边缘点集合中剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。

图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。

有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于查找一类和基于零穿越的一类。

基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。

基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是Laplacian过零点或者非线性差分表示的过零点。

2.3边缘检测的步骤(1)滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。

需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折中。

(2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。

增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。

边缘增强一般是通过计算梯度幅值来完成的。

(3)检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。

最简单的边缘检测判据是梯度幅值阈值判据。

(4)定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。

在边缘检测算法中,前三个步骤用得十分普遍。

这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向。

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

我们将边缘定义为图像中灰度发生急剧变化的区域边界。

图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。

经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的的。

3常用的边缘检测算子3.1微分算子3.1.1 Sobel 算子Sobel 算子是一种梯度幅值,通常可以以数字化方式用下表所示的卷积核来实现。

图像中的每个都用这两个核做卷积,一个核对通常的垂直边缘响应最大而另一个对水平边缘响应最大。

两个卷积的最大值值作为该点的输出值,运算结果是一副边缘幅度的图像。

X ,Y 方向各用一个模板,两个模板组合起来构成1个梯度算子。

X 方向模板对垂直边缘影响最大,Y 方向模板对水平边缘影响最大。

模板如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---121000121⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---1012021013.1.2 robert 算子Roberts 算子是一种斜向偏差分的梯度计算方法, 梯度的大小代表边缘的强度, 梯度的方向与边缘走向垂直。

该算子定位精度高, 但容易丢失部分边缘。

因为没进行平滑处理, 不具有抑制噪声的能力。

用该算子处理边缘陡峭度高且噪声小的图像效果较佳。

Roberts 算子由下式给出:{}1222(,)g x y =+3.1.3 prewitt 算子prewitt 算子是加权平均算子,对噪声有抑制作用,但是像素平均相当于对图像进行地同滤波,所以prewitt 算子对边缘的定位不如robert 算子。

模板如下:3.2 Laplacian 算子拉普拉斯高斯算子是一种二阶导数算子,将在边缘处产生一个陡峭的零交叉。

前面介绍的几种梯度法具有方向性,不能对各种走向的边缘都具有相同的增强效果。

但是Laplacian 算子是各向同性的,能对任何走向的界线和线条进行锐化,无方向性。

这是拉普拉斯算子区别于其他算法的最大优点。

对一个连续函数f(x,y),它在位置(x,y)的拉普拉斯算子定义如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---111000111⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---101101101模板如下:3.3 Log 算法正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感,所以,希望在边缘增强前滤除噪声。

为此,Marr 和Hildreth 将高斯滤波和拉普拉斯边缘检测结合在一起,形成Log (Laplacian of Gaussian, Log )算法,也称之为拉普拉斯高斯算法。

Log 算子的输出h(x,y)是通过卷积运算得到的:2(,)[(,)(,)]h x y g x y f x y =∇⨯3.4 Canny 边缘检测法Canny 边缘检测是一种比较新的边缘检测算子,具有很好的边缘监测性能,在图像处理中得到了越来越广泛的应用。

它依据图像边缘检测最优准则设计canny 边缘检测算法:(1)首先用2D 高斯滤波模板进行卷积以消除噪声(2)利用导数算子找到图像灰度地沿着两个方向的偏导数()Y X G G ,,并求出梯度的大小: 22y x G G G += (3)利用(2)的结果计算出梯度的方向 (4)一旦知道了边缘的方向,就可以把边缘的梯度方向大致分为四种:水平、竖直、45度方向、135度方向。

通过梯度的方向,就可以找到这个像素梯度方向的邻接像素。

(5)遍历图像,若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,那么这个像素值置为0,即不是边缘。

(6)使用累计直方图计算两个阈值,大于高阈值的一定是边缘,小于低阈值的一定不是边缘,介于之间的,看这个像素的邻接像素中有没有超过高阈值的边缘像素,如果有的话那么它就是边缘了,否则它就不是边缘。

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----010141010⎪⎪⎭⎫ ⎝⎛=x y G G Arc tan θ4程序设计在Matlab图像处理工具箱中,提供了edge函数利用以上算子来检测灰度图像的边缘。

相关主题