双线性插值
双线性插值假定每个方向都呈线性变化。
用 f ( x 1 , y 1 ) f(x_1,y_1) f(x1,y1)表示位置 ( x 1 , y 1 ) (x_1,y_1) (x1,y1) 处的值,相当于一共三个维度,固定一个维度,根据另外两个维度的两个点确定一条直线,两个蓝色点 ( x , y 1 ) (x, y_1) (x,y1) 和 ( x , y 2 ) (x, y_2) (x,y2) 分别在 l i n e 1 \color{blue}line_1 line1和 l i n e 2 \color{blue}line_2 line2,红色点 ( x , y ) (x, y) (x,y) 在 l i n e 3 \color{red}line_3 line3上,也就是插值位置 ,最后求 f ( x , y ) \color{red}\boxed{f\left(x,y\right)} f(x,y)
固定
y
y
y ,根据两个上顶点和两个下顶点:
{
(
x
1
,
f
(
x
1
,
y
1
)
)
(
x
2
,
f
(
x
2
,
y
1
)
)
→
l
i
n
e
1
(
x
1
,
f
(
x
1
,
y
2
)
)
(
x
2
,
f
(
x
2
,
y
2
)
)
→
l
i
n
e
2
\left\{ \begin{aligned} \left(x_1,f(x_1,y_1)\right)\;\;\;\left(x_2,f(x_2,y_1)\right)\to line_1\\ \left(x_1,f(x_1,y_2)\right)\;\;\;\left(x_2,f(x_2,y_2)\right)\to line_2 \end{aligned} \right.
{(x1,f(x1,y1))(x2,f(x2,y1))→line1(x1,f(x1,y2))(x2,f(x2,y2))→line2
固定
x
x
x ,根据两个蓝色交点:
(
y
1
,
f
(
x
,
y
1
)
)
、
(
y
2
,
f
(
x
,
y
2
)
)
→
l
i
n
e
3
\left(y_1,f(x,y_1)\right)、\left(y_2,f(x,y_2)\right)\to line_3
(y1,f(x,y1))、(y2,f(x,y2))→line3
推导整理三条直线得到:
f
(
x
,
y
1
)
≈
x
2
−
x
x
2
−
x
1
f
(
x
1
,
y
1
)
+
x
−
x
1
x
2
−
x
1
f
(
x
2
,
y
1
)
l
i
n
e
1
f
(
x
,
y
2
)
≈
x
2
−
x
x
2
−
x
1
f
(
x
1
,
y
2
)
+
x
−
x
1
x
2
−
x
1
f
(
x
2
,
y
2
)
l
i
n
e
2
f
(
x
,
y
)
≈
y
2
−
y
y
2
−
y
1
f
(
x
,
y
1
)
+
y
−
y
1
y
2
−
y
1
f
(
x
,
y
2
)
l
i
n
e
3
⇓
f
(
x
,
y
)
≈
f
(
x
1
,
y
1
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
x
2
−
x
)
(
y
2
−
y
)
+
f
(
x
2
,
y
1
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
x
−
x
1
)
(
y
2
−
y
)
+
f
(
x
1
,
y
2
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
x
2
−
x
)
(
y
−
y
1
)
+
f
(
x
2
,
y
2
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
x
−
x
1
)
(
y
−
y
1
)
\begin{aligned} &\boxed{ \begin{aligned} \color{blue}f\left(x,y_1\right) &\approx \frac{x_{2}-x}{x_{2}-x_{1}} f\left(x_1,y_1\right)+\frac{x-x_{1}}{x_{2}-x_{1}} f\left(x_2,y_1\right) \quad \color{blue}\text{$line_1$}\\ \color{blue}f\left(x,y_2\right) &\approx \frac{x_{2}-x}{x_{2}-x_{1}} f\left(x_1,y_2\right)+\frac{x-x_{1}}{x_{2}-x_{1}} f\left(x_2,y_2\right) \quad \color{blue}\text{$line_2$}\\ \color{red}f(x,y) &\approx \frac{y_{2}-y}{y_{2}-y_{1}} {\color{blue}f\left(x,y_1\right)}+\frac{y-y_{1}}{y_{2}-y_{1}} {\color{blue}f\left(x,y_2\right)} \qquad \color{red}\text{$line_3$} \end{aligned} }\\ &\qquad\qquad\qquad\qquad\qquad\qquad \color{blue}\Downarrow\\ \color{red}f(x, y) &\approx \frac{f\left(x_1,y_1\right)}{\left(x_{2}-x_{1}\right)\left(y_{2}-y_{1}\right)}\left(x_{2}-x\right)\left(y_{2}-y\right)+\frac{f\left(x_2,y_1\right)}{\left(x_{2}-x_{1}\right)\left(y_{2}-y_{1}\right)}\left(x-x_{1}\right)\left(y_{2}-y\right) \\ &+\frac{f\left(x_1,y_2\right)}{\left(x_{2}-x_{1}\right)\left(y_{2}-y_{1}\right)}\left(x_{2}-x\right)\left(y-y_{1}\right)+\frac{f\left(x_2,y_2\right)}{\left(x_{2}-x_{1}\right)\left(y_{2}-y_{1}\right)}\left(x-x_{1}\right)\left(y-y_{1}\right) \end{aligned}
f(x,y)f(x,y1)f(x,y2)f(x,y)≈x2−x1x2−xf(x1,y1)+x2−x1x−x1f(x2,y1)line1≈x2−x1x2−xf(x1,y2)+x2−x1x−x1f(x2,y2)line2≈y2−y1y2−yf(x,y1)+y2−y1y−y1f(x,y2)line3⇓≈(x2−x1)(y2−y1)f(x1,y1)(x2−x)(y2−y)+(x2−x1)(y2−y1)f(x2,y1)(x−x1)(y2−y)+(x2−x1)(y2−y1)f(x1,y2)(x2−x)(y−y1)+(x2−x1)(y2−y1)f(x2,y2)(x−x1)(y−y1)
如果四个顶点间的间隔都是单位长度,即:
x
2
−
x
1
=
1
,
y
2
−
y
1
=
1
x_2-x_1=1,\;\;\; y_2-y_1=1
x2−x1=1,y2−y1=1,则有:
f
(
x
,
y
)
≈
f
(
x
1
,
y
1
)
(
x
2
−
x
)
(
y
2
−
y
)
⏟
S
4
+
f
(
x
2
,
y
1
)
(
x
−
x
1
)
(
y
2
−
y
)
⏟
S
3
+
f
(
x
1
,
y
2
)
(
x
2
−
x
)
(
y
−
y
1
)
⏟
S
2
+
f
(
x
2
,
y
2
)
(
x
−
x
1
)
(
y
−
y
1
)
⏟
S
1
\begin{aligned} {\color{red}f(x, y)} \approx{f\left(x_1,y_1\right)}\underbrace{\left(x_{2}-x\right)\left(y_{2}-y\right)}_{S_4} +{f\left(x_2,y_1\right)}\underbrace{\left(x-x_{1}\right)\left(y_{2}-y\right)}_{S_3} \\ +{f\left(x_1,y_2\right)}\underbrace{\left(x_{2}-x\right)\left(y-y_{1}\right)}_{S_2}+{f\left(x_2,y_2\right)}\underbrace{\left(x-x_{1}\right)\left(y-y_{1}\right)}_{S_1} \end{aligned}
f(x,y)≈f(x1,y1)S4
(x2−x)(y2−y)+f(x2,y1)S3
(x−x1)(y2−y)+f(x1,y2)S2
(x2−x)(y−y1)+f(x2,y2)S1
(x−x1)(y−y1)
其中
S
S
S 表示面积,离插值位置越近的点的权重越高