我对图像函数 I(x,y) 的二次推导有疑问。第一个推导是:
I_x(x,y) = I(x+1,y) - I(x,y)
和
I_y(x,y) = I(x,y+1) - I(x,y)
。
但是当我再次尝试I_x
在 x 方向推导时,我得到了这个:
I_xx(x,y) = I(x+2,y) - 2*I(x+1,y) + I(x,y)
,但正确的答案似乎是这个:I_xx(x,y) = I(x+1,y) + I(x-1,y) -2*I(x,y)
。我的错误在哪里?有人可以解释一下吗?
您的问题的答案可以在以下示例中看到。在“正确”答案中,x 处的二阶导数以点 x 为中心。在您的答案中,二阶导数以点 x+1 为中心。在许多应用程序中尽可能多地排列衍生产品是件好事。从某种意义上说,您拥有正确的答案以及“正确”的答案。这是一个定义你的对齐和保持一致的问题。给定一个数组(让我们暂时使用基于 1 的数组)
x(1), x(2), x(3), x(4), x(5), x(6)
x = [3, 2, 1, 8, 9, 4]
一阶导数是
x'(1), x'(2), x'(3), x'(4), x'(5)
f'(x) = [3-2, 2-1, 1-8, 8-9, 9-4]
请注意,x' 比 x 少一个元素。如果我们对边界条件做出假设,我们可以绕过这个问题,目前我们不会这样做。
二阶导数是
x'(1)-x'(2), x'(2)-x'(3), x'(3)-x'(4), x'(4)-x'(5)
我们只有 4 个点具有有效的二阶导数。在计算二阶导数的方式中,您简单地将一阶二阶导数设为 x''(1)。通过这种方式,我们得到如下标签:
x''(1), x''(2), x''(3), x''(4),
x''=[(3-2)-(2-1), (2-1)-(1-8), (1-8)-(8-9), (8-9)-(9-4)]
一般来说,您提出的二阶导数可以写成:
x''(p) = x(p+2)-2*x(p+1)+x(p)
在您的二阶导数中,有效索引取值 1..4 您没有定义 x''(5) 因为这需要 x(5+2)-2*x(5+1)+x(5) 和原始数组只有 6 个元素,因此 x(7) 未定义。
另一种用二阶导数居中并对齐的方法来标记点,使得 n 阶二阶导数以原始数组中的第 n 个点为中心,如下所示:
x''(2), x''(3), x''(4), x''(5),
x''=[(3-2)-(2-1), (2-1)-(1-8), (1-8)-(8-9), (8-9)-(9-4)]
一般来说,这可以写成:
x''(p) = x(p+1)-2*x(p)+x(p-1)
请注意,此二阶导数有效索引在 2..5 范围内。在这种情况下,未定义 x''(1),因为这需要 x(1+1)-2*x(1)+x(1-1 ) 和原始数组,因为我们有基于 1 的数组在 x(0) 处没有值。
在这两种情况下,形式是相同的。只是您以不同的方式标记点。
奇数导数我们不能以有限差分中的点为中心,而偶数导数我们可以居中以对下游计算进行更直观的对齐。