Prewitt 算子

Prewitt 算子用于图像中的边缘检测。它检测两种类型的边缘

  • 水平边缘
  • 垂直边缘

边缘是通过使用图像相应像素强度之间的差异来计算的。用于边缘检测的所有掩模也称为导数掩模。因为正如我们在本系列教程中多次提到的那样,图像也是一个信号,所以信号的变化只能使用微分来计算。这就是为什么这些算子也被称为导数算子或导数掩码的原因。

所有导数掩码都应具有以下属性:

  • 掩码中应存在相反的符号。
  • 掩码的总和应等于零。
  • 权重越大,边缘检测越多。

Prewitt 算子为我们提供了两个掩码,一个用于检测水平方向的边缘,另一个用于检测垂直方向的边缘。

垂直方向

-1 0 1
-1 0 1
-1 0 1

上面的掩码将在垂直方向上找到边缘,这是因为垂直方向上的零列。当您将此掩码卷积到图像上时,它将为您提供图像中的垂直边缘。

工作原理

当我们在图像上应用此掩码时,它会突出垂直边缘。它的工作方式就像一阶导数一样,并计算边缘区域中像素强度的差异。由于中心列为零,因此它不包括图像的原始值,而是计算该边缘周围左右像素值的差异。这会增加边缘强度,并且与原始图像相比会得到增强。

水平方向

-1 -1 -1
0 0 0
1 1 1

上面的蒙版将在水平方向上找到边缘,这是因为零列在水平方向上。当您将此蒙版卷积到图像上时,它将突出图像中的水平边缘。

工作原理

此蒙版将突出图像中的水平边缘。它也根据上述蒙版的原理工作,并计算特定边缘的像素强度之间的差异。由于蒙版的中心行由零组成,因此它不包括图像中边缘的原始值,而是计算特定边缘的上下像素强度的差异。从而增加了强度的突然变化并使边缘更加明显。 上述两个蒙版都遵循衍生蒙版的原理。两个蒙版都有相反的符号,并且两个蒙版的总和等于零。第三个条件不适用于此运算符,因为上述两个蒙版都是标准化的,我们无法更改其中的值。

现在是时候看看这些蒙版的实际效果了:

示例图像

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

Prewitt 运算符

应用垂直蒙版后

在上述示例图像上应用垂直蒙版后,将获得以下图像。此图像包含垂直边缘。通过与水平边缘图片进行比较,您可以更正确地判断。

Prewitt 运算符

应用水平蒙版后

在上述示例图像上应用水平蒙版后,将获得以下图像。

Prewitt 运算符

比较

正如您所见,在第一张应用垂直蒙版的图片中,所有垂直边缘都比原始图像更明显。同样,在第二张图片中,我们应用了水平蒙版,结果所有水平边缘都可见。因此,通过这种方式,您可以看到我们可以从图像中检测到水平和垂直边缘。