📜  Sobel操作员

📅  最后修改于: 2021-01-08 05:30:04             🧑  作者: Mango


sobel运算符与Prewitt运算符非常相似。它也是一个派生掩码,用于边缘检测。像Prewitt运算符符一样,sobel运算符也用于检测图像中的两种边缘:

  • 垂直方向
  • 水平方向

与Prewitt运算符的区别

主要区别在于,在sobel运算符中,遮罩的系数不是固定的,可以根据我们的要求进行调整,除非它们不违反派生遮罩的任何属性。

以下是Sobel操作员的垂直遮罩:

-1 0 1
-2 0 2
-1 0 1

此蒙版的作用与Prewitt运算符垂直蒙版完全相同。唯一的区别是,第一列和第三列的中心分别具有“ 2”和“ -2”值。当应用于图像时,此遮罩将突出显示垂直边缘。

怎么运行的

当我们在图像上应用此蒙版时,它会突出垂直边缘。它就像一阶导数一样简单地工作,并计算边缘区域中像素强度的差异。

由于中心列为零,因此它不包括图像的原始值,而是计算该边缘周围左右像素值的差。同样,第一列和第三列的中心值分别为2和-2。

这给边缘区域周围的像素值更多的权重年龄。这增加了边缘强度,并且与原始图像相比变得增强了。

以下是Sobel算子的水平蒙版

-1 -2 -1
0 0 0
1 2 1

遮罩上方将在水平方向上找到边缘,这是因为零列在水平方向上。当您将此遮罩卷积到图像上时,它将在图像中突出显示水平边缘。两者之间的唯一区别是它具有2和-2作为第一行和第三行的中心元素。

怎么运行的

该遮罩将突出图像中的水平边缘。它也可以根据上述掩膜原理工作,并计算特定边缘的像素强度之间的差异。由于遮罩的中心行由零组成,因此它不包括图像中边缘的原始值,而是计算特定边缘的上下像素强度之差。因此,会增加强度的突然变化,并使边缘更明显。

现在是时候看看这些蒙版了:

样本图片

以下是一个示例图片,我们将一次在其上应用两个蒙版。

索贝尔算子

涂上垂直面膜后

在上面的样本图像上应用垂直蒙版后,将获得以下图像。

索贝尔算子

应用水平面膜后

在上面的样本图像上应用水平蒙版后,将获得以下图像

索贝尔算子

比较方式

如您所见,在我们应用垂直遮罩的第一张图片中,所有垂直边缘都比原始图像更清晰可见。类似地,在第二张图片中,我们应用了水平蒙版,结果所有水平边缘都是可见的。

因此,通过这种方式,您可以看到我们可以从图像中检测水平和垂直边缘。同样,如果将sobel运算符的结果与Prewitt运算符进行比较,则会发现sobel运算符比Prewitt运算符发现更多的边或使边更加可见。

这是因为在sobel运算符,我们已为边缘周围的像素强度分配了更多权重。

加大口罩的重量

现在我们还可以看到,如果对蒙版施加更多的权重,它将为我们提供更多的边缘。另外,如本教程开头所述,sobel运算符没有固定系数,因此这是另一个加权运算符

-1 0 1
-5 0 5
-1 0 1

如果您可以将此遮罩的结果与Prewitt垂直遮罩的效果进行比较,则很明显,与Prewitt遮罩相比,此遮罩将提供更多的边缘,这仅仅是因为我们在遮罩中分配了更多的权重。