R(x,y)?[f(x,y)?f(x?1,y?1)]2?[f(x,y?1)?f(x?1,y)]2一般为了简化运算,将上式简化为:
R(x,y)?f(x,y)?f(x?1,y?1)?f(x,y?1)?f(x?1,y)
Robert算子的两个2X2卷积模板如图4-3所示:
1
0
0
1
0 -1
-1 0
图4-3 Robert边缘算子 Fig4-3 Robert edge operator
Robert算子边缘检测采用对角线方向相邻像素之差近似检测边缘,定位精度高,在水平和垂直两个方向效果较好,但它对噪声比较敏感。利用Robert算子图像处理后结果边缘不是很平滑。根据前人经验和理论分析,Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用Roberts算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。
(2)Prewitt算子
该算子与Sobel算子类似,只是权值有所变化,其定义为: 其中:
dx?[f(x?1,y?1)?f(x?1,y?1)]?[f(x?1,y)?f(x?1,y)]?[f(x?1,y?1)?f(x?1,y?1)]dy?[f(x?1,y?1)?f(x?1,y?1)]?[f(x,y?1)?f(x,y?1)]?[f(x?1,y?1)?f(x?1,y?1)]22?f?dx?dy
但两者实现起来功能还是有差距的,据经验得知Sobel要比Prewitt更能准确检测图像边缘。通过计算,凡灰度新值大于或等于阈值的像素点都是边缘点。即选择适当的阈值T,若f(x,y)≥T,则认为该点为边缘点,否则判定其不为边缘。这种判定比较简单,会造成边缘点的误判,因为许多噪声点的灰度值也很大,而且对于那些灰度值较小的边缘点,容易被误判为非边缘点。
Prewitt算子利用像素点上、下、左、右邻域点的灰度差,在边缘处进行极值计算来检测边缘,然后去掉部分伪边缘,该算子对噪声具有平滑作用。Prewitt算子的理论思想是在图像空间利用两个方向模板与图像进行邻域卷积,这两个方向模板一个检测水平边缘,一个检测垂直边缘。Prewitt算子边缘检测的模板如图4-4所示:
-1 -2 -1
0 0
1 2 1
-1 0
-2 0
-1 0
0 1 2 1
-1 0 1
-1 0
-1 0
1 0 -1
图4-4 Prewitt边缘算子 Fig4-4 Prewitt edge operator 1 0 -1
(3) Sobel算子 灰度加权算法。 Sobel 算子定义如下:
22?f?dx?dy 其中:
1
Sobel 算子是在Prewitt 算子的基础上,对像素点的4邻域(上下、左右)采用
1
1
0
-1
dx?[f(x?1,y?1)?f(x?1,y?1)]?2[f(x?1,y)?f(x?1,y)]?[f(x?1,y?1)]?f(x?1,y?1)dy?[f(x?1,y?1)?f(x?1,y?1)]?2[f(x,y?1)?f(x,y?1)]?[f(x?1,y?1)?f(x?1,y?1)]
sobel算子检测边缘的模板如图4-5所示:
图4-5 sobel边缘算子 Fig4-5 sobel edge operator
使用sobel算子来检测边缘时,将图像中每个点都用这两个模版做卷积。一个窗口对通常的水平边缘影响最大,而另一个窗口对垂直边缘影响最大。两个卷积的绝对值最大值作为该点的输出值。但是经典Sobel算子也存在致命缺陷,其对边缘的检测具有很强的方向性,只对垂直与水平两个方向敏感,其他方向则不敏感,这就使得很多其它方向的边缘检测不到。
其主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值,缺点是Sobel算子并没有将图像的主题与背景严格地区分开来,换言之就是Sobel算子并没有基于图像灰度进行处理,由于Sobel算子并没有严格地
模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
这三种一阶微分算子在提取图像边缘时各有特点,实际效果如图4-6所示:
图4-6 不同一阶微分算子提取边缘效果
FIg4-6 Different first-order differential operator edge extraction results
以上介绍的几种算子都是基于一阶导数思想来检测边缘,即通过寻找一阶导数的极大值来寻找边缘,因为它们都是采用了多个模板,所以检测的步骤都一样,即选择多个模板处理结果中的较大值作为在该点的输出值,然后选择一个合适的阈值做判决,以得到图像边缘。其中,阈值的确定是很关键的,闽值选择的好坏对最后检测结果影响很大。
4.2.2 二阶微分算子
(1)拉普拉斯高斯算子
拉普拉斯高斯(LOG)是一种二阶微分边缘检测方法,它是将高斯滤波与拉普拉斯算子结合一起进行边缘检测,通过寻找图像灰度值中的二阶微分过零点来检测边缘点。该算子是一个线性移不变的算子,它的传递函数在频域空间的原点是零,因此经拉普拉斯滤波过的图像具有零平均灰度。
该算法的过程为:
首先选取高斯函数对图像f(x,y)进行滤波,高斯函数如下:
h(x,y)??2[g(x,y)]??2[f(x,y)*G(x,y)]?f(x,y)*[G(x,y)]
拉普拉斯高斯算子边缘检测模板如4-7图所示:
0 -1 0
-1 4 -1
0 -1 0
-1 -1
-1 8
-1 -1
-1 -1 1
图4-7 拉普拉斯边缘算子 Fig4-7 Laplacian edge operator
其次,对滤波后的图像g(x,y)进行laplas运算,即进行卷积运算;拉普拉斯算子较好的过滤了噪声,美中不足的是它会将原有的边缘给平滑了。
(2)Canny算子
Canny 算子边缘检测的基本原理是:采用二维高斯函数的任一方向上的一阶方向导数为噪声滤波器,通过与图像f (x, y)卷积进行滤波;然后对滤波后的图像寻找图像梯度的局部极大值,以确定图像边缘,它能够在噪声抑制和边缘检测之间获得较好的平衡。该过程数学表达式为:
G(x,y)?12??2?(x2?y2)exp[]22?
本式中σ称为平滑系数,当σ较小时,对于边缘的定位比较准确,但是对图像的平滑
作用比较差,抑制噪声的能力也比较差;当σ较大时,用来平滑的高斯模板增大,使边缘偏移程度加大,同时计算量也增大了,所以,一般取σ在1.0到2.0之间。 Canny算子检测边缘的实现步骤如图4-8所示:
图4-8 canny算法实现过程框图 Fig4-8 canny algorithm process diagram
Canny的主要工作是推导了最优边缘检测算子。他考核边缘检测算子的指标是:低误判率,即尽可能少地把边缘点误认为是非边缘点;高定位精度,即准确地把边缘
相关推荐: