线性插值基本原理
- 1. 为什么使用线性插值?
- 2. 单线性插值
- 2.1 单线性插值推导
- 3.多线性插值
- 3.1 多线性插值推导注意事项
- 3.2 多线性插值推导
- 3.3 插入坐标越远权重越大
1. 为什么使用线性插值?
-
在深度学习对图片进行上采样和下采样的时候会应用到线性插值
- 对图片上采样,原始图片(33)范围红色框中的值,会得到(44)框中红色框的值
- 假设目标图片红框坐标为(i,j),那么在原始图片位置(i∗34,j∗34)(i*\frac{3}{4},j*\frac{3}{4})(i∗43,j∗43),
- 已知i=2,j=3i=2,j=3i=2,j=3,所以在原始图片位置(1.5,0.75)(1.5,0.75)(1.5,0.75)
- 不是整数,在找原始图片位置时,会自动取整
- 即,需要使用线性插值,来降低误差
2. 单线性插值
2.1 单线性插值推导
- 如图所示,在p0和p1p_0和p_1p0和p1中间插入ppp,求p点位置
- 根据斜率公式
y−y0x−x0=y1−y0x1−x0y=y0+(y1−y0)(x−x0)x1−x0y=(x1−x0)y0+(y1−y0)(x−x0)x1−x0y=x1y0−x0y0+xy1−x0y1−xy0+x0y0x1−x0y=(x1−x)y0+(x−x0)y1x1−x0y=(x1−x)x1−x0y0+(x−x0)x1−x0y1\begin{aligned} \frac{y-y_{0}}{x-x_{0}}&=\frac{y_{1}-y_{0}}{x_{1}-x_{0}}\\ y&=y_{0}+\frac{(y_{1}-y_{0})(x-x_{0})}{x_{1}-x_{0}} \\&y=\frac{(x_{1}-x_{0})y_{0}+(y_{1}-y_{0})(x-x_{0})}{x_{1}-x_{0}} \\&y=\frac{x_{1}y_{0}-x_{0}y_{0}+xy_{1}-x_{0}y_{1}-xy_{0}+x_{0}y_{0}}{x_{1}-x_{0}} \\&y=\frac{(x_{1}-x)y_{0}+(x-x_{0})y_{1}}{x_{1}-x_{0}} \\&y=\frac{(x_{1}-x)}{x_{1}-x_{0}}y_{0}+\frac{(x-x_{0})}{x_{1}-x_{0}}y_{1} \end{aligned} x−x0y−y0y=x1−x0y1−y0=y0+x1−x0(y1−y0)(x−x0)y=x1−x0(x1−x0)y0+(y1−y0)(x−x0)y=x1−x0x1y0−x0y0+xy1−x0y1−xy0+x0y0y=x1−x0(x1−x)y0+(x−x0)y1y=x1−x0(x1−x)y0+x1−x0(x−x0)y1 - 假设y对应的值,就是图像中的像素值p,得到
p=(x1−x)x1−x0p0+(x−x0)x1−x0p1\begin{aligned} p=\frac{(x_{1}-x)}{x_{1}-x_{0}}p_{0}+\frac{(x-x_{0})}{x_{1}-x_{0}}p_{1} \end{aligned} p=x1−x0(x1−x)p0+x1−x0(x−x0)p1
3.多线性插值
3.1 多线性插值推导注意事项
- 双线性插值是三维的,需要从二维计算出某一个坐标轴的差值才可以
- 如果按照单线性插值,直接按照三位图,那么求p1p_{1}p1
- 显然不可能会出现y1−y1y_{1}-y_{1}y1−y1这个操作
y−y1x−x2=y1−y1x1−x2\begin{aligned} \frac{y-y_{1}}{x-x_{2}}&=\frac{y_{1}-y_{1}}{x_{1}-x_{2}} \end{aligned} x−x2y−y1=x1−x2y1−y1
- 显然不可能会出现y1−y1y_{1}-y_{1}y1−y1这个操作
- 如果按照单线性插值,直接按照三位图,那么求p1p_{1}p1
3.2 多线性插值推导
- 根据单线性插值公式,得出公式
- 我们计算像素值,直接将yyy变成ppp即可
y=(x1−x)x1−x0y0+(x−x0)x1−x0y1\begin{aligned} y=\frac{(x_{1}-x)}{x_{1}-x_{0}}y_{0}+\frac{(x-x_{0})}{x_{1}-x_{0}}y_{1} \end{aligned} y=x1−x0(x1−x)y0+x1−x0(x−x0)y1
- 我们计算像素值,直接将yyy变成ppp即可
- 由单线性插值,对x轴得到【自己转换维度】
p1=(x2−x)x2−x1p11+(x−x1)x2−x1p21p2=(x2−x)x2−x1p12+(x−x1)x2−x1p22\begin{aligned} p_{1}=\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{11}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{21}\\ p_{2}=\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{12}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{22} \end{aligned} p1=x2−x1(x2−x)p11+x2−x1(x−x1)p21p2=x2−x1(x2−x)p12+x2−x1(x−x1)p22 - 由单线性插值,对y轴得到
p=(y2−y)y2−y1p1+(y−y1)y2−y1p2\begin{aligned} p=\frac{(y_{2}-y)}{y_{2}-y_{1}}p_{1}+\frac{(y-y_{1})}{y_{2}-y_{1}}p_{2} \end{aligned} p=y2−y1(y2−y)p1+y2−y1(y−y1)p2 - 将p1,p2p_{1},p_{2}p1,p2代入化简ppp
p=(y2−y)y2−y1((x2−x)x2−x1p11+(x−x1)x2−x1p21)+(y−y1)y2−y1((x2−x)x2−x1p12+(x−x1)x2−x1p22)=(y2−y)(x2−x)(y2−y1)(x2−x1)p11+(y2−y)(x−x1)(y2−y1)(x2−x1)p21+(y−y1)(x2−x)(y2−y1)(x2−x1)p12+(y−y1)(x−x1)(y2−y1)(x2−x1)p22\begin{aligned} p&=\frac{(y_{2}-y)}{y_{2}-y_{1}}(\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{11}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{21})+\frac{(y-y_{1})}{y_{2}-y_{1}}(\frac{(x_{2}-x)}{x_{2}-x_{1}}p_{12}+\frac{(x-x_{1})}{x_{2}-x_{1}}p_{22}) \\&=\frac{(y_{2}-y)(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{11}+\frac{(y_{2}-y)(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{21}+\frac{(y-y_{1})(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{12}+\frac{(y-y_{1})(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{22} \end{aligned} p=y2−y1(y2−y)(x2−x1(x2−x)p11+x2−x1(x−x1)p21)+y2−y1(y−y1)(x2−x1(x2−x)p12+x2−x1(x−x1)p22)=(y2−y1)(x2−x1)(y2−y)(x2−x)p11+(y2−y1)(x2−x1)(y2−y)(x−x1)p21+(y2−y1)(x2−x1)(y−y1)(x2−x)p12+(y2−y1)(x2−x1)(y−y1)(x−x1)p22 - 在图像中,相邻像素点坐标差值为1,即
x2=x1+1y2=y1+1\begin{aligned} x_{2}&=x_{1}+1\\ y_{2}&=y_{1}+1 \end{aligned} x2y2=x1+1=y1+1
- 将x2,y2x_2,y_2x2,y2关于x1,y1x_1,y_1x1,y1的表达式代入p
p=(y2−y)(x2−x)(y2−y1)(x2−x1)p11+(y2−y)(x−x1)(y2−y1)(x2−x1)p21+(y−y1)(x2−x)(y2−y1)(x2−x1)p12+(y−y1)(x−x1)(y2−y1)(x2−x1)p22=(y2−y)(x2−x)p11+(y2−y)(x−x1)p21+(y−y1)(x2−x)p12+(y−y1)(x−x1)p22\begin{aligned} p&=\frac{(y_{2}-y)(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{11}+\frac{(y_{2}-y)(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{21}+\frac{(y-y_{1})(x_{2}-x)}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{12}+\frac{(y-y_{1})(x-x_{1})}{(y_{2}-y_{1})(x_{2}-x_{1})}p_{22} \\&=(y_{2}-y)(x_{2}-x)p_{11}+(y_{2}-y)(x-x_{1})p_{21}+(y-y_{1})(x_{2}-x)p_{12}+(y-y_{1})(x-x_{1})p_{22} \end{aligned} p=(y2−y1)(x2−x1)(y2−y)(x2−x)p11+(y2−y1)(x2−x1)(y2−y)(x−x1)p21+(y2−y1)(x2−x1)(y−y1)(x2−x)p12+(y2−y1)(x2−x1)(y−y1)(x−x1)p22=(y2−y)(x2−x)p11+(y2−y)(x−x1)p21+(y−y1)(x2−x)p12+(y−y1)(x−x1)p22
3.3 插入坐标越远权重越大
- 由于p是由p1p_{1}p1和p2p_{2}p2得到的
P1≈(y2−y)(x2−x)p11+(y2−y)(x−x1)p21P2≈(y−y1)(x2−x)p12+(y−y1)(x−x1)p22\begin{aligned} P_{1}&\approx(y_{2}-y)(x_{2}-x)p_{11}+(y_{2}-y)(x-x_{1})p_{21}\\ P_{2}&\approx(y-y_{1})(x_{2}-x)p_{12}+(y-y_{1})(x-x_{1})p_{22} \end{aligned} P1P2≈(y2−y)(x2−x)p11+(y2−y)(x−x1)p21≈(y−y1)(x2−x)p12+(y−y1)(x−x1)p22- 根据p1p_{1}p1,都有系数(y2−y)(y_{2}-y)(y2−y),如果p1p_{1}p1向的值比较大,那么(x2−x)(x_{2}-x)(x2−x)的值就要大,所以当插入的点离哪一个坐标远,那个坐标的权重越大【插入值的权重越大】