普鲁伊特算子


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

  • 水平边缘
  • 垂直边缘

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

所有衍生掩码应具有以下属性:

  • 面罩上应有相反的标志。
  • 掩码之和应等于零。
  • 权重越大意味着边缘检测越多。

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

垂直方向

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

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

怎么运行的

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

水平方向

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

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

怎么运行的

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

现在是时候看看这些面具的实际效果了:

示例图片

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

普鲁伊特算子

应用垂直蒙版后

在上面的样本图像上应用垂直掩模后,将获得以下图像。该图像包含垂直边缘。通过与水平边缘图片进行比较可以更准确地判断。

普鲁伊特算子

应用水平蒙版后

在上面的示例图像上应用水平掩模后,将获得以下图像。

普鲁伊特算子

比较

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