在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的。
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
两个卷积形成Sobel边缘检测算子(如图2-3所示),图像中每个像素都用这两个核作卷积,一个核对垂直边缘影响最大,另一个对水平边缘影响最大。两个卷积的最大值作为该点的输出值。
图2-3 Sobel 边缘检测算子
2.1.3 Prewitt算子
Prewitt是使用两个有向算子(一个水平的,一个垂直的),每一个逼近一个偏导数。Prewitt边缘检测算子检测图像M的边缘,可以先分别用水平算子和垂直算子对图像进行卷积,得到的是两个矩阵,在不考虑边界的情况下也是和原始图像同样大小的M1,M2,它们分别表示图像M中相同位置处的两个偏导数。然后把M1,M2对应位置的两个数平方后相加得到一个新的矩阵G,G表示M中各个像素的灰度的梯度值(一个逼近)。然后就可以通过阈值处理得到边缘图像。
Sobel边缘检测算子和Prewitt边缘检测算子的不同就在于所使用的有向算子不一样而已。Sobel算子利用像素点上下、左右邻点的灰度加权算法,根据边缘点处达到极值这一现象进行边缘检测。Sobel算子对噪声具有平滑作用,提供较为精确的边缘方向信息,但它同时也会检测出许多的伪边缘,边缘定位精度不够高。
Prewitt算子的两个卷积计算核如图2-4所示,图像中的每个点都用这两个核作卷积,取最大值作为输出。Prewitt算子对灰度渐变和噪声较多的图像处理得较好。
图2-4 Prewitt算子
2.1.4 Laplace算子
对于阶跃状边缘,其二阶导数在边缘点出现零交叉,并且边缘点两旁像素的二阶导数异号。据此,对数字图像的每个像素计算关于x轴和y轴的二阶偏导数之和▽2f(x,y)。
▽2f(x,y)= f(x+1,y)+ f(x-1,y)+ f(x,y+1)+ f(x,y-1)- 4f(x,y) (2-3)
这个算子是旋转不变算子,它对于边缘是敏感的。一般增强技术对于陡峭的边缘和缓慢变化的边缘很难确定其边缘线的位置,此算子却可以用二次微分正峰和负峰之间的过零点来确定。
(1)拉普拉斯算子 1
拉普拉斯算子1为四邻域算子,它对于突出孤立点、线段及边界的效果较明显,可以检测出灰度变化更平缓的边缘,但是它表示的边缘不够连续,从算子本身可以看出,由于拉普拉斯算子中心点的权重非常大,因此它刘点状干扰特敏感,使得边缘与噪声很难分辨开来,总体质量也较差。
( 2 ) 拉普拉斯算子 2
拉普拉斯算子2相当于在上一个算子进行滤波结果的基础上,叠加了一幅原始图像,因此可以保存细节部分,相当于原始图像的边缘增强。所增强的边缘部分,即上一个算子滤波所产生的边缘。
( 3 ) 拉普拉斯算子 3
拉普拉斯算子3为八邻域算子,它相对于拉普拉斯算子1来说枪测边缘的作用更强已能够很好地将图像更细微的边缘检测出来,其结果为边缘图像,即只表示边缘,忽略其他的细节。同样,它受到随机噪声的影响较大,即很容易将图像灰度平缓部分的随机噪声误认为是边缘,总的来说,此算子对于随机噪声较少的图像进行边缘检测的效果是比较好的。
( 4 )拉普拉斯算子4 MATLAB二值图像的轮廓提取及曲线拟合算法研究(3):http://www.751com.cn/jisuanji/lunwen_7606.html