1

我的任务是实现一个 3x3 x 微分图像滤波器,该滤波器利用中心差异并同时在 y 方向上执行高斯平滑。

我在 x 方向 (h=1) 上有一个用于该任务的公式,但我不确定我是否理解正确:

(f(x+h;y)-f(x-h;y)) / 2*h

相对于我的当前像素 (x),我在当前像素之前取像素值 +1,然后从当前像素后面位置 -1 的像素中减去该值。这个值是否除以 2 然后或多或少是我在 x 方向上的一阶推导?我的实际当前像素值根本没有使用吗?

4

1 回答 1

1

传统上,对于图像,中心不用于导数过滤器。推理如下。

  1. 大多数图像处理过滤器的目的是在原始图像中找到东西,并识别它们。因此,一个好的内核 (*) 将位于与更改相同的位置。
  2. 导数应该是零的意思。如果将内核中的所有像素相加,它们的总和应该为零。

鉴于这两点,尤其是第一点,很明显内核应该有奇数个元素,并且中心应该是 0。本质上,如果内核是奇数,那么它将倾向于保留原始边缘。

以一维示例为例,并应用您提供的公式,修剪边缘(将它们强制为 0),结果如下:

[0  1  3  2  10  12 8 11];
[0 -2 -1 -7 -10   2 1 0 ];

请注意,两个最高幅度值正好位于峰值处。尝试使用其他内核,包括一些中心值不为 0 的内核,看看结果如何。

(*) 内核代表您正在执行的功能。在您提供的情况下,内核是 [1 0 -1]

于 2012-04-19T01:34:57.870 回答