几种常用边缘检测算法的比较.docx
- 文档编号:4867143
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:17
- 大小:156.81KB
几种常用边缘检测算法的比较.docx
《几种常用边缘检测算法的比较.docx》由会员分享,可在线阅读,更多相关《几种常用边缘检测算法的比较.docx(17页珍藏版)》请在冰豆网上搜索。
几种常用边缘检测算法的比较
几种常用边缘检测算法的比较
摘要:
边缘是图像最基本的特征,边缘检测是图像分析与识别的重要环节。
基于微分算子的边缘检测是目前较为常用的边缘检测方法。
通过对Roberts,Sobel,Prewitt,Canny和Log及一种改进Sobel等几个微分算子的算法分析以及MATLAB仿真实验对比,结果表明,Roberts,Sobel和Prewitt算子的算法简单,但检测精度不高,Canny和Log算子的算法复杂,但检测精度较高,基于Sobel的改进方法具有较好的可调性,可针对不同的图像得到较好的效果,但是边缘较粗糙。
在应用中应根据实际情况选择不同的算子。
0引言
边缘检测是图像分析与识别的第一步,边缘检测在计算机视觉、图像分析等应用中起着重要作用,图像的其他特征都是由边缘和区域这些基本特征推导出来的,边缘检测的效果会直接影响图像的分割和识别性能。
边缘检测法的种类很多,如微分算子法、样板匹配法、小波检测法、神经网络法等等,每一类检测法又有不同的具体方法。
目前,微分算子法中有Roberts,Sobel,Prewitt,Canny,Laplacian,Log以及二阶方向导数等算子检测法,本文仅将讨论微分算子法中的几个常用算子法及一个改进Sobel算法。
1边缘检测
在图像中,边缘是图像局部强度变化最明显的地方,它主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间。
边缘表明一个特征区域的终结和另一特征区域的开始。
边缘所分开区域的内部特征或属性是一致的,而不同的区域内部特征或属性是不同的。
边缘检测正是利用物体和背景在某种图像特征上的差异来实现检测,这些差异包括灰度、颜色或纹理特征,边缘检测实际上就是检测图像特征发生变化的位置。
边缘的类型很多,常见的有以下三种:
第一种是阶梯形边缘,其灰度从低跳跃到高;第二种是屋顶形边缘,其灰度从低逐渐到高然后慢慢减小;第三种是线性边缘,其灰度呈脉冲跳跃变化。
如图1所示。
(a)阶梯形边缘(b)屋顶形边缘
(b)线性边缘
图像中的边缘是由许多边缘元组成,边缘元可以看作是一个短的直线段,每一个边缘元都由一个位置和一个角度确定。
边缘元对应着图像上灰度曲面N阶导数的不连续性。
如果灰度曲面在一个点的N阶导数是一个Delta函数,那么就定义灰度曲面在这个点是N阶不连续,则线性边缘是0阶不连续,阶梯形边缘是一阶不连续,而屋顶形边缘是二阶不连续。
在实际中,单纯的阶跃和线性边缘图像是很少见的,由于大多数传感元件具有低频特性,使得阶跃边缘变成斜坡形边缘,线性边缘变成屋顶形边缘。
边缘检测可分为滤波、增强、检测、定位四个步骤,由于微分边缘检测算法主要是基于图像强度的一阶和二阶导数,而导数的计算对噪声很敏感,噪声的存在可能会使检测到的边缘变宽或在某些点处发生间断,因此,需要使用滤波器来滤掉噪声。
大多数滤波器在降低噪声的同时也会引起边缘强度的损失,增强图像边缘可以弥补损失,但增强边缘和降低噪声之间需要折衷。
在边缘检测算法中,前三个步骤用得十分普遍,这是因为在大多数情况下,只需要边缘检测器指出边缘出现在图像中某一像素点的附近即可,而没有必要指出边缘的精确位置。
2微分边缘检测算子
2.1一阶微分算子
2.1.1Roberts算子
Roberts算子是一种利用局部差分算子寻找边缘的算子,它由下式给出:
(1)
其中,
、
、
和
分别为4领域的坐标,且是具有整数像素坐标的输入图像。
Robert算子是
算子模板。
图2所示的2个卷积核形成了Roberts算子。
图像中的每一个点都用这2个核做卷积。
1
0
0
-1
0
1
-1
0
图2Roberts算子
Roberts算子边缘定位精度较高,但容易丢失一部分边缘,同时由于没有经过图像平滑计算,因此不能抑制噪声,该算子对具有陡峭的低噪声图像响应较好。
2.1.2Sobel算子
Sobel算子是一种一阶微分算子,它利用像素临近区域的梯度值来计算1个像素的梯度,然后根据一定的阈值来取舍。
它由下式给出:
(2)
Sobel算子是
算子模板。
图3所示的2个卷积核
、
形成Sobel算子。
一个核通常的垂直边缘响应最大,而另一个核对水平边缘响应最大。
2个卷积的最大值作为该点的输出值。
运算结果是一幅边缘幅度图像。
-1
0
1
-2
0
2
-1
0
1
1
2
1
0
0
0
-1
-2
-1
图3Sobel算子
2.1.3Prewitt算子
Prewitt算子由下式给出:
(3)
Prewitt算子是
算子模板。
图4所示的2个卷积核
和
形成了Prewitt算子。
与Sobel算子的方法一样,图像中的每个点都用这2个核进行卷积。
取最大值作为输出值。
Prewitt算子也产生一副边缘幅度图像。
-1
0
1
-1
0
1
-1
0
1
1
1
1
0
0
0
-1
-1
-1
图4Prewitt算子
2.1.4Canny算子
传统的Canny算法是通过在
邻域内求有限差分来计算梯度幅值。
Canny算子法实现的方式为:
图像先用2D高斯滤波模板进行卷积以消除噪声,再对滤波后图像中的每个像素计算其梯度的大小和方向。
计算可采用以下
大小的模板作为对
方向和
方向偏微分的一阶近似:
由此得到梯度的大小M和方向
:
通过梯度的方向,可以找到这个像素梯度方向的邻接像素:
3
2
1
0
x
0
1
2
3
最后通过非最大值抑制以及阈值化和边缘连接。
Canny算子有信噪比准则、定位精度准则和单边缘响应准则。
Canny算法的实质是用一个准高斯函数做平滑运算,然后以带方向的一阶微分算子定位导数最大值,它可用高斯函数的梯度来近似,在理论上很接近k个指数函数的线性组合形成的最佳边缘算子。
它是一阶传统微分中检测阶跃性边缘效果最好的算子之一,它比Prewitt算子、Sobel算子的去噪能力都要强,但它也容易平滑掉一些边缘信息,其检查方法较为复杂。
2.1.5一种改进的Sobel算子
基于Sobel算子,。
为了能够更准确地描述出图像边缘点,减少噪声对检测结果的影响,提高算子的抗噪能力,重新构造了4个5×5大小的模板,模板中各个位置的权重是由该位置到中心点的距离以及该位置在模板中所在的方位决定的,等距离的点,具有相同的权重。
最后选择有最高输出模板所对应边缘梯度值来作为像元的边缘梯度强度。
改进Sobel算子如图5所示:
2
3
0
-3
-2
3
4
0
-4
-3
6
6
0
-6
-6
3
4
0
-4
-3
2
3
0
-3
-2
2
3
6
3
2
3
4
6
4
3
0
0
0
0
0
-3
-4
-6
-4
-3
-2
-3
-6
-3
-2
(1)、x水平方向
(2)、y垂直方向
0
-2
-3
-2
-6
2
0
-4
-6
-2
3
4
0
-4
-3
2
6
4
0
-2
6
2
3
2
0
-6
-2
-3
-2
0
-2
-6
-4
0
2
-3
-4
0
4
2
-2
0
4
6
2
0
2
3
2
6
(3)、
方向(4)、
方向
图5方向模板
由一阶梯度算子得到图像的梯度图像。
一般来说,其边缘较粗。
若直接对梯度图像设定阈值进行二值化,很难找到合适的阈值,使得检测出来的边缘达到要求,这不便于边缘连接与边缘特征提取等后期处理。
因此在对图像梯度图像进行二值化前,有必要对所检测出来的梯度边缘进行细化处理。
细化处理可以通过找出像素点(m,n)某个邻域中的最大值Max(m,n),根据Max(m,n)来局部设定阈值。
按照该点梯度值与阈值的关系对该点进行取舍,这样就能达到将梯度图细化的目的。
计算式如下:
式中:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 边缘 检测 算法 比较