1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/4/1 Thursday,#,Institute of Robotics and Automatic Information System,Click to edit the title text format,机器人与信息自动化研究所,Institute of Robotics&Automatic Information System,Institute of Robotics and Automatic Information System,Click to edit the title text
2、 format,单击此处编辑母版标题样式,2021/4/1 Thursday,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,/,机器视觉及应用,第七章图像锐化与边缘检测,主要内容,图像梯度,一阶微分算子锐化与,边缘检测,水平微分和垂直,微分算子,Kirsch,算子,Sobel,算子,Prewitt,算子,Roberts,算子,Canny,算子,二阶,阶微分算子,Laplacian,算子,LOG,算子,DOG,算子,1,、,图象锐化,作为,增强,算法,,与,图像,边缘检测算法,有关,,但又,有一定的,区别,。,2,、,图像,锐化,的目的是,增强,图像的,边缘轮廓,,使图像的灰
3、度反差增强,图像的边缘轮廓部分通常是灰度突变的地方,。图像,的锐化也被用于物体边缘的检测与提取,。,3,、,图像,的,边缘检测,着重于,检测目标对象的边缘,,边缘检测的结果是目标对象的边界与轮廓,而图像中的其他部分被抑制了,。,图像锐化与边缘检测,4,、,锐化,的结果是,突出,了图像的,边缘轮,廓,但是图像的,其他部分依然保留,。两者都可以在空域或频域进行,在,空域,进行的操作通常采用,一阶或二阶微分算子,。,5,、,二,维,图像通过,梯度,实现图像的,锐化或边缘检测,,图像,锐化,的结果是,原图像与边缘检测,结果图像进行,加减运算,的,结果,。,因此,,锐化是基于边缘检测结果之后的操作,。,
4、6,、,在,实际机器视觉应用中,锐化操作作为图像处理的中间步骤,尤其在图像的空域进行操作时,往往只进行一阶微分或二阶微分运算,其结果不再与原图进行加减运算,如果为了观察锐化效果,才进行这样的操作。,图像锐化与边缘检测,1,、,连续函数的一阶导数表示如下,:,图像梯度,2,、,二维函数,f(x,y),,,其一阶导数,如下:,3,、,图像可以,看成是,二维离散函数,。其离散方式是按照像素实现的,因此,,最小,即为一个像素,。因此,,可以将图像的一阶导数写成如下形式:,图像梯度,4,、,图像,的一阶导数就是两个水平或垂直方向上两个相邻像素的差值,。最小,的步长即为一个像素,,,上式,称为,图像的,一
5、阶微分算子,,由于是通过计算像素差实现的,也称为,一阶差分算子,。,5,、,在数字图像处理中,图像的,梯度采用差分来代替微分表示,。因此,图像的梯度计算如下:,图像梯度,6,、,上,式分别,代表图像在,x,方向和,y,方向的梯度计算方式。因此,图像在某一点的,梯度,可以表示,为,:,图像梯度,7,、,有时,为了,避免计算量,过大,梯度幅值也可以,采用,如下,代替,。,8,、,考虑到图像边界的拓扑结构性,根据图像梯度计算原理又派生出许多相关的,改进计算方法,。,图像梯度,9,、,由图像一阶差分计算,可以推出图像在,x,方向和,y,方向的的,二阶差分,计算公式。,10,、,梯度是一个有,大小和方向
6、的矢量,。梯度的,大小,也称为,梯度幅值或梯度的模,。在数字图像处理中,,通常,将梯度的,幅值大小称为梯度,。,在,平坦,区域,,,梯度,幅,值,小,;在,边缘部分,,梯度,幅,值,大,。计算,图像的梯度大小可以反映出图像的灰度的变化,情况,。,11,、,求解,一阶导数,的过程也是相邻像素灰度值之差,也称为图像,一阶微分,或,一阶差分,。梯度方向是图像函数变化最快的方向,,在,计算图像梯度的时候,除了采用相邻灰度值的差分来计算之外,有时也根据图像的拓扑结构,对梯度计算采用一些改进的方法实现,图像梯度,一,阶微分算子也称为一阶微分算子,其计算过程即为计算图像的梯度大小。其计算结果反映的是图像的变
7、化率,。,常用,的一阶微分算子有,Sobel,算子,,Priwitt,算子,,Roberts,算子,,Kirsch,算子,等,。,对于,一阶微分算子,可以只在某一个方向进行微分运算,这种算子称为,单方向微分算子,。比如,只计算,X,方向的微分或只计算,Y,方向的微分。如果利用这种方法进行图像锐化或边缘检测,也称为单方向锐化或边缘检测算子。在数字图像处理中,一阶差分算子常用,卷积模板,来实现。,一阶微分算子锐化与,边缘检测,分别计算的是,x,方向,的梯度和,y,方向,的梯度。,一阶微分算子锐化与,边缘检测,水平微分和垂直,微分算子,(,a,)水平差分模板,(,b,)垂直差分模板,分别,检测图像在
8、水平或垂直方向,的像素灰度值的,变化,情况。其计算过程与图像的卷积计算,类似,.,一阶微分算子锐化与,边缘检测,水平微分和垂直,微分算子,(,a,)水平微分计算示意图,(,b,)垂直微分计算示意图,不管是水平微分还是垂直微分,其计算结果都可能出现,负数,。因此,需要对这种情况进行处理,常见的,处理方式有两种,:一种是直接取,绝对值,,另一种是在计算结果上整体加上一个,偏移量,。两种处理结果最后的图像效果有一定区别。,一阶微分算子锐化与,边缘检测,水平微分和垂直,微分算子,例:,水平垂直微分,实例,read_image(Image,E:/,示例,/1.bmp,),*,定义水平微分滤波器,Fil
9、terMaskH:=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,mirrored)
10、将垂直微分结果与原图相加,得到垂直锐化结果,add_image(Image,ImageResult,ImageResult2,1,0),一阶微分算子锐化与,边缘检测,水平微分和垂直,微分算子,一阶微分算子锐化与,边缘检测,水平微分和垂直,微分算子,(,a,)原图,(,b,)水平微分结果,(,c,)水平锐化结果,(,d,)垂直微分结果,(,e,)垂直锐化结果,Kirsch,算子采用,八个模板,对同一个像素点进行边缘检测。根据像素点对每个模板的响应程度,选择最大响应结果作为边缘检测结果。,一阶微分算子锐化与,边缘检测,Kirsch,算子,与水平微分和垂直微分比较,,Kirsch,算子增加了检
11、测图像边界的方向,。但是,,Kirsch,算子也是检测的单一方向的梯度变化。只是通过预设的八个方向来判断最大响应的方向,但,不是检测任意方向的梯度变化,,因此,如果边界在任意方向出现,有可能,Kirsch,算子并不能响应该方向。,一阶微分算子锐化与,边缘检测,Kirsch,算子,1,、,Sobel,微分算子是,33,模板,的全方向差分算子。该算子检测的是,任意方向的梯度变化,。,Sobel,算子与水平微分和垂直微分有一些相似。,一阶微分算子锐化与,边缘检测,Sobel,算子,2,、,在实际计算过程中,常用梯度模板与原图进行卷积运算得到,。根据,其计算方式,可以,采用,下图,模板,与原图进行卷积
12、计算,即可得到两个方向的梯度计算结果。,一阶微分算子锐化与,边缘检测,Sobel,算子,Sobel,算子的计算模板,3,、,Sobel,算子与水平微分和垂直微分是类似的,只是,,Sobel,在,x,和,y,方向的梯度基础上,将,梯度幅值,作为最后的变边缘,检测结果,。,4,、,Sobel,算子,方法简单、处理速度快,,并且所得的边缘光滑、连续。但是,边缘较粗,。此外,,Sobel,算子对噪声具有,平滑作用,,提供,较为精确,的边缘方向信息,当边缘定位对精度要求不是很高时,是一种较为常用的边缘检测方法。,一阶微分算子锐化与,边缘检测,Sobel,算子,1,、,Prewitt,算子的思路与,Sob
13、el,算子的思路类似。,Prewitt,算子也是一阶微分算子。该算子利用,像素点上下左右邻点,的,灰度,差实现图像的锐化和边缘检测,并且对噪声具有一定平滑作用。其计算方法与,Sobel,一样,.,一阶微分算子锐化与,边缘检测,Prewitt,算子,2,、,Prewitt,算子与,Sobel,算子的,唯一区别,在于,模板系数,。肉眼几乎无法区别与,Sobel,算子处理效果的差异。,Sobel,算子在垂直于导数方向执行近似于高斯平滑的处理,相对于,Prewitt,算子而言,,Sobel,的效果更好,一些。,一阶微分算子锐化与,边缘检测,Prewitt,算子,Prewitt,算子的计算模板,1,、,
14、Roberts,算子也称为交叉微分算子。,Roberts,算子模板是一个,22,的模板,,左上角的是当前待处理像素,f(x,y),一阶微分算子锐化与,边缘检测,Roberts,算子,Roberts,计算模板,2,、,Roberts,算子根据任一相互垂直方向上的差分来估计梯度,,Robert,算子采用,对角线方向,相邻像素之差来检测图像边缘。该算法,计算简单,速度快,。但是,该算法,对噪声敏感,,适用于边缘比较明显并且噪声很低的图像。此外,,Roberts,算子检测的,边缘不够平滑,,检测出来的图像,边缘较宽,,,Roberts,算子的,边缘定位精度不高,,不能够准确定位到图像的边缘。,一阶微分
15、算子锐化与,边缘检测,Roberts,算子,例,图像,一阶微分锐化与边缘检测,实例,*,读取图像,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),*
16、Prewitt,边缘检测,prewitt_amp(Image,PrewittEdge,),一阶微分算子锐化与,边缘检测,*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,边缘检测,S
17、obel,锐化,Prewitt,边缘检测,Prewitt,锐化,Roberts,边缘检测,Roberts,锐化,一阶微分算子是利用图像的一阶导数进行边缘检测,属于梯度算子范畴,。,Sobel,算子的效果是最好,的。该算子实际是一种类似于,加权平均,的方式来,计算,梯度,。,虽然,Prewitt,也是加权平均,但,Sobel,算子认为邻域内的像素对中心像素影响的权重应该不同,距离越远影响越小。,一阶微分算子锐化与,边缘检测,1,、,当图像上的,灰度分布,比较,均匀,时,采用一阶微分算子可能找不到边界。此时,可以采用,二阶微分算子,对图像进行,边缘检测,。,2,、,二,阶,微分算子边缘检测,的理论
18、依据,是边缘点的,二阶导数,出现,零交叉,的原理。边缘检测是根据图像在边缘位置像素值发生突变的性质,。,3,、,图像的二,阶微分刚好是零交叉位置。因此,可以采用图像的二阶微分算子对图像进行边缘检测,。,4,、,常用,的二阶微分算子有,拉普拉斯算子,(,Laplacian,)、,高斯,-,拉普拉斯算子,(,Laplacian of Gaussian,,,LOG,)、,高斯差分算子,(,Difference of Gaussian,,,DOG,),二阶,微分算子,1,、,Laplacian,算子,是通过二阶微分来检测图像的边缘,,,Laplacian,算子的定义是图像在,x,和,y,方向的二阶微分
19、算子之,和,。,二阶微分算子,Laplacian,算子,注意,,图像的梯度计算是采用差分的方式来表示的,差分有前向差分和后向差分两种,即前一个像素值减去后一个像素值和后一个像素值减去前一个像素值。不管哪种差分,影响的只是计算的正负符号,。,2,、,Laplacian,算子表现的是中心像素与上下左右四个相邻像素之间的关系,。也,可以用模板卷积的方式实现。,Laplacian,算子模板,:,二阶微分算子,Laplacian,算子,Laplacian,算子两种模板,3,、,二,阶微分算子,提取,出的,细节,较一阶,微分算子,多,,表明了二阶微分算子对图像细节更加敏感。但是,二阶微分算子对,噪声,也比
20、较,敏感,。此外,二阶微分算子是基于二阶导数过零点进行检测的,由此得到的,边缘,像素点可能,偏少,。,4,、,Laplacian,算子如果,将对角线上的像素也考虑进去,则,有两种,比较常用的改进的,Laplacian,算子模板。,二阶微分算子,Laplacian,算子,改进的,Laplacian,算子模板,5,、,Laplacian,是一种微分算子,强调图像中灰度的突变的区域,。将,原始图像和拉普拉斯图像叠加在一起,可以得到图像,Laplacian,锐化,处理的效果。设原图为,f(x,y),,锐化处理后的图像为,g(x,y),。则锐化,可以表示,:,二阶微分算子,Laplacian,算子,常用
21、两种,Laplacian,锐化模板,用模板表示,1,、,LOG,算子称为,高斯拉普拉斯算子,,该算子,先,对图像进行,高斯平滑,滤波,,再,使用,Laplacian,算子进行,边缘检测,,以,降低噪声,的影响。可以证明,该算子可以,先,对,高斯函数求二阶导,,然后,再,与原图进行,卷积,运算。,二阶微分算子,LOG,算子,高斯滤波,算子,:,2,、,二阶微分算子,LOG,算子,高斯滤波,算子,:,对,x,求一阶导和二阶导,3,、,LOG,算子核函数,定义为高斯函数分别对,x,和,y,的,二阶导数之和,二阶微分算子,LOG,算子,常用,5,5,的,LOG,卷积模板,LOG,卷积模板,4,、,LO
22、G,算子,是根据图像的信噪比来求出检测边缘的最优滤波器。该方法,综合考虑,了对,噪声的抑制,和对,边缘的检测,两个方面。,LOG,滤波方法能很好检测出边缘,,抗干扰能力强,,边界,定位精度高,,边缘,连续性好,,且能提取对比度弱的边界。该算子与视觉生理中的数学模型相似,因此在图像处理领域中得到了,广泛的应用,。,二阶微分算子,LOG,算子,1,、,DOG,算子称为,高斯差分算子,,该算子是将图像在,不同参数下的高斯滤波,结果进行,相减,,得到差分图,。,DOG,算子与,LOG,算子的结果相近。但是,,DOG,算子的运算速度更快,,所以,通常字速度要求更快的情况下,用,DOG,算子代替,LOG,
23、算子进行边缘检测。,二阶微分算子,DOG,算子,1,、,Canny,算子,是,John F.Canny,于,1986,年开发出来的一个多级,边缘检测,算法。该算子的目标是找到一个,最优的边缘检测,算法,。,2,、,Canny,定义的最优边缘检测包括以下几个方面:首先,算法能够,尽可能多,地标识出图像中的,实际边缘,;其次,标识出的边缘要与实际图像中的,实际边缘尽可能接近,;最后,图像中的,边缘只能标识一次,,并且可能存在的图像,噪声不应标识为边缘,。根据,Canny,定义的最优边缘,一个好的边缘检测应该满足误判率低,边缘应该定位在实际边缘的中心,边缘应该是单一像素的。,Canny,算子,3,、
24、Canny,算子进行边缘检测的步骤可以总结为一下,步骤,:,(,1,)用高斯滤波器对图像进行,平滑,处理;,(,2,)计算图像的,梯度幅值和梯度方向角度,;,(,3,)对梯度幅值图像进行,非极大值抑制,;,(,4,)用,双阈值,来检测和,连接边缘,。,Canny,算子,4,、,Canny,算子首先利用,高斯,滤波进行,平滑,,然后,计算,梯度,幅值与方向角,。将,方向角归并到,0,、,45,、,90,和,135,四个方向,。对,梯度幅值图像进行,非极大值抑制,。非最大值抑制将在,0,、,45,、,90,和,135,四个方向分别处理。将梯度方向上最大梯度值保留,将其他像元删除。,最后使用,两个
25、阈值来判断边缘点,是否是真实的边缘,。如果,边缘像素点梯度值大于高阈值,则被认为是强边缘点。如果边缘梯度值小于高阈值,大于低阈值,则标记为弱边缘点。小于低阈值的点则被抑制掉。强边缘点可以认为是真的边缘。弱边缘点则可能是真的边缘,也可能是噪声引起的,。,Canny,算子认为真实边缘引起的弱边缘点和强边缘点是连通的,而噪声引起的弱边缘点则不连通,。,Canny,算子,例,、,二阶微分算子以及边缘检测实例,Canny,算子,*,读取图像,read_image(Image,E:/,示例,/7-3.png),*Laplacian,算子进行边缘检测,laplace(Image,ImageLaplace,a
26、bsolute,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(Image,ImaAmp,ImaDir,canny,1,nms,20,40),例,、,二阶微分算子以及边缘检测实例,Canny,算子,(,a,)原图,(,b,),Laplacian
27、c,),Laplacian,锐化,(,d,),LOG,(,e,),DOG,(,f,),Canny,Laplacian,算子,直接采用了图像的二阶导数进行计算,不能排除图像,噪声的干扰,,,LOG,算子,能够很好的,去除噪声,,,DOG,的结果,与,LOG,接近,,但是计算,速度,比,LOG,更,快,。但是,上述的二阶微分算子只是提取了图像中的细节部分,如果要得到图像中的边缘像素点,还需要对,二阶微分结果进行阈值化,操作。比如,将小于阈值的点置为黑色,将大于阈值的点置为白色,即可将图中目标物的,边缘,信息提取出来。,二,阶微分算子,检测出边界的,细节,信息比较,多,,获得的是比较细致的边界。反映的边界信息包括了更多的细节信息,但是所反映的,边界不是太清晰,。一,阶微分算子,检测出的,轮廓,比较,粗略,,反映的,边界信息较少,,但是检测出的,轮廓比较清晰,。,总结,






