关于 dx 的离散数值导数 > 1



如何生成d/d(n*x)操作符的模板?

我正在写一个程序,需要在图像中计算线导数。如果我们想计算关于d/dx的最简单的导数近似值,我们可以运行以下操作:

diff[x] = -1.0 * image[x] + image[x+1]

如果我想更精确地计算导数,我可以增加模板的大小,并可能重新计算为:

diff[x] = -3./2 * image[x] + 2*image[x+1] - 1./2 * image[x+2]

我一直在用有限差分法来求这些系数。

现在假设我想对d/d(3*x)求导,我可以简单地将原始模板拉伸成这样:

diff[x] = -1.0 * image[x] + image[x+3]

然而,这里我没有使用来自image[x+1]和image[x+2]的信息,因此导数近似可以大大改进。我怎样才能生成一个将使用这些信息并因此更准确的模板?

根据我对你的问题的理解,我建议以所需的分辨率(例如除以3)生成一个下采样图像,然后应用你原来的导数计算方法。子采样过程应该通过首先在图像上应用低通滤波器(例如使用框或高斯模糊)来进行适当的抗锯齿化。

两个建议:

  • 首先,通常使用居中计算。因此,高阶一阶导数为0.5*(image[x+1]-image[x-1])

  • 第二,利用链式公式推导出"with respect to 3x"。最简单的形式是,df/dy = df/dx*dx/dy也就是dImage/d(3x) = dImage/dx*(1/3)简单来说,就是除以3。

相关内容

  • 没有找到相关文章

最新更新