梯度和拉普拉斯算子在图像边缘检测中的应用
- 数学方法
边缘检测最通用的方法是检测灰度值的不连续性,这种不连续性用一阶和二阶导数来检测。
- (1)一阶导数:一阶导数即为梯度,对于平面上的图像来说,我们只需用到二维函数的梯度,即: ,该向量的幅值: ,为简化计算,省略上式平方根,得到近似值 ;或通过取绝对值来近似,得到: 。
(2)二阶导数:二阶导数通常用拉普拉斯算子来计算,由二阶微分构成:
- 边缘检测的基本思想:
- 寻找灰度的一阶导数的幅度大于某个指定阈值的位置;
- 寻找灰度的二阶导数有零交叉的位置。
- 几种方法简介
- Sobel边缘检测器:以差分来代替一阶导数。Sobel边缘检测器使用一个3×3邻域的行和列之间的离散差来计算梯度,其中,每行或每列的中心像素用2来加权,以提供平滑效果。
-1 |
-2 |
1 |
0 |
0 |
0 |
1 |
2 |
1 |
-1 |
0 |
1 |
-2 |
0 |
2 |
-1 |
0 |
1 |
- Prewitt边缘检测器:使用下图所示模板来数字化地近似一阶导数。与Sobel检测器相比,计算上简单一些,但产生的结果中噪声可能会稍微大一些。
-1 |
-1 |
-1 |
0 |
0 |
0 |
1 |
1 |
1 |
-1 |
0 |
1 |
-1 |
0 |
1 |
-1 |
0 |
1 |
- Roberts边缘检测器:使用下图所示模板来数字化地将一阶导数近似为相邻像素之间的差,它与前述检测器相比功能有限(非对称,且不能检测多种45°倍数的边缘)。
-1 |
0 |
0 |
1 |
0 |
-1 |
1 |
0 |
- Laplace边缘检测器:二维函数 的拉普拉斯是一个二阶的微分定义:
模板算子可分为四邻域和八邻域,如下:
0 |
1 |
0 |
1 |
-4 |
1 |
0 |
1 |
0 |
(四邻域)
1 |
1 |
1 |
1 |
-8 |
1 |
1 |
1 |
1 |
(八邻域)
- LoG边缘检测器
由于噪声点(灰度与周围点相差很大的像素点)对边缘检测有一定的影响,所以效果更好的是LoG算子,即Laplacian-Guass算子。引入高斯函数来平滑噪声:
该函数的Laplace算子:
它把Guass平滑滤波器和Laplace锐化滤波器结合起来,先平滑掉噪声,再进行边缘检测,所以效果比单用Laplace算子要更为平滑,效果更好。
- Canny边缘检测器
主要分为以下几个步骤:①使用具有指定标准差的一个高斯滤波器来平滑图像,以减少噪声;②在每个点处计算局部梯度和边缘方向;③对步骤②中确定的边缘点产生梯度中的脊线顶部进行追踪,并将实际山不在脊线顶部的像素设置为零,从而在输出中给出一条细线(非最大值抑制),然后使用滞后阈值处理法对这些脊线像素进行阈值处理。最后进行边缘连接。
- 实验结果
原始图像:
1.Roberts算子
2.Prewitt算子
3.Sobel算子
4.Laplace算子
(4邻域)
(8邻域)
- LoG
四种结果的比较:(Laplace采用8邻域模板)
图像来源:http://www.photophoto.cn/show/05248591.html(网行天下首页>>设计图库>>文化艺术>>插画集:《牧羊犬灰度》)
图像规格:800×677 格式:SVG 模式:RGB
硬件条件:
软件条件:运行环境:Matlab r2015b
三、讨论
- 各方法优缺点及比较:
- Roberts算子:Roberts算子是2×2算子,对具有陡峭的低噪声图像响应最好,并且检测垂直边缘的效果好于斜向边缘&