bicubic的解释
bicubic interpolation解释
-
- cubic的推倒:
如果一个函数 f(x) 在x=0和x=1的位置上的函数值已知,那么这个函数在闭区间[0,1]上的值是可以被插入的,利用一个读度数为3的多项式去描述这条曲线,那么:
设 f(x)=ax3+bx2+cx+d(1)
对这个函数求导,得
f′(x)=3ax2+2bx+c(2)
那么
f(0)=df(1)=a+b+c+df′(0)=cf′(1)=3a+2b+c(3)
⇒⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪a=2f(0)−2f(1)+f′(0)+f′(1)b=−3f(0)+3f(1)−2f′(0)−f′(1)c=f′(0)d=−f(0)(4)
得到了系数,我们就可以可以得到这个f(x)的表示方法
- cubic的推倒:
- 2.当我们在处理一列数的时候,我们在不知道导数的情况下,
- 为了得到平滑的曲线,我们采用如下的方法进行近似或者说逼近,我们通过当前点相邻的间隔的两点连线,用这条直线的斜率来近似替代这个位置导数
- 假设我们有四个值,分别 p0,p1,p2,p3 代表x=-1,x=0,x=1和x=2位置的函数值,那么:
f(0)=p1f(1)=p2f′(0)=p2−p02f′(1)=p3−p12(5)
采取和第一种情况类似的将值带入计算的方法,得到如下式子
⇒⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪a=−12p0+32p1−32p2+12p3b=p0−52p1+2p2−12p3c=−12p0+12p2d=p1(4)
知道了系数反推回式子里带入即可。
- 3.bicubic就是cubic在二维上的推广
- 我们相等于从插值到线转变到插值到一个二维的矩阵当中,我们可以利用cubic的公式去构造bicubic的公式。
- 假设我们有16个点,i,j分别表示行位置和列位置,我们可以将行方向和列方向分解,比如先在行方向做(和二元的积分有相通之处)
- 那么设
g(x)=∑03∑03aijxiyj(5)
同样将16值带入能够推导出如下结果
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪a00=p11a01=−12p10+12p12a02=p10−52p11+2p12−12p13a03=−12p10+32p11−32p12+12p13a10=−12p00−14p21a11=14p00−14p02−14p20+14p22a12=−12p00+54p01−p02+14p03+12p20−54p21+p22−14p23a13=14p00−34p01+34p02−14p03−14p20+34p21−34p22+14p23a20=p01−52p01+2p21−12p31a21=−12p00+12p02+54p10−54p12−p20+p22+14p30−14p32a22=p00−52p02+2p02−12p03−52p10 +254p11−5p12+154p12−54p13−p20+3p21 −3p22+p23+14p30−34p31+34p32−14p33a23=12p00+32p01−32p02+12p03+54p10 −154p11+154p12−54p13−p20 +3p21−3p22+p23+14p30−34p31+34p32−14p33a30=−12p0132p11−32p21+12p31a31=14p00−14p02−34p10+34p12+34p20−34p22−14p30+14p32a32=−12p00+54p01−p02+14p30+32p10 −154p11+3p12−34p13−32p20+154p20 +154p21−3p22+34p23+12p30−54p31+p32−14p33a33=14p00−34p01+34p02−14p03−34p10+94p11 −94p12+34p13+34p20−94p21−94p22 −34p23−14p30+34p31−34p31−34p32+14p33(6)
那么将系数带回原式就得到了bicubic的公式。