双线性插值法

经过线性插值后,新图像每个像素值来自于原图像像素点的组合插值。

简单的斜率公式可知。

在这里插入图片描述

经过合并同类项后得到

已知 y 求 x 的过程与以上过程相同,只是 x 与 y 要进行交换。

由于像素间距离

x_{2}-x_{1}=1; a = x_{2} - x; x - x_{1} = 1 - a; y=ay_{1}+(1-a)y_{2}

双线性插值

在两个方向分别进行一次线性插值

我们以一个例子来介绍双线性插值原理:假如我们想得到未知函数f在点P=f(x, y)的值,设f在Q11=(x1, y1),Q12=(x1, y2),Q21=(x2,y1),Q22=(x2,y2)四个点的值。

首先在x方向上面线性插值,得到R2、R1:

f(R_{1}) = \frac{x_{2}-x}{x_{2}-x_{1}}f(Q_{11}) + \frac{x-x_{1}}{x_{2}-x_{1}}f(Q_{21}), Where R_{1} = (x, y_{1})

f(R_{2}) = \frac{x_{2}-x}{x_{2}-x_{1}}f(Q_{21}) + \frac{x-x_{1}}{x_{2}-x_{1}}f(Q_{22}), Where R_{2} = (x, y_{2})

然后以R2,R1在y方向上面再次线性插值:

f(p) = \frac{y_{2} - y}{y_{1} - y}f(R_{1}) + \frac{y - y_{1}}{y_{2} - y_{1}}f(R_{2})

这样就得到所要的结果 f(x, y)

f(x,y) = \frac{1}{(x_{2}-x_{1})(y_{2}-y_{1})}[(x_{2}-x)(y_{2}-y)f(Q_{11})+ (x-x_{1})(y_{2}-y)f(Q_{21})+(x_{2}-x)(y-y_{1})f(Q_{12})+(x-x_{1})(y-y_{1})f(Q_{22})]

因为双线性插值只会使用相邻的四个点,因此分母总是1,可以约取。

由于插值点不一定是整数,例如点(1.2, 3.4), 其相邻的四个点分别为(1.3)(2.3)(1.4)(2.4)

f(i+u, j+v) = (1-u)(1-v)f(i,j) + u(1-v)f(i+1,j)+(1-u)vf(i,j+1)+uvf(i+1,j+1)

 给定一个矩阵(图片本身就是一种矩阵),将1个 3 ∗ 3 尺寸的矩阵使用最近邻插值法到 4 ∗ 4

源图像与目标图像坐标的对应关系如下式
在这里插入图片描述

dst[0,1]对应的src位置如下:

src_x = 0 * (3 / 4) = 0
src_y = 1 * (3 / 4) = 0.75
u=0,v=0.75

得到的对应于源图的坐标是(0 , 0.75), 这其实只是一个概念上的虚拟象素,实际在源图中并不存在这样一个象素,那么目标图的象素(0,1)的取值不能够由这个虚拟象素来决定,而只能由源图的这四个象素共同决定:(0,0)(0,1)(1,0)(1,1),
而由于(0,0.75)离(1,0)要更近一些,那么(1,0)所起的决定作用更大一些。

dst[0,1]=(1−0)(1−0.75)∗src[1,1]+(1−0)∗0.75∗src[1,0]+0∗(1−0.75)∗src[0,1]+0∗0.75∗src[0,0]
= 11 + 50 = 61
 

算法优化(待了解)
源图像和目标图像几何中心的对齐

SrcX=(dstX+0.5) * (srcWidth/dstWidth) -0.5

SrcY=(dstY+0.5) * (srcHeight/dstHeight)-0.5

代码实现
图像中的每个值都是通过双线性插值的方法得到的,首先生成一个空的目标图像大小的矩阵,然后往里面填值。

计算在源图上四个近邻点的位置

src_x = (dst_x + 0.5) * scale_x - 0.5
src_y = (dst_y + 0.5) * scale_y - 0.5

计算在源图上四个近邻点的位置

src_x_0 = int(np.floor(src_x))
src_y_0 = int(np.floor(src_y))
src_x_1 = min(src_x_0 + 1, src_w - 1)
src_y_1 = min(src_y_0 + 1, src_h - 1)
 

参考链接:https://zhuanlan.zhihu.com/p/49832048
参考链接:https://blog.csdn.net/siyue0211/article/details/92660001
参考链接:https://blog.csdn.net/m0_37799466/article/details/103890049
————————————————
版权声明:本文为CSDN博主「imxlw00」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/imxlw00/article/details/118118003

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值