我的任务是实现一个 3x3 x 微分图像滤波器,该滤波器利用中心差异并同时在 y 方向上执行高斯平滑。
我在 x 方向 (h=1) 上有一个用于该任务的公式,但我不确定我是否理解正确:
(f(x+h;y)-f(x-h;y)) / 2*h
相对于我的当前像素 (x),我在当前像素之前取像素值 +1,然后从当前像素后面位置 -1 的像素中减去该值。这个值是否除以 2 然后或多或少是我在 x 方向上的一阶推导?我的实际当前像素值根本没有使用吗?
我的任务是实现一个 3x3 x 微分图像滤波器,该滤波器利用中心差异并同时在 y 方向上执行高斯平滑。
我在 x 方向 (h=1) 上有一个用于该任务的公式,但我不确定我是否理解正确:
(f(x+h;y)-f(x-h;y)) / 2*h
相对于我的当前像素 (x),我在当前像素之前取像素值 +1,然后从当前像素后面位置 -1 的像素中减去该值。这个值是否除以 2 然后或多或少是我在 x 方向上的一阶推导?我的实际当前像素值根本没有使用吗?
传统上,对于图像,中心不用于导数过滤器。推理如下。
鉴于这两点,尤其是第一点,很明显内核应该有奇数个元素,并且中心应该是 0。本质上,如果内核是奇数,那么它将倾向于保留原始边缘。
以一维示例为例,并应用您提供的公式,修剪边缘(将它们强制为 0),结果如下:
[0 1 3 2 10 12 8 11];
[0 -2 -1 -7 -10 2 1 0 ];
请注意,两个最高幅度值正好位于峰值处。尝试使用其他内核,包括一些中心值不为 0 的内核,看看结果如何。
(*) 内核代表您正在执行的功能。在您提供的情况下,内核是 [1 0 -1]