《ppt课件7-图像锐化与边缘检测.pptx》由会员分享,可在线阅读,更多相关《ppt课件7-图像锐化与边缘检测.pptx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、7-图像锐化与边缘检测机器视觉及应用第七章图像锐化与边缘检测4/主要内容 图像梯度 一阶微分算子锐化与边缘检测水平微分和垂直微分算子Kirsch算子Sobel算子Prewitt算子Roberts算子 Canny算子 二阶阶微分算子Laplacian算子LOG算子DOG算子5/1、图象锐化图象锐化作为增强增强算法算法,与图像边缘检测算法边缘检测算法有关,但又有一定的区别区别。2、图像锐化锐化的目的是增强增强图像的边缘轮廓边缘轮廓,使图像的灰度反差增强,图像的边缘轮廓部分通常是灰度突变的地方。图像的锐化也被用于物体边缘的检测与提取。3、图像的边缘检测边缘检测着重于检测目标对象的边缘检测目标对象的边
2、缘,边缘检测的结果是目标对象的边界与轮廓,而图像中的其他部分被抑制了。6/4、锐化锐化的结果是突出突出了图像的边缘轮边缘轮廓,但是图像的其他部分依然保留其他部分依然保留。两者都可以在空域或频域进行,在空域空域进行的操作通常采用一阶或二阶微分算一阶或二阶微分算子子。5、二维图像通过梯度梯度实现图像的锐化或边缘检测锐化或边缘检测,图像锐化锐化的结果是原图像与边缘检测原图像与边缘检测结果图像进行加减运算加减运算的结果。因此,锐化是基于边缘检测结果之后的操作。6、在实际机器视觉应用中,锐化操作作为图像处理的中间步骤,尤其在图像的空域进行操作时,往往只进行一阶微分或二阶微分运算,其结果不再与原图进行加减
3、运算,如果为了观察锐化效果,才进行这样的操作。7/1、连续函数的一阶导数表示如下:0()( )limxdff xxf xdxx 2、二维函数二维函数f(x,y),其一阶导数其一阶导数如下:0( , )(,y)( , )limxf x yf xxf x yxx 0( , )( ,y)( , )limyf x yf xyf x yyy 8/3、图像可以看成是二维离散函数二维离散函数。其离散方式是按照像素实现的,因此,最小 即为一个像素。因此,可以将图像的一阶导数写成如下形式:( , )(1,y)( , )f x yf xf x yx( , )( ,y1)( , )f x yf xf x yy4、图
4、像的一阶导数就是两个水平或垂直方向上两个相邻像素的差值。最小的步长即为一个像素,上式称为图像的一阶微分算子一阶微分算子,由于是通过计算像素差实现的,也称为一阶差分算子一阶差分算子。9/5、在数字图像处理中,图像的梯度采用差分来代替梯度采用差分来代替微分表示微分表示。因此,图像的梯度计算如下:( , )(1,y)( , )xf x yf xf x y( , )( ,y1)( , )yf x yf xf x y10/6、上式分别代表图像在x方向和y方向的梯度计算方式。因此,图像在某一点的梯度梯度可以表示为:( , )( , ),( , )xyf x yf x yf x y22( , )( , )(
5、 , )xyM x yf x yf x y ( , )tan( , )yxf x yf x y7、有时为了避免计算量避免计算量过大,梯度幅值也可以采用如下代替。( , )( , )( , )xyM x yf x yf x y 11/8、考虑到图像边界的拓扑结构性,根据图像梯度计算原理又派生出许多相关的改进计算方法改进计算方法。9、由图像一阶差分计算,可以推出图像在x方向和y方向的的二阶差分二阶差分计算公式。22(1, )(1, )2 ( , )ff xyf xyf x yx22( ,1)( ,1)2 ( , )ff x yf x yf x yy12/10、梯度是一个有大小和方向的矢量大小和方向
6、的矢量。梯度的大小大小也称为梯度幅值或梯度的模梯度幅值或梯度的模。在数字图像处理中,通常将梯度的幅值大小称为梯度幅值大小称为梯度。在平坦平坦区域区域,梯度梯度幅值小小;在边缘部分边缘部分,梯度幅值大大。计算图像的梯度大小可以反映出图像的灰度的变化情况。11、求解一阶导数一阶导数的过程也是相邻像素灰度值之差,也称为图像一阶微分一阶微分或一阶差分一阶差分。梯度方向是图像函数变化最快的方向,在计算图像梯度的时候,除了采用相邻灰度值的差分来计算之外,有时也根据图像的拓扑结构,对梯度计算采用一些改进的方法实现13/一阶微分算子也称为一阶微分算子,其计算过程即为计算图像的梯度大小。其计算结果反映的是图像的
7、变化率。常用的一阶微分算子有SobelSobel算子,算子,PriwittPriwitt算子,算子,RobertsRoberts算子,算子,KirschKirsch算子算子等。对于一阶微分算子,可以只在某一个方向进行微分运算,这种算子称为单方向微分算子单方向微分算子。比如,只计算X方向的微分或只计算Y方向的微分。如果利用这种方法进行图像锐化或边缘检测,也称为单方向锐化或边缘检测算子。在数字图像处理中,一阶差分算子常用卷积模板卷积模板来实现。14/分别计算的是分别计算的是x x方向方向的梯度和的梯度和y y方向方向的梯度。的梯度。 水平微分和垂直水平微分和垂直微分算子微分算子(a)水平差分模板
8、(b)垂直差分模板分别检测图像在水平或垂直方向水平或垂直方向的像素灰度值的变化变化情况。其计算过程与图像的卷积计算类似.15/ 水平微分和垂直水平微分和垂直微分算子微分算子(a)水平微分计算示意图(b)垂直微分计算示意图16/不管是水平微分还是垂直微分,其计算结果都可能出现负数负数。因此,需要对这种情况进行处理,常见的处处理方式有两种理方式有两种:一种是直接取绝对值绝对值,另一种是在计算结果上整体加上一个偏移量偏移量。两种处理结果最后的图像效果有一定区别。 水平微分和垂直水平微分和垂直微分算子微分算子17/例:水平垂直微分实例read_image(Image, E:/示例/1.bmp)*定义水
9、平微分滤波器FilterMaskH:=3,3,1,1,0,-1,2, 0,-2,1,0,-1*原图像与水平微分滤波器进行卷积convol_image(Image, ImageResult, FilterMaskH, mirrored)*将水平微分结果与原图相加,得到水平锐化结果add_image(Image,ImageResult, ImageResult1, 1, 0)*定义垂直微分滤波器FilterMaskV:=3,3,1,1,2,1,0,0,0,-1,-2,-1*原图像与垂直微分滤波器进行卷积convol_image(Image, ImageResult, FilterMaskV, mi
10、rrored)*将垂直微分结果与原图相加,得到垂直锐化结果add_image(Image,ImageResult, ImageResult2, 1, 0) 水平微分和垂直水平微分和垂直微分算子微分算子18/ 水平微分和垂直水平微分和垂直微分算子微分算子(a)原图 (b)水平微分结果 (c)水平锐化结果(d)垂直微分结果 (e)垂直锐化结果19/Kirsch算子采用八个模板八个模板对同一个像素点进行边缘检测。根据像素点对每个模板的响应程度,选择最大响应结果作为边缘检测结果。 Kirsch算子算子20/与水平微分和垂直微分比较,KirschKirsch算子增加了检测算子增加了检测图像边界的方向图像
11、边界的方向。但是,Kirsch算子也是检测的单一方向的梯度变化。只是通过预设的八个方向来判断最大响应的方向,但不是检测任意方向的梯度变化不是检测任意方向的梯度变化,因此,如果边界在任意方向出现,有可能Kirsch算子并不能响应该方向。 Kirsch算子算子21/1、Sobel微分算子是3 33 3模板模板的全方向差分算子。该算子检测的是任意方向的梯度变化任意方向的梯度变化。Sobel算子与水平微分和垂直微分有一些相似。 Sobel算子算子 (1,1)(1,1)2 (1, )(1, ) (1,1)(1,1) (1,1)(1,1)2 ( ,1)( ,1) (1,1)(1, )1xyDf xyf x
12、yf xyf xyf xyf xyDf xyf xyf x yf x yf xyf xy22xyfDD22/2、在实际计算过程中,常用梯度模板与原图进行卷积运算得到。根据其计算方式,可以采用下图模板与原图进行卷积计算,即可得到两个方向的梯度计算结果。 Sobel算子算子1 0 12 0 21 0 1xD121000121yDSobel算子的计算模板23/3、Sobel算子与水平微分和垂直微分是类似的,只是,Sobel在x和y方向的梯度基础上,将梯度幅值梯度幅值作为最后的变边缘检测结果检测结果。4、Sobel算子方法简单、处理速度快方法简单、处理速度快,并且所得的边缘光滑、连续。但是边缘较粗边缘
13、较粗。此外,Sobel算子对噪声具有平滑作用平滑作用,提供较为精确较为精确的边缘方向信息,当边缘定位对精度要求不是很高时,是一种较为常用的边缘检测方法。 Sobel算子算子24/1、Prewitt算子的思路与Sobel算子的思路类似。Prewitt算子也是一阶微分算子。该算子利用像素点上下左右像素点上下左右邻点邻点的灰度差实现图像的锐化和边缘检测,并且对噪声具有一定平滑作用。其计算方法与Sobel一样. Prewitt算子算子 (1,1)(1,1) (1, )(1, ) (1,1)(1,1) (1,1)(1,1) ( ,1)( ,1) (1,1)(1, )1xyDf xyf xyf xyf x
14、yf xyf xyDf xyf xyf x yf x yf xyf xy22xyfDD25/2、Prewitt算子与Sobel算子的唯一区别唯一区别在于模板系数模板系数。肉眼几乎无法区别与Sobel算子处理效果的差异。Sobel算子在垂直于导数方向执行近似于高斯平滑的处理,相对于Prewitt算子而言,SobelSobel的效果更好的效果更好一些。 Prewitt算子算子1 0 11 0 11 0 1xD111000111yDPrewitt算子的计算模板26/1、Roberts算子也称为交叉微分算子。Roberts算子模板是一个2 22 2的模板的模板,左上角的是当前待处理像素f(x,y) R
15、oberts算子算子| (1,1)( , )| (1, )( ,1)|ff xyf x yf xyf x y11 00 1D2011 0DRoberts计算模板27/2、Roberts算子根据任一相互垂直方向上的差分来估计梯度,Robert算子采用对角线方向对角线方向相邻像素之差来检测图像边缘。该算法计算简单,速度快计算简单,速度快。但是,该算法对噪声敏感对噪声敏感,适用于边缘比较明显并且噪声很低的图像。此外,Roberts算子检测的边缘不够平滑边缘不够平滑,检测出来的图像边缘较宽边缘较宽,Roberts算子的边缘定位精度不高边缘定位精度不高,不能够准确定位到图像的边缘。 Roberts算子算
16、子28/例 图像一阶微分锐化与边缘检测实例*读取图像read_image(Image,E:/示例/7-2.png)* Kirsch边缘检测kirsch_amp (Image, KirschEdge)*Kirsch边缘检测后锐化效果add_image(Image,KirschEdge, KirschSharpen, 1, 0)*Sobel边缘检测sobel_amp(Image, SobelEdge, sum_abs, 3)*Sobel边缘检测后锐化效果add_image(Image,SobelEdge, SobelSharpen, 1, 0)*Prewitt边缘检测prewitt_amp(Ima
17、ge,PrewittEdge)29/*Prewitt边缘检测后锐化效果add_image(Image,PrewittEdge, PrewittSharpen, 1, 0)*Roberts边缘检测roberts(Image,RobertsEdge, gradient_sum)*Roberts边缘检测后锐化效果add_image(Image,RobertsEdge, RobertsSharpen, 1, 0)Kirsch边缘检测原图Kirsch锐化Sobel边缘检测Sobel锐化Prewitt边缘检测Prewitt锐化Roberts边缘检测Roberts锐化30/一阶微分算子是利用图像的一阶导数进
18、行边缘检测,属于梯度算子范畴。SobelSobel算子的效果是最好算子的效果是最好的。该算子实际是一种类似于加权平均加权平均的方式来计算计算梯度梯度。虽然Prewitt也是加权平均,但Sobel算子认为邻域内的像素对中心像素影响的权重应该不同,距离越远影响越小。31/1、当图像上的灰度分布灰度分布比较均匀均匀时,采用一阶微分算子可能找不到边界。此时,可以采用二阶微分算子二阶微分算子对图像进行边缘检测边缘检测。2、二二阶阶微分算子边缘检测微分算子边缘检测的理论依据的理论依据是边缘点的二阶二阶导数导数出现零交叉零交叉的原理。边缘检测是根据图像在边缘位置像素值发生突变的性质。3、图像的二阶微分刚好是
19、零交叉位置。因此,可以采用图像的二阶微分算子对图像进行边缘检测。4、常用的二阶微分算子有拉普拉斯算子拉普拉斯算子(Laplacian)、高斯高斯- -拉普拉斯算子拉普拉斯算子(Laplacian of Gaussian,LOG)、高斯差分算子高斯差分算子(Difference of Gaussian,DOG)32/1、LaplacianLaplacian算子算子是通过二阶微分来检测图像的边缘,Laplacian算子的定义是图像在x x和和y y方向的二阶微分算子方向的二阶微分算子之之和和。 Laplacian算子算子22222fffxy2(1, )+ (1, )+ ( ,1)+ ( ,1)-4
20、 ( , )ff xyf xyf x yf x yf x y注意注意,图像的梯度计算是采用差分的方式来表示的,差分有前向差分和后向差分两种,即前一个像素值减去后一个像素值和后一个像素值减去前一个像素值。不管哪种差分,影响的只是计算的正负符号。33/2、Laplacian算子表现的是中心像素与上下左右四个相邻像素之间的关系。也可以用模板卷积的方式实现。Laplacian算子模板: Laplacian算子算子10 1 014 10 1 0L201 01 4101 0LLaplacian算子两种模板34/3、二二阶微分算子阶微分算子提取出的细节细节较一阶微分算子多多,表明了二阶微分算子对图像细节更加
21、敏感。但是,二阶微分算子对噪声噪声也比较敏感敏感。此外,二阶微分算子是基于二阶导数过零点进行检测的,由此得到的边缘边缘像素点可能偏少偏少。4、Laplacian算子如果将对角线上的像素也考虑进去,则有两种比较常用的改进的Laplacian算子模板。 Laplacian算子算子31 1 118 11 1 1L4-1 2 -12 -4 2-1 2 -1L改进的Laplacian算子模板35/5、Laplacian是一种微分算子,强调图像中灰度的突变的区域。将原始图像和拉普拉斯图像叠加在一起,可以得到图像LaplacianLaplacian锐化锐化处理的效果。设原图为f(x, y),锐化处理后的图像
22、为g(x,y)。则锐化可以表示: Laplacian算子算子常用两种Laplacian锐化模板2( , )( , )( , )g x yf x yf x y 用模板表示50 -1 0-1 5 -10 -1 0L6-1 -1 -1-1 9 -1-1 -1 -1L36/1、LOG算子称为高斯拉普拉斯算子高斯拉普拉斯算子,该算子先先对图像进行高斯平滑高斯平滑滤波,再再使用LaplacianLaplacian算子进行边缘检测边缘检测,以降低噪声降低噪声的影响。可以证明,该算子可以先先对高斯高斯函数求二阶导函数求二阶导,然后再再与原图进行卷积卷积运算。 LOG算子算子高斯滤波算子:222()/2( ,
23、)xyg x ye37/2、 LOG算子算子高斯滤波算子:222()/2( , )xyg x ye对x求一阶导和二阶导22( 22)/2( 22)/22( , )xyxyxg x yeexx 2222222( 22)/2( 22)/2( 22)/224241( , )xyxyxyxxg x yeeex 38/3、LOGLOG算子核函数算子核函数定义为高斯函数分别对x和y的二阶二阶导数之和导数之和 LOG算子算子常用55的LOG卷积模板22222222()22242LOG=( , )+( , )yxyxyg x yg x yex001 000121 012 16210121 0001 00244
24、424 08044 8 24 84-4 080 -424442LOG卷积模板39/4、LOGLOG算子算子是根据图像的信噪比来求出检测边缘的最优滤波器。该方法综合考虑综合考虑了对噪声的抑制噪声的抑制和对边缘边缘的检测的检测两个方面。LOG滤波方法能很好检测出边缘,抗干扰能力强抗干扰能力强,边界定位精度高定位精度高,边缘连续性好连续性好,且能提取对比度弱的边界。该算子与视觉生理中的数学模型相似,因此在图像处理领域中得到了广泛的应用广泛的应用。 LOG算子算子40/1、DOG算子称为高斯差分算子高斯差分算子,该算子是将图像在不同参数下的高斯滤波不同参数下的高斯滤波结果进行相减相减,得到差分图。DO
25、G算子与LOG算子的结果相近。但是,DOGDOG算子算子的运算速度更快的运算速度更快,所以,通常字速度要求更快的情况下,用DOG算子代替LOG算子进行边缘检测。 DOG算子算子2222221212()/2()/22212111( , )( , )2xyxyDOGgx ygx yee41/1、CannyCanny算子算子是John F. Canny于1986年开发出来的一个多级边缘检测边缘检测算法。该算子的目标是找到一个最优的最优的边缘检测边缘检测算法。2、Canny定义的最优边缘检测包括以下几个方面:首先,算法能够尽可能多尽可能多地标识出图像中的实际边缘实际边缘;其次,标识出的边缘要与实际图像
26、中的实际边缘尽可实际边缘尽可能接近能接近;最后,图像中的边缘只能标识一次边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘噪声不应标识为边缘。根据Canny定义的最优边缘,一个好的边缘检测应该满足误判率低,边缘应该定位在实际边缘的中心,边缘应该是单一像素的。42/3、Canny算子进行边缘检测的步骤可以总结为一下步步骤骤:(1)用高斯滤波器对图像进行平滑平滑处理;(2)计算图像的梯度幅值和梯度方向角度梯度幅值和梯度方向角度;(3)对梯度幅值图像进行非极大值抑制非极大值抑制;(4)用双阈值双阈值来检测和连接边缘连接边缘。43/4、Canny算子首先利用高斯高斯滤波进行平滑平滑,然后计算梯度梯
27、度幅值与方向角幅值与方向角。将方向角归并到0、45、90和135四个方向。对梯度幅值图像进行非极大值抑制非极大值抑制。非最大值抑制将在0、45、90和135四个方向分别处理。将梯度方向上最大梯度值保留,将其他像元删除。最后使用两个阈值来判断边缘点两个阈值来判断边缘点是否是真实的边缘。如果边缘像素点梯度值大于高阈值,则被认为是强边缘点。如果边缘梯度值小于高阈值,大于低阈值,则标记为弱边缘点。小于低阈值的点则被抑制掉。强边缘点可以认为是真的边缘。弱边缘点则可能是真的边缘,也可能是噪声引起的。Canny算子认为真实边缘引起的弱边缘点和强边缘点是连通的,而噪声引起的弱边缘点则不连通。44/例、二阶微分
28、算子以及边缘检测实例*读取图像read_image(Image,E:/示例/7-3.png)*Laplacian算子进行边缘检测laplace(Image, ImageLaplace, absolute, 5, n_4)*Laplacian算子结果加上原图,得到图像锐化结果add_image(Image,ImageLaplace, LaplaceSharpen, 1, 0)*LOG算子laplace_of_gauss(Image,ImageLaplace1, 2)*DOG算子diff_of_gauss(Image,DiffOfGauss, 3, 1.6)*Canny算子edges_image(
29、Image,ImaAmp, ImaDir, canny, 1, nms, 20, 40)45/例、二阶微分算子以及边缘检测实例(a)原图 (b)Laplacian (c)Laplacian锐化(d)LOG (e)DOG (f)Canny46/LaplacianLaplacian算子算子直接采用了图像的二阶导数进行计算,不能排除图像噪声的干扰噪声的干扰,LOGLOG算子算子能够很好的去除噪去除噪声声,DOGDOG的结果与与LOGLOG接近接近,但是计算速度速度比LOG更快快。但是,上述的二阶微分算子只是提取了图像中的细节部分,如果要得到图像中的边缘像素点,还需要对二阶微分结果进行阈值化二阶微分结果进行阈值化操作。比如,将小于阈值的点置为黑色,将大于阈值的点置为白色,即可将图中目标物的边缘边缘信息提取出来。二二阶微分算子阶微分算子检测出边界的细节细节信息比较多多,获得的是比较细致的边界。反映的边界信息包括了更多的细节信息,但是所反映的边界不是太清晰边界不是太清晰。一阶微分算阶微分算子子检测出的轮廓轮廓比较粗略粗略,反映的边界信息较少边界信息较少,但是检测出的轮廓比较清晰轮廓比较清晰。