双线性插值公式推导

    Ia = input_img[np.arange(B)[:,None,None], y0, x0]
    Ib = input_img[np.arange(B)[:,None,None], y1, x0]
    Ic = input_img[np.arange(B)[:,None,None], y0, x1]
    Id = input_img[np.arange(B)[:,None,None], y1, x1]
    
    wa = (x1-x) * (y1-y)
    wb = (x1-x) * (y-y0)
    wc = (x-x0) * (y1-y)
    wd = (x-x0) * (y-y0)
    
    wa = np.expand_dims(wa, axis=3)
    wb = np.expand_dims(wb, axis=3)
    wc = np.expand_dims(wc, axis=3)
    wd = np.expand_dims(wd, axis=3)
    
    out = wa*Ia + wb*Ib + wc*Ic + wd*Id

在双线性插值中出了这几行代码,这个wa,wb,wc,wd为什么是这些坐标相减后的乘积。那么out怎么就等于wa*Ia+wb*Ib+wc*Ic+wd*Id,关于这个问题,网上给出的解释很少,那么在这里我具体的推导一下。

单线性插值:

原理网上有很多,我们这里只推导公式

K=\frac{y2-y1}{x2-x1}       (斜率公式)

y-y1 = \frac{y2-y1}{x2-x1}\cdot (x-x1)(直线公式)

b= \frac{a-x1}{x2-x1}\cdot (y2-y1)+y1(将点(a,b)代入公式)

b=\frac{d1}{d1+d2}\cdot (y2-y1)+y1(用图中d1,d2代替)

b=\frac{d1}{d1+d2}\cdot y2+\frac{d2}{d1+d2}\cdot y1

 

双线性插值:

 

 

f(I)=\frac{d1}{d1+d2}f(B)+\frac{d2}{d1+d2}f(A)

f(J)=\frac{d1}{d1+d2}f(D)+\frac{d1}{d1+d2}f(C)

f(P)=\frac{d3}{d3+d4}f(J)+\frac{d4}{d3+d4}f(I)

f(P)=\frac{(y1-y)(x1-x)f(A)+(y1-y)(x-x0)f(B)+(y-y0)(x1-x)f(C)+(y-y0)(x-x0)f(D)}{(d1+d2)(d3+d4)}

注意咱们在做双线性插值都是在临近的四个点算的,也就是d1+d2=1,d3+d4=1。所以咱们f(P)的分母为1。则可进一步化简为

f(P)=(y1-y)(x1-x)f(A)+(y1-y)(x-x0)f(B)+(y-y0)(x1-x)f(C)+(y-y0)(x-x0)f(D)

这样也就解释了out=wa*Ia+wb*Ib+wc*Ic+wd*Id

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值