三线性插值

维基百科,自由的百科全书
跳转至: 导航搜索

三线性插值是在三维离散采样数据的张量积网格上进行线性插值的方法。这个张量积网格可能在每一维度上都有任意不重叠的网格点,但并不是三角化的有限元分析网格。这种方法通过网格上数据点在局部的矩形棱柱上线性地近似计算点 (x, y, z) 的值。

三线性插值经常用于数值分析数据分析以及计算机图形学等领域。

特性以及与线性插值双线性插值的关系[编辑]

  • 三线性插值在一次 n = 1 三维 D = 3(双线性插值的维数为:D = 2,线性插值:D = 1)的参数空间中进行运算,这样就需要 (1 + n)^D = 8 个与所需插值点相邻的数据点。
  • 三线性插值等同于三维张量的一阶B样条插值。
  • 三线性插值运算是三个线性插值运算的张量积。

例子[编辑]

在一个步距为 1 的周期性立方网格上,取

x_d, y_d, z_d

为待计算点距离小于

x, y, z,

的最大整数的差值,即,

x_d = x - \lfloor x \rfloor
y_d = y - \lfloor y \rfloor
z_d = z - \lfloor z \rfloor
=======================================================================[编辑]
x_d,:y_d,:z_d是单位化后的值,所以其范围是[0,1]。

本句话参考http://paulbourke.net/miscellaneous/interpolation/

=======================================================================[编辑]

首先沿着 z 轴插值,得到:

i_1 = v[\lfloor x \rfloor,\lfloor y \rfloor, \lfloor z \rfloor] \times (1 - z_d) + v[\lfloor x \rfloor, \lfloor y \rfloor, \lceil z \rceil] \times z_d
i_2 = v[\lfloor x \rfloor,\lceil y \rceil, \lfloor z \rfloor] \times (1 - z_d) + v[\lfloor x \rfloor, \lceil y \rceil, \lceil z \rceil] \times z_d
j_1 = v[\lceil x \rceil,\lfloor y \rfloor, \lfloor z \rfloor] \times (1 - z_d) + v[\lceil x \rceil, \lfloor y \rfloor, \lceil z \rceil] \times z_d
j_2 = v[\lceil x \rceil,\lceil y \rceil, \lfloor z \rfloor] \times (1 - z_d) + v[\lceil x \rceil, \lceil y \rceil, \lceil z \rceil] \times z_d.

然后,沿着 y 轴插值,得到:

w_1 = i_1(1 - y_d) + i_2y_d
w_2 = j_1(1 - y_d) + j_2y_d

最后,沿着 x 轴插值,得到:

IV = w_1(1 - x_d) + w_2x_d .

这样就得到该点的预测值。

三线性插值的结果与插值计算的顺序没有关系,也就是说,按照另外一种维数顺序进行插值,例如沿着 xyz 顺序插值将会得到同样的结果。这也与张量积的交换律完全一致。

参见[编辑]

外部链接[编辑]