线性插值(Linear Interpolation):线性插值、双线性插值
1.关于插值:
插值,是根据已知的数据序列(可以理解为你坐标中一系列离散的点),找到其中的规律,然后根据找到的这个规律,来对其中尚未有数据记录的点进行数值估计。
应用有: 1)对数据中的缺失进行合理补偿 2)对数据进行放大或缩小
2.线性插值:
线性插值是针对一维数据的插值方法。它根据一维数据序列中需要插值的点的左右临近两个数据来进行数值估计。当然了它不是求这两个点数据大小的平均值(在中心点的时候就等于平均值)。而是根据到这两个点的距离来分配比重的。
已知点(x0,y0)、(x1,y1)求取插值点x处的y.推导过程如下:
由于( y-y0)/(x-x0)=(y1-y0)/(x1-x0)
所以变换一下:(x-x0)/(x1-x0)=(y-y0)/(y1-y0)=k
那么:y=(1-k)y0+ky1
比较方便记忆
3.线性插值举例:
问: 假如一天中,我测得了其中7个时间点的温度。1点、3点、8点、12点、15点、20点、24点摄氏度分别是8、9、16、23、22、18、10。请问用线性插值的方法得到这一天中1点到24点之间其他时间点的温度该怎么做?
注:线性插值是属于内插法,要去求这1点到24点以外的数据(例如:25点,0点,-1点…)是不可以的
4.双线性插值法
在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值(即从X方向进行两次线性插值,得到R1、R2,再对Y方向进行一次线性插值,就可以得到P)。见下图:
假如我们想得到未知函数 f 在点 P = (x, y) 的值,假设我们已知函数 f 在 Q11 = (x1, y1)、Q12 = (x1, y2), Q21 = (x2, y1) 以及 Q22 = (x2, y2) 四个点的值。最常见的情况,f就是一个像素点的像素值。首先在 x 方向进行线性插值,得到
然后在 y 方向进行线性插值,得到
综合起来就是双线性插值最后的结果:
function lerp(start, end, t) {
return start * (1 - t) + end * t;
}
原文链接:https://blog.csdn.net/weixin_43135178/article/details/117262348