0

如何为 ad/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] 的信息,因此可以大大改进导数近似。如何生成将使用此信息并因此更准确的模板?

4

2 回答 2

1

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

于 2013-03-11T11:49:25.143 回答
1

两个建议:

  • 首先,一般来说,使用中心计算。因此,高阶一阶导数是0.5*(image[x+1]-image[x-1])

  • 其次,使用链式公式推导出“相对于 3x”。以最简单的形式,形式上,df/dy = df/dx*dx/dy这意味着dImage/d(3x) = dImage/dx*(1/3) 简而言之,只是除以 3。

于 2013-03-11T21:06:49.533 回答