双线性二次插值原理解析
2018-02-07 10:59
1401 查看
在介绍双线性插值前,我们先介绍一下拉格朗日插值多项式。
拉格朗日插值法:
在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现[1],不久后(1783年)由莱昂哈德·欧拉再次发现。1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起[2]。
对于给定的若n+1个点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/551e8d085aec4d6dd08658c9dd885c0e.png)
,对应于它们的次数不超过n的拉格朗日多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f1a0ca3296566425525a590d9bb7b6ff.png)
只有一个。如果计入次数更高的多项式,则有无穷个,因为所有与
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f1a0ca3296566425525a590d9bb7b6ff.png)
相差
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/7dddc62eec4d8baab5e772c8d57bc22e.png)
的多项式都满足条件。例子:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/af6127efab21670ad0e7fcf371212064.png)
已知平面上四个点:(-9, 5),(-4, 2), (-1, -2), (7,
9),拉格朗日多项式:L(x)(黑色)穿过所有点。而每个基本多项式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2b54c4f5c2fb80fbc93069646526dd17.png)
以及
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/d1166223aefe54ac649a70b79ed7423d.png)
各穿过对应的一点,并在其它的三个点的x值上取零。
对某个多项式函数,已知有给定的k + 1个取值点:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2b32e08fc5cfd19a72277e018282e66a.png)
其中
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
对应着自变量的位置,而
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/56288a6add148f23d01940aa81a3e87f.png)
对应着函数在这个位置的取值。
假设任意两个不同的xj都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/e3429cb8bac10d3ecb9c4874c3259371.png)
其中每个
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/25dd46ed205db2b2c78acf5c78d285e3.png)
为拉格朗日基本多项式(或称插值基函数),其表达式为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/334be6878b2675674aa0d2d2ffadd180.png)
[3]拉格朗日基本多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/25dd46ed205db2b2c78acf5c78d285e3.png)
的特点是在
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
上取值为1,在其它的点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/48c3b46acaa083a82652c5d5aa1fb754.png)
上取值为0。
假设有某个二次多项式函数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/f4a95bca634e6e3a3b45294893e76287.png)
,已知它在三个点上的取值为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/d67c2c5d125c32eab894e731c654e6fc.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/08c6a33c0a00959ef98bf399fe1e4348.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/74e6011e15d356cb5959c19e355e9da9.png)
要求
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/4435ca84607355cd549ead2c1f27290b.png)
的值。
首先写出每个拉格朗日基本多项式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/ebd98dc21a86d9d40652ed35968259c0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/86209372aebff250d8bcdfaeb4dfb6e6.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/e67d9217e430b7dc28f774aa1b15aac9.png)
然后应用拉格朗日插值法,就可以得到
![](https://oscdn.geek-share.com/Uploads/Images/Content/201308/7b6d92c43f580b923d0c92a506ec83d4.png)
的表达式(
![](https://oscdn.geek-share.com/Uploads/Images/Content/201308/7b6d92c43f580b923d0c92a506ec83d4.png)
为函数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/f4a95bca634e6e3a3b45294893e76287.png)
的插值函数):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/cac9f9fe03768444b0b7034b347c522c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/ac199bd4101e5e39e6851dc22384355f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/ae499ca492845faebb693b19ce2432fa.png)
此时代入数值
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f97141b7e11d29d645ccd3243cad170e.png)
就可以求出所需之值:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/d0184b9b8c76e0225c723fbac8841aef.png)
。
对于给定的k+1个点:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2b32e08fc5cfd19a72277e018282e66a.png)
,拉格朗日插值法的思路是找到一个在一点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为1,而在其他点取值都是0的多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/25dd46ed205db2b2c78acf5c78d285e3.png)
。这样,多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f81ff82939fa611b8d3f3e7165c85354.png)
在点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/56288a6add148f23d01940aa81a3e87f.png)
,而在其他点取值都是0。而多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/e3429cb8bac10d3ecb9c4874c3259371.png)
就可以满足
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/5706d73b37e64ddc04f27e2d2d6cea5c.png)
在其它点取值为0的多项式容易找到,例如:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/3864036c308097656c541bab0a2f186f.png)
它在点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2439a55f07592cc52e2eafefd64d5288.png)
。由于已经假定
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/7aa0d5bd3ff055f4236d45d71d71adbf.png)
两两互不相同,因此上面的取值不等于0。于是,将多项式除以这个取值,就得到一个满足“在
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为1,而在其他点取值都是0的多项式”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/09a2aba5952d353b89b63911cee052c0.png)
这就是拉格朗日基本多项式。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/77acb5fab824c036e10f3ba4ed374870)
我们的方法是这样的,根据水平方向上的双线性二次插值,由f(I,j)和f(i+1,j)求取f(x,j),由
f(I,j+1)和f(i+1,j+1)求取f(x,j+1),然后再根据这两点的二次插值求取f(x,y)。
根据前面的例题,我们可以很容易的求取各点插值如下:
f(x,j)=(i+1-x)f(I,j)+(x-i)f(i+1,j) 公式1-(4)
f(x,j+1)=(i+1-x)f(I,j+1)+(x-i)f(i+1,j+1) 公式1-(5)
f(x,y)=(i+1-y)f(x,j)+(y-j)f(x,j+1) 公式1-(6)
以上三式综合可以得到:
f(x,y)=(j+1-y)(i+1-x)f(I,j)+(j+1-y)(x-i)f(i+1,j)+(y-j)(i+1-x)f(I,j+1)+(y-j)(x-i)f(i+1,j+1) 公式1-(7)
我们令x=i+p,y=j+q得:
f(i+p,j+q)=(1-q)(1-p)f(I,j)+p(1-q)f(i+1,j)+q(1-p)f(I,j+1)+pqf(i+1,j+1) 公式1-(8)
上式即为数字图像处理中的双线性二次插值公式。
参考博客:https://www.cnblogs.com/ECJTUACM-873284962/p/6833391.html
http://blog.csdn.net/trent1985/article/details/45150677
拉格朗日插值法:
在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现[1],不久后(1783年)由莱昂哈德·欧拉再次发现。1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起[2]。
对于给定的若n+1个点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/551e8d085aec4d6dd08658c9dd885c0e.png)
,对应于它们的次数不超过n的拉格朗日多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f1a0ca3296566425525a590d9bb7b6ff.png)
只有一个。如果计入次数更高的多项式,则有无穷个,因为所有与
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f1a0ca3296566425525a590d9bb7b6ff.png)
相差
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/7dddc62eec4d8baab5e772c8d57bc22e.png)
的多项式都满足条件。例子:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/af6127efab21670ad0e7fcf371212064.png)
已知平面上四个点:(-9, 5),(-4, 2), (-1, -2), (7,
9),拉格朗日多项式:L(x)(黑色)穿过所有点。而每个基本多项式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2b54c4f5c2fb80fbc93069646526dd17.png)
以及
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/d1166223aefe54ac649a70b79ed7423d.png)
各穿过对应的一点,并在其它的三个点的x值上取零。
定义
对某个多项式函数,已知有给定的k + 1个取值点:![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2b32e08fc5cfd19a72277e018282e66a.png)
其中
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
对应着自变量的位置,而
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/56288a6add148f23d01940aa81a3e87f.png)
对应着函数在这个位置的取值。
假设任意两个不同的xj都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/e3429cb8bac10d3ecb9c4874c3259371.png)
其中每个
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/25dd46ed205db2b2c78acf5c78d285e3.png)
为拉格朗日基本多项式(或称插值基函数),其表达式为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/334be6878b2675674aa0d2d2ffadd180.png)
[3]拉格朗日基本多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/25dd46ed205db2b2c78acf5c78d285e3.png)
的特点是在
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
上取值为1,在其它的点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/48c3b46acaa083a82652c5d5aa1fb754.png)
上取值为0。
范例
假设有某个二次多项式函数![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/f4a95bca634e6e3a3b45294893e76287.png)
,已知它在三个点上的取值为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/d67c2c5d125c32eab894e731c654e6fc.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/08c6a33c0a00959ef98bf399fe1e4348.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/74e6011e15d356cb5959c19e355e9da9.png)
要求
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/4435ca84607355cd549ead2c1f27290b.png)
的值。
首先写出每个拉格朗日基本多项式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/ebd98dc21a86d9d40652ed35968259c0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/86209372aebff250d8bcdfaeb4dfb6e6.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/e67d9217e430b7dc28f774aa1b15aac9.png)
然后应用拉格朗日插值法,就可以得到
![](https://oscdn.geek-share.com/Uploads/Images/Content/201308/7b6d92c43f580b923d0c92a506ec83d4.png)
的表达式(
![](https://oscdn.geek-share.com/Uploads/Images/Content/201308/7b6d92c43f580b923d0c92a506ec83d4.png)
为函数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/f4a95bca634e6e3a3b45294893e76287.png)
的插值函数):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/cac9f9fe03768444b0b7034b347c522c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/ac199bd4101e5e39e6851dc22384355f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/ae499ca492845faebb693b19ce2432fa.png)
此时代入数值
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f97141b7e11d29d645ccd3243cad170e.png)
就可以求出所需之值:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/d0184b9b8c76e0225c723fbac8841aef.png)
。
证明
存在性
对于给定的k+1个点:![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2b32e08fc5cfd19a72277e018282e66a.png)
,拉格朗日插值法的思路是找到一个在一点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为1,而在其他点取值都是0的多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/25dd46ed205db2b2c78acf5c78d285e3.png)
。这样,多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/f81ff82939fa611b8d3f3e7165c85354.png)
在点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/56288a6add148f23d01940aa81a3e87f.png)
,而在其他点取值都是0。而多项式
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/e3429cb8bac10d3ecb9c4874c3259371.png)
就可以满足
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/5706d73b37e64ddc04f27e2d2d6cea5c.png)
在其它点取值为0的多项式容易找到,例如:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/3864036c308097656c541bab0a2f186f.png)
它在点
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/2439a55f07592cc52e2eafefd64d5288.png)
。由于已经假定
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/7aa0d5bd3ff055f4236d45d71d71adbf.png)
两两互不相同,因此上面的取值不等于0。于是,将多项式除以这个取值,就得到一个满足“在
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/90662467eda3c6fcbe607b2a797319f5.png)
取值为1,而在其他点取值都是0的多项式”:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/02/09a2aba5952d353b89b63911cee052c0.png)
这就是拉格朗日基本多项式。
我们的方法是这样的,根据水平方向上的双线性二次插值,由f(I,j)和f(i+1,j)求取f(x,j),由
f(I,j+1)和f(i+1,j+1)求取f(x,j+1),然后再根据这两点的二次插值求取f(x,y)。
根据前面的例题,我们可以很容易的求取各点插值如下:
f(x,j)=(i+1-x)f(I,j)+(x-i)f(i+1,j) 公式1-(4)
f(x,j+1)=(i+1-x)f(I,j+1)+(x-i)f(i+1,j+1) 公式1-(5)
f(x,y)=(i+1-y)f(x,j)+(y-j)f(x,j+1) 公式1-(6)
以上三式综合可以得到:
f(x,y)=(j+1-y)(i+1-x)f(I,j)+(j+1-y)(x-i)f(i+1,j)+(y-j)(i+1-x)f(I,j+1)+(y-j)(x-i)f(i+1,j+1) 公式1-(7)
我们令x=i+p,y=j+q得:
f(i+p,j+q)=(1-q)(1-p)f(I,j)+p(1-q)f(i+1,j)+q(1-p)f(I,j+1)+pqf(i+1,j+1) 公式1-(8)
上式即为数字图像处理中的双线性二次插值公式。
参考博客:https://www.cnblogs.com/ECJTUACM-873284962/p/6833391.html
http://blog.csdn.net/trent1985/article/details/45150677
相关文章推荐
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- [转载]图像缩放的双线性内插值算法的原理解析【转】
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析
- 图像缩放的双线性内插值算法的原理解析