如何为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]
然而,这里我没有使用来自图像[x + 1]和图像[x + 2]的信息,因此可以极大地改善导数近似。如何生成将使用此信息并因此更准确的模板?
答案 0 :(得分:1)
根据我对你的问题的理解,我想要以所需的分辨率(例如除以3)生成子采样图像,然后应用你的原始导数计算方法。通过在图像上首先应用低通滤波器(例如使用方框或高斯模糊),子采样程序应该进行适当的抗衰减。
答案 1 :(得分:1)
两个建议:
首先,通常使用居中计算。因此,高阶一阶导数是0.5*(image[x+1]-image[x-1])
第二,使用链公式推导出“相对于3x”。最简单的形式,正式df/dy = df/dx*dx/dy
表示dImage/d(3x) = dImage/dx*(1/3)
简而言之,只是除以3。