版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Matab的数字图像边缘检测算法研究专业:自动化班级:2006级4班姓名:目录引言31基于一阶微分的边缘检测算法7Roberts算子7Prewitt算子8Kirsch算子82基于二阶微分的边缘检测算法10Laplacian算子10LoG算子12Canny算子153最佳Sobel边缘检测方法18Sobel图像边缘检测方法18改进的Sobel边缘检测方法18Sobel算子的最佳阈值选取194基于Matlab的实验结果与分析22Matlab简介22一阶微分算法的实验结果与分析25二阶微分算法的实验结果与分析30最佳Sobel边缘检测算法的实验结果与分析35结论40致谢42参考文献43附录源程序清
2、单45摘要在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。边缘检测是图像处理与分析中最基础的内容之一,也是至今仍没有得到圆满解决的一类问题。图像的边缘包含了图像的位置、轮廓等特征,是图像的基本特征之一,广泛地应用于特征描述、图像分割、图像增强、图像复原、模式识别、图像压缩等图像分析和处理中。因此,图像边缘和轮廓特征的检测与提取方法,一直是图像处理与分析技术中的研究热点,新理论、新方法不断涌现。本文研究了一些边缘检测算法,包括传统的Roberts、Sobel、Pre
3、witt、LoG、Canny、Kirsch等算法。经典边缘检测方法的抗噪声性能都较差,解决该问题的主要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要。传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法。本文利用边缘的最大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值。文章中关于这些方法都有较详细的介绍,以及算法的实现步骤。对算法均进行了仿真实验。论文的主要目的是进行图像边缘检测算法性能比较的研究。实验结果表明,本文的算法比较可以为图像处理的后续环节提供一些有益的参考。关键词:边缘检测;图像处理;Matlab; So
4、bel;检测算法AbstractIn image processing, as a basic characteristic, the edge of the image, which is widely used in the recognition, segmentation, intensification and compress of the image, is often applied to high-level domain.Edge detection is one of the most fundamentals in image processing and analyz
5、ing, which is still unsolved. Images edges include images features such as position and outline, which belong to the fundamental features. Edge detection is widely used in image analysis and processing such as feature description, image segmentation, image enhancement, pattern recognition and image
6、compression etc, so Edge Detection and extract of outline figure are the research hotspot in the technology of image processing and analysis all, on which the new theory and methods are put forward constantly.Some edge detection algorithms are researched, including Roberts, Sobel, Prewitt, LoG, Cann
7、y, Kirsch etc. The classic edge detection methods have somedrawbacks in image denoising. The main idea ofresolving this problem is to set athreshold, then compare the threshold with the high-frequency components of an imageto remove the noise.The choice of the threshold is the key of imagedenoising.
8、 Thethreshold of traditional methods is obtained by experiments, and there is no generalmethod to determine it. A new method of edge estimation by the Maximum a Posteriori(MAP)is presented in this paper. It proves how to choose the optimal threshold intheory. These algorithms are introduced in detai
9、l, and the steps of algorithm realization are introduce too.The algorithm is tested by simulation.The main aim of the paper is studying Performance Evaluation in edge detection algorithms, and the detection results are compared. The experiments results show that the algorithms can be a useful refere
10、nce of latter parts of image processing.Keywords:edge detection; image processing; Matlab; Sobel; detection algorithm引言图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息。而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是在图像处理时所需要的非常重要的一些特征条件,这就需要对一幅图像检测并提取出它的边缘。而边缘检测算法则是图像处理问题中经典技术难题之一,它的解决对于进行高层次的特征描述、识别和理解等有着重
11、大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题1。在通常情况下,可以将信号中的奇异点和突交点认为是图像中的边缘点,其附近灰度的变化情况可从它相邻像素灰度分布的梯度来反映。根据这一特点,提出了多种边缘检测算子:如Robert算子、Sobel算子、Prewitt算子、Laplacian算子等。这些方法多是以待处理像素为中心的邻域作为进行灰度分析的基础,实现对图像边缘的提取并已经取得了较好的处理效果。但这类方法同时也存在有边缘像素宽、噪声干扰较严重等缺点,即使采用一些辅助的方法加以去噪,也相应的会带来边缘
12、模糊等难以克服的缺陷。解决该问题的丰要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要2。传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法。本文利用边缘的最大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值。图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度变化比较剧烈的地方,即通常所说的信号发生奇异变化的地方。奇异信号沿边缘走向的灰度变化剧烈,通常将边缘划分为阶跃状和屋顶状两种类型如图1所示。阶跃边缘中两边的灰度值有明显的变化;而屋顶状边缘位于灰度增加与减少的交界处。在数学上可
13、利用灰度的导数来刻画边缘点的变化,对阶跃边缘、屋顶状边缘分别求其一阶、二阶导数3。图1 阶跃边缘和屋顶状边缘处一阶和二阶导数变化规律(其中第一排为理想信号,第二排对应实际信号)对一个边缘来说,有可能同时具有阶跃和线条边缘特性。例如在一个表面上,由一个平面变化到法线方向不同的另一个平面就会产生阶跃边缘;如果这一表面具有镜面反射特性且两平面形成的棱角比较圆滑,则当棱角圆滑表面的法线经过镜面反射角时,由于镜面反射分量,在棱角圆滑表面上会产生明亮光条,这样的边缘看起来像在阶跃边缘上叠加了一个线条边缘由于边缘可能与场景中物体的重要特征对应,所以它是很重要的图像特征。比如,一个物体的轮廓通常产生阶跃边缘,
14、因为物体的图像强度不同于背景的图像强度。论文选题来源于在图像工程中占有重要的地位和作用的实际应用课题。所谓图像工程学科是指将数学、光学等基础学科的原理,结合在图像应用中积累的技术经验而发展起来的学科。图像工程的内容非常丰富,根据抽象程度和研究方法等的不同分为三个层次:图像处理,图像分析和图像理解。如图2所示,在图中,图像分割处于图像分析与图像处理之间,其含义是,图像分割是从图像处理进到图像分析的关键步骤,也是进一步理解图像的基础。图像工程图像处理图像分析图像理解图像分割图2 图像分割在图像工程中的地位和作用图像分割对特征有重要影响。图像分割及基于分割的目标表达、特征提取和参数测量等将原始图像转
15、化为更抽象更紧凑的形式,使得更高层的图像分析和理解成为可能。而边缘检测是图像分割的核心内容,所以边缘检测在图像工程中占有重要的地位和作用。因此边缘检测的研究一直是图像技术研究中热点和焦点,而且人们对其的关注和投入不断提高。本文的主要工作如下:(1)本文对图像边缘检测作了一个概要的说明,并说明了进行图像边缘检测的重要意义。(2)系统的介绍了比较经典的基于一阶微分的图像边缘检测算子及其具体的实现原理,为介绍基于二阶微分的图像边缘检测算子做铺垫,以便于大家的理解。(3)系统介绍了比较经典的基于二阶微分的图像边缘检测算子及其具体的实现原理。(4)介绍了一种基于Sobel算子的改进型算法,此方法的最大优
16、点是:在去噪的同时有效地保留了图像的真实边缘,即给出了边缘检测的最佳结果。(5)对上述的算法用Matlab为工具进行仿真,并对其仿真结果进行分析,分析各种算法的特点。1 基于一阶微分的边缘检测算法1.1 Roberts算子由Roberts提出的算子是一种利用局部差分算子寻找边缘的算子,对于边界陡峭且噪比较小的图像检测效果比较好,它在2×2邻域上计算对角导数,Gi,j又称为Roberts交叉算子。在实际应用中,为简化运算,用梯度函数的Roberts绝对值来近似:用卷积模板,上式变成:其中Gx和Gy由下面图3所示的模板计算:图3 Robert边缘检测算子的模板Roberts算子是该点连续
17、梯度的近似值,而不是所预期的点处的近似值。由上面两个卷积算子对图像运算后,代入(1-3)式,可求得图像的梯度幅度值Gi,j,然后选取适当的门限TH,作如下判断:Gi,j>TH,i,j为阶跃状边缘点,Gi,j为一个二值图像,也就是图像的边缘。由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了Prewitt算子4。1.2 Prewitt算子为在检测边缘的同时减少噪声的影响,Prewitt算子从加大边缘检测算子出发。由2×2扩大到3×3来计算差分算子,所以其卷积模板为图4所示:图4 Prewitt边缘检测算子的模板在图像中的每个像素位
18、置都用这2个模板做卷积,Prewitt算子将方向差分运算与局部平均结合起来,表达式如下:根据(1-4)和(1-5)式可以计算Prewitt梯度,选取适当的阈值T,对梯度图像二值化,得到一幅边缘二值图像。采用Prewitt算子不仅能检测边缘点,而且还能抵制噪声的影响5。1.3 Kirsch算子1971年,提出了一种能检测边缘方向的Kirsch算子新方法:它使用了8个模板来确定梯度幅度值和梯度的方向。Kirsch算子是用一组模板对图像中同一像素求卷积,选取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向6。常用的八方向Kirsch模板各方向间的夹角为45度,模板如图5所示:图5 Kirsc
19、h边缘检测算子的模板上述算子都是计算一阶导数的边缘检测器。其基本思想都是:如果所求的一阶导数高于某一阈值,则确定该点为边缘点。但是这样做会导致检测的边缘点太多。总的来说,造成这些算子不能准确判定边缘的存在及正确位置的原因在于:(1)实际的边缘灰度与理想的边缘灰度值间存在差异,这类算子可能检测出多个边缘。(2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度上的所有边缘。(3)对噪声比较敏感为了解决这一问题,发展并产生了平滑滤波边缘检测方法,也就是边缘检测中理论最成熟的线性滤波方法,也称线性边缘检测算子。在线性滤波边缘检测方法中,最具代表性的是Marr-Hildreth提出的L
20、oG(Laplacian of Gaussian)算法、Canny最优算子的边缘检测方法7。2 基于二阶微分的边缘检测算法2.1 Laplacian算子拉普拉斯算子是二阶导数的二维等效式。函数f(x,y)的拉普拉斯算子公式为:使用差分方程对x和y方向上的二阶偏导数近似如下:这一近似式是以点fi,j+1为中心的,用j-1替换j得到它是以点i,j为中心的二阶偏导数的理想近似式,类似地,把式(2-3)和式(2-4)合并为一个算子,就成为式(2-5)能用来近似拉普拉斯算子的模板:有时候希望邻域中心点具有更大的权值,比如下面式(2-6)的模板就是一种基于这种思想的近似拉普拉斯算子:当拉普拉斯算子输出出现
21、过零点时就表明有边缘存在,其中忽略无意义的过零点(均匀零区)。原则上,过零点的位置精度可以通过线性内插方法精确到子像素分辨率,不过由于噪声,以及由噪声引起的边缘两端的不对称性,结果可能不会很精确8。考虑图6所给的例子。图中表明了对一幅具有简单阶跃边缘的图像进行拉普拉斯运算的结果。输出图像中的一行是:在本例中,对应于原始图像边缘的零交叉点位于两个中心像素点之间。因此,边缘可以用其左边的像素或右边的像素来标记,但整幅图像的标记必须一致。在多数情况下,零交叉点很少恰好在两像素点中间,因此边缘的实际位置要通过内插值来确定。图6 (a)为包含垂直阶跃边缘的图像 (b)为垂直方向的阶跃边缘拉普拉斯响应现在
22、考虑一下图7所示的例子。该图给出了拉普拉斯算法对斜坡边缘的响应,其中的一行输出是:零交叉点直接对应着图像中的一个像素点。当然,这是一种理想情况,图像边缘的实际情况要比这个复杂的多。图7 (a)为包含垂直斜坡边缘的图像(b)为垂直方向的斜坡边缘拉普拉斯响应拉普拉斯算子有两个缺点:其一是边缘方向信息的丢失,其二是它是二阶差分,双倍加强了图像中噪声影响。所以,后来才有人提出了改进的LoG算法。2.2 LoG算子正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感。所以,希望在边缘增强前滤除噪声。为此,Marr和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成Lo
23、G(Laplaciall of GausSian,LoG)算法,也有人称之为拉普拉斯高斯算法。LoG算法理论是从生物视觉理论导出的方法。其基本思想是:首先在一定范围内做平滑滤波,然后利用差分算子检测在相应尺度上的边缘。滤波器的选择取决于两个因素,一是要求滤波器在空间上平稳,空间位置误差要小,二是要求平滑滤波器本身是带通滤波器,在其有限带通内是平稳的,即要求频域误差要小。由信号处理中的测不准原理知,x与是矛盾的,达到测不准下限的滤波器是高斯滤波器。Marr和Hildreth提出的差分算子是各向同性的拉普拉斯二阶差分算子。LoG边缘检测器的基本特征是(1)平滑滤波器是高斯滤波器(2)增强步骤采用二
24、阶导数(二维拉普拉斯函数)(3)边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值这种方法的特点是图像首先与高斯滤波器进行卷积,这一步既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除9。由于平滑会导致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点,这一点可以用二阶导数的零交叉点来实现。拉普拉斯函数用作二维二阶导数的近似,是因为它是一种无方向算子。为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点10。LoG算子的输出h(x,y)是通过卷积运算得到的:根据卷积求导法有:其中:称之为墨西哥草帽算子。由以上分析知,下面两种方法在数学上是等价
25、的:(1)求图像与高斯滤波器卷积,再求卷积的拉普拉斯变换(2)求高斯滤波器的拉普拉斯变换,再求与图像的卷积如果采用第一种方法,就要用到高斯平滑滤波器。直接实现LoG算法的典型模板见图8。图8 典型拉普拉斯高斯模板滤波(通常是平滑)、增强、检测这三个边缘检测步骤对使用LoG边缘检测仍然成立,其中平滑是用高斯滤波器来完成的;增强是将边缘转换成零交叉点来实现的;边缘检测则是通过检测零交叉点来进行的。可以看到,零交叉点的斜率依赖于图像强度在穿过边缘时的变化对比度。剩下的问题是把那些由不同尺度算子检测到的边缘组合起来。在上述方法中,边缘是在特定的分辨下得到的。为了从图像中得到真正的边缘,有必要把那些通过
26、不同尺度算子得到的信息组合起来。这里介绍一下尺度空间概念。高斯平滑运算导致图像中边缘和其它尖锐不连续部分的模糊,其中模糊量取决于的值。值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测器的性能。如果用小尺度的滤波器,又有可能平滑不完全而留有太多的噪声。大尺度滤波器在平滑相互邻近的两个边缘时,可能会将它们连在一起,这样只能检测出一个边缘。因此,在不知道物体尺度和位置的情况下,很难准确确定滤波器的尺度11。2.3 Canny算子Canny检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字逼近。由于实际的
27、图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立。图像也受到摄像机噪声和场景中不希望的细节的干扰。图像梯度逼近必须满足两个要求:首先逼近必须能够抑制噪声效应;其次必须尽量精确地确定边缘的位置。抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性。有一种线性算子可以在抗噪声干扰和精确定位之间提供最佳折衷方案,它就是高斯函数的一阶导数。Canny根据检测的要求,定义了下面三个最优准则:(1)最优检测。对真
28、实边缘不漏检,非边缘点不错检,即要求输出信噪比最大。(2)最优检测精度。检测的边缘点的位置距实际的边缘点的位置最近。(3)检测点与边缘点一一对应。每一个实际存在的边缘点和检测的边缘点是一一对应的关系。Canny首次将上述判据用是数学的形式表示出来,然后采用最优化数值方法,得到最佳边缘检测模板。对于二维图像,需要使用若干方向的模板分别对图像进行卷积处理,再取最可能的边缘方向。现在对Canny边缘检测器作一概括说明。用fi,j表示图像。使用可分离滤波方法求图像与高斯平滑滤波器卷积,得到的结果是一个已平滑数据阵列。其中Gi,j;代表一个高斯滤波的过程,而是高斯函数的标准差,它控制着平滑程度。已平滑数
29、据阵列Si,j的梯度可以使用2×2一阶有限差分近似式来计算x与y偏导数的两个阵列Pi,j与Qi,j:在这个2×2正方形内求有限差分的均值,以便在图像中的同一点计算x和y的偏导数梯度。幅值和方位角可用直角坐标到极坐标的坐标转化公式来计算:其中,反正切函数包含了两个参量,它表示一个角度,其取值范围是整个圆周范围内。为高效率地计算这些函数,尽量不用浮点运算。梯度的幅度和方向也可以通过查找表由偏导数计算。反正切函数的大多数计算使用的是定点运算,很少的几个计算是基本浮点运算,其中的浮点运算是由整数和定点算术通过软件实现的。在上式中,Mi,j反映了图像上的点i,j处的边缘强度,
30、0579;i,j是图像点i,j的法向矢量,正交于边缘方向。根据Canny的定义,中心边缘点为算子Gi,j;与图像fi,j的卷积在边缘梯度方向上的最大值,这样就可以在每一个点的梯度方向上判断此点强度是否为其邻域的最大值来确定该点是否为边缘点。当一个像素满足下面三个条件时,则被认为是图像的边缘点:(1)该点的边缘强度大于沿该点梯度方向的两个相邻像素点的边缘强度(2)与该点梯度方向上相邻两点的方向差小于(3)以该点为中心的3×3邻域中的边缘强度极大值小于某个阈值Canny给出的这三个判据具有广泛的代表意义12。3 最佳Sobel边缘检测方法3.1 Sobel图像边缘检测方法传统的Sobel
31、图像边缘检测方法,是在图像空间利用两个方向模板与图像进行邻域卷积来完成的。这两个方向模板一个检测垂直边缘,一个检测水平边缘,如图9所示。图中,模板内的数字为模板系数,梯度方向与边缘方向总是正交水平边缘Sobel算子垂直边缘Sobel算子图9 Sobel算子模板元素和窗口像素之间的对应关系(以3×3窗口为例)定义如下:设窗口灰度为:模板卷积计算就是下式求乘积和的过程:式中,i=1,2分别代表垂直和水平模板。为模板卷积法边缘检测的输出,L为窗口宽度,对3×3窗口,l=1。将两个卷积结果的最大值,赋给图像中对应模板中心位置的像素,作为该像素的新灰度值,即:3.2 改进的Sobel
32、边缘检测方法一种改进的Sobel边缘检测方法,就是在节中两个模板的基础上,又增加六个方向的模板,即45°,135°,180°,225°,270°,315°,具体如图10所示。这样可以更加有效地检测图像多个方向的边缘,使边缘信息更加完整。上面式(3-2)、式(3-3)中的i=1,2,8代表图中的八个方向13。图10 边缘检测的八个方向模板3.3 Sobel算子的最佳阈值选取尽管八方向的Sobel算子可以得到更完整的边缘信息,但是和Sobel算子一样,它们的抗噪声能力都较差,即对于叠加噪声图像的边缘检测效果很不理想。解决该问题的一个方法就
33、是设定一个阈值,然后与经过Sobel算子检测后的边缘值进行比较,当其幅值大于该阈值时定义为边缘,反之取为零,如式(3-4)所示。由此可以看出,阈值T的选取至关重要。然而怎样选择阈值却是一个比较难的问题,因为在数字图像中无用的背景数据和目标数据常常混在一起,此外在图像中还有噪声的影响。如果阈值选得偏低,则会有较多的噪声被保留而影响边缘的质量;如果阈值选的偏高,则会使那些灰度值较小的边缘丢失,破坏边缘的连续性。上述方法的阈值一般是通过实验的方法决定的,因此很难得到一个最佳结果14。本节将给出一种新的边缘估计方法,通过它可以确定最佳阈值。为此,假设经过Sobel算子检测后的图像可以表示成:其中,是原
34、始图像的边缘部分,是均值为0,方差为的Guass白噪声。由于经过Sobel算子检测后的边缘为图像的高频分量,而图像的高频分量一般服从拉普拉斯分布,其概率密度函数为:其中,为的标准差。基于式(3-5)出的信号模型,可以推出的最大后验概率估计(Maximum a Posteriori:MAP)为:其中,(3-7)式给出的边缘估计方法在小波域称为软门限去噪法,因此可以认定即为所需要的最佳阈值。可以看出,由(3-7)式和(3-8)式所给出的边缘估计的特点是:当图像边缘的幅值大于阈值时,边缘的估计值为边缘幅值减去阈值。因此,具有更强的去噪功能。为了由(3-7)式得到边缘信号的最佳估计,首先需要确定的值。
35、因此要分别估计出和的值。假定图像大小为M×M,那么的值可以用中值法估计:其中median·表示取中值的运算。这样,注意到及就可以得到把上面的(3-9),(3-12)给出的和,的估计值代入(3-7),就可以得到阈值,即最佳阈值。上述方法的最大优点是:在去噪的同时有效地保留了图像的真实边缘,即给出了边缘检测的最佳结果15。4 基于Matlab的实验结果与分析4.1 Matlab简介在科学研究和工程应用中,往往要进行大量的数学计算,其中包括矩阵运算。这些运算一般来说难以用手工精确和快捷地进行,而要借助计算机编制相应的程序做近似计算。目前流行用Basic、Fortran和C语言编制
36、计算程序,既需要对有关算法有深刻的了解,还需要熟练地掌握所用语言的语法及编程技巧。对多数科学工作者而言,同时具备这两方面技能有一定困难。通常,编制程序也是繁杂的,不仅消耗人力与物力,而且影响工作进程和效率。为克服上述困难,美国Mathwork公司于1967年推出了“Matrix Laboratory”(缩写为Matlab)软件包,并不断更新和扩充。目前最新的版本(windows环境)是一种功能强、效率高便于进行科学和工程计算的交互式软件包。其中包括:一般数值分析、矩阵运算、数字信号处理、建模和系统控制和优化等应用程序,并集应用程序和图形于一体便于使用的集成环境中。在此环境下所解问题的Matla
37、b语言表述形式和其数学表达形式相同,不需要按传统的方法编程。不过,Matlab作为一种新的计算机语言,要想运用自如,充分发挥它的威力,也需先系统地学习它。但由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言如Basic、Fortran和C等那样难于掌握16。实践证明,你可在几十分钟的时间内学会Matlab的基础知识,在短短几个小时的使用中就能初步掌握它.从而使你能够进行高效率和富有创造性的计算。Matlab大大降低了对使用者的数学基础和计算机语言知识的要求,而且编程效率和计算效率极高,还可在计算机上直接输出结果和精美的图形拷贝,所以它的确为一高效的科
38、研助手。自推出后即风行美国,流传世界17。综上所述,Matlab语言有如下特点:(1)编程效率高它是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且比Basic、Fortran和C等语言更加接近书写计算公式的思维方式,用Matlab编写程序犹如在演算纸上排列出公式与求解问题。因此,Matlab语言也可通俗地称为演算纸式科学算法语言由于它编写简单,所以编程效率高,易学易懂。(2)用户使用方便Matlab语言是一种解释执行的语言(在没被专门的工具编译之前),它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少。人们用任何一种语言编写程序和调试程序一般都要经过四个步骤:编辑
39、、编译、连接以及执行和调试。各个步骤之间是顺序关系,编程的过程就是在它们之间作瀑布型的循环。Matlab语言与其它语言相比,较好地解决了上述问题,把编辑、编译、连接和执行融为一体。它能在同一画面上进行灵活操作快速排除输入程序中的书写错误、语法错误以至语意错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言。具体地说,Matlab运行时,如直接在命令行输入Mailab语句(命令),包括调用M文件的语句,每输入一条语句,就立即对其进行处理,完成绩译、连接和运行的全过程。又如,将Matlab源程序编辑为M文件,由于Mat1ab磁盘文件也是M文件,所以编
40、辑后的源文件就可直接运行,而不需进行编译和连接。在运行M文件时,如果有错,计算机屏幕上会给出详细的出锗信息,用户经修改后再执行,直到正确为止。所以可以说,Mat1ab语言不仅是一种语言,广义上讲是一种该语言开发系统,即语言调试系统。(3)扩充能力强高版本的Matlab语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且Matlab的库函数同用户文件在形成上一样,所以用户文件也可作为Matlab的库函数来调用。因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高Matlab使用效率和扩充它的功能。另外,为了充分利用Fortran、C等语言的资源,包括用户已编好的Fortran
41、,C语言程序,通过建立Me调文件的形式,混合编程,方便地调用有关的Fortran,C语言的子程序。(4)语句简单,内涵丰富Mat1ab语言中最基本最重要的成分是函数,其一般形式为a,b,c=fun(d,e,f,),即一个函数由函数名,输入变量d,e,f,和输出变量a,b,c组成,同一函数名F,不同数目的输入变量(包括无输入变量)及不同数目的输出变量,代表着不同的含义(有点像面向对象中的多态性。这不仅使Matlab的库函数功能更丰富,而大大减少了需要的磁盘空间,使得Matlab编写的M文件简单、短小而高效。(5)高效方便的矩阵和数组运算Matlab语言象Basic、Fortran和C语言一样规定
42、了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变地照搬到数组间的运算,有些如算术运算符只要增加“·”就可用于数组间的运算,另外,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。在此基础上,高版本的Matlab已逐步扩展到科学及工程计算的其它领域。因此,不久的将来,它一定能名符其实地成为“万能演算纸式的”科学算法语言。(6)方便的绘图功能Matlab的绘图是十分方便的,它有一系列绘图函数(命令),例如线
43、性坐标、对数坐标,半对数坐标及极坐标,均只需调用不同的绘图函数(命令),在图上标出图题、XY轴标注,格(栅)绘制也只需调用相应的命令,简单易行。另外,在调用绘图函数时调整自变量可绘出不变颜色的点、线、复线或多重线。这种为科学研究着想的设计是通用的编程语言所不及的。总之,Matlab语言的设计思想可以说代表了当前计算机高级语言的发展方向,在不断使用中,人们会发现它的巨大潜力18。4.2 一阶微分算法的实验结果与分析4.2.1 实验程序清单Roberts算子程序:clcclear allclose allA = imread('cameraman.tif'); % 读入图像imsh
44、ow(A);title('原图');x_mask = 1 0;0 -1; % 建立X方向的模板y_mask = rot90(x_mask); % 建立Y方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰
45、度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像即边缘图像title('Roberts')Prewitt算子程序:clcclear allclose allA = imread('cameraman.tif'); % 读入图像imshow(A);title('原图');y_mask = -1 -1 -1;0 0 0;1 1 1; % 建立Y方向的模板x_mask = y_mask' % 建立X方向的模板I = im2double(A); % 将图像数据
46、转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像即边缘图像title('Prewitt')Kirsch算子程序clcclea
47、r allclose allA = imread('cameraman.tif'); % 读入图像imshow(A);title('原图');mask1=-3,-3,-3;-3,0,5;-3,5,5; % 建立方向模板mask2=-3,-3,5;-3,0,5;-3,-3,5;mask3=-3,5,5;-3,0,5;-3,-3,-3;mask4=-3,-3,-3;-3,0,-3;5,5,5;mask5=5,5,5;-3,0,-3;-3,-3,-3;mask6=-3,-3,-3;5,0,-3;5,5,-3;mask7=5,-3,-3;5,0,-3;5,-3,-3;m
48、ask8=5,5,-3;5,0,-3;-3,-3,-3;I = im2double(A); % 将数据图像转化为双精度d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2); %取差值变化最大的
49、元素组成灰度变化矩阵dd = max(dd,abs(d3);dd = max(dd,abs(d4);dd = max(dd,abs(d5);dd = max(dd,abs(d6);dd = max(dd,abs(d7);dd = max(dd,abs(d8);grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像,即边缘图像title('Kirsch')4.2.2
50、 实验结果以cameraman图片为例,分别用Roberts、Prewitt和Kirsch三种算法,在无噪声(图11)和有高斯白噪声(图12)的环境下,分别给检测结果。图11对未加噪声图片的检测结果图12 对加入高斯白噪声图片的检测结果4.2.3 实验结果分析通过图11和图12知,在图像没有噪声的情况下,Roberts算子、Prewitt算子、Kirsch算子,都能够比较准确的检测出图像的边缘。加入高斯白噪声后,三种边缘检测算子的边缘检测效果都多少受到噪声的干扰,检测出大量的噪声点和伪边缘,甚至无法检测出边缘。Roberts算子受噪声的影响最大,Kirsch算子、Prewitt算子受噪声影响比
51、Roberts算子小。由于各种原因,图像总是受到随机噪声的干扰,可以说噪声无处不在。经典的边缘检测方法由于引入了各种形式的微分运算,从而必然引起对噪声的极度敏感,边缘检测的结果常常是把噪声当作边缘点检测出来,而真正的边缘也由于受到噪声干扰而没有检测出来。对于有噪声图像来说,一种好的边缘检测方法应该具有良好的噪声抑制能力,同时又有完备的边缘保持特性。基于一阶微分的边缘检测算子具有实现简单、运算速度快等特点,但其检测受噪声的影响很大,检测结果不可靠,不能准确判定边缘的存在及边缘的准确位置,造成这种情况的原因:(1)实际边缘灰度与理想边缘灰度值间存在差异,这类算子可能检测出多个边缘;(2)边缘存在的
52、尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度上的所有边缘;(3)对噪声都比较敏感。4.3 二阶微分算法的实验结果与分析4.3.1 实验程序清单Laplacian算子程序:clcclear allclose allA = imread('cameraman.tif'); % 读入图像imshow(A);title('原图'); mask=0,-1,0;-1,4,-1;0,-1,0; % 建立模板I = im2double(A); % 将数据图像转化为双精度dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(d
53、x); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像,即梯度图像title('Laplacian')LoG算子程序:clcclear allclose allA = imread('cameraman.tif'); % 读入图像imshow(A);title('原图');mask=0,0,-1,0,0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,-1,-2,-1,0;0,0,-1,0,0; % 建立模板I = im2do
54、uble(A); % 将数据图像转化为双精度dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像,即梯度图像title('log')Canny算子程序:clcclear allclose allI = imread('cameraman.tif');% 读入图像imshow(I);title('原图')BW1 = edge(I,'c
55、anny'); % 调用canny函数figure,imshow(BW1);% 显示分割后的图像,即梯度图像title('Canny')4.3.2 实验结果以cameraman图片为例,分别用Laplacian、LoG和Canny三种算法,在无噪声(图13)和有高斯白噪声(图14)的环境下,分别给检测结果。图13对未加噪声图片的检测结果图14 对加入高斯白噪声图片的检测结果4.3.3 实验结果分析由图13和图14可以看出Laplacian算子:对图像中的阶跃性边缘点定位准确,但是对噪声非常敏感,丢失一部分边缘的方向信息,造成一些不连续的检测边缘。LoG算子:首先用高斯函
56、数进行滤波,然后使用Laplacian算子检测边缘,克服了Laplacian算子抗噪声能力比较差的缺点,LoG算子中高斯函数中方差参数的选择很关键,越大避免了虚假边缘的检出,边缘也被平滑造成边缘点的丢失。越小,噪声抑制能力相对下降,容易出现虚假边缘。Canny:采用高斯函数对图像进行平滑处理,因此具有较强的噪声抑制能力;同样该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈值算法检测和连接边缘,边缘的连续性较好。Laplacian算子是对二维函数进行运算的二阶导数算子,与方向无关,对取向不敏感,因而计算量要小。根据边缘的特性,Laplacian算子可以作为边缘提取算子,计算数字图像的Lap
57、lacian值可以借助模板实现,但是它对噪声相当敏感,它相当于高通滤波,常会出现一些虚假边缘。因此,Marr提出首先对图像用Gauss函数进行平滑,然后利用Laplacian算子对平滑的图像求二阶导数后得到的零交叉点作为候选边缘,这就是LoG算子。LoG算子就是对图像进行滤波和微分的过程,是利用旋转对称的LoG模板与图像做卷积,确定滤波器输出的零交叉位置。Canny算子是一个具有滤波、增强和检测的多阶段的优化算子。在进行处理前,Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声(即用高斯平滑滤波器与图像作卷积)。增强边缘是将邻域(或局部)强度值有显著变化的点突出来,一般通过计算梯度幅值来完成。Canny分割算法采用一阶偏导的有限差分来计算梯度的幅值和方向。对一个边缘来说,其一阶导数在边界处存在一个向上的阶跃,或者其二阶导数过零点。在处理过程中,Canny算法还将经过一个非极大值抑制的过程。最后Canny算法将采用两个阈值来连接边缘。传统Canny算法也有不足之处,Canny算法对整幅图像采用同一高斯函数进行滤波,无法顾及图像局部特征信息,一方面很难消除局
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东科贸职业学院《制药过程自动化与仪表》2023-2024学年第一学期期末试卷
- 广东酒店管理职业技术学院《非线性编辑Ⅱ》2023-2024学年第一学期期末试卷
- 广东交通职业技术学院《矿资专业英语》2023-2024学年第一学期期末试卷
- 广东技术师范大学《现代软件工程技术》2023-2024学年第一学期期末试卷
- 广东工商职业技术大学《数学文化与数学思维》2023-2024学年第一学期期末试卷
- 广东潮州卫生健康职业学院《社会工作前沿问题研究》2023-2024学年第一学期期末试卷
- 《赵司长发言多媒体》课件
- 广东碧桂园职业学院《外国文学作品选讲》2023-2024学年第一学期期末试卷
- 赣南师范大学《材料专业基础实验(1)》2023-2024学年第一学期期末试卷
- 赣州师范高等专科学校《微生物遗传育种实验》2023-2024学年第一学期期末试卷
- 经典蓝色商务商业模板
- 邮政代理保险营销方案
- 《中外美术鉴赏》课件西方美术鉴赏导论
- 让思维活跃起来《侦探思维观察力训练营》 心理健康七年级全一册
- 高压氧工作总结
- 中小学教师违反职业道德行为处理办法
- 梁平法制图规则及钢筋翻样讲解
- 译林版八年级上册初二英语全册课时练(一练一练)
- 中国公民健康素养-基本知识与技能
- 智慧物流第5套理论题复制
- 2024届湖北省武汉实验外国语学校数学七上期末统考模拟试题含解析
评论
0/150
提交评论