其他分享
首页 > 其他分享> > 双线性插值原理学习(2021.1.18)

双线性插值原理学习(2021.1.18)

作者:互联网

双线性插值学习

1、双线性插值介绍

        双线性插值(也称双线性内插),核心是在两个方向分别进行一次线性插值,在图像处理、信号分析等领域广泛应用。

2、双线性插值原理

        一元函数 y = f ( x ) y=f(x) y=f(x)可以在二维空间(如平面直角坐标系)绘制成曲线,设一元函数 f ( x ) f(x) f(x),已知两点 P 1 ( x 1 , f ( x 1 ) ) P_1(x_1,f(x_1)) P1​(x1​,f(x1​))、 P 2 ( x 2 , f ( x 2 ) ) P_2(x_2,f(x_2)) P2​(x2​,f(x2​)),则根据一维线性插值求两点所连直线上的一点 ( x , y ) (x,y) (x,y)公式如下:
                 y − f ( x 1 ) f ( x 2 ) − f ( x 1 ) = x − x 1 x 2 − x 1 (1) \frac{y-f(x_1)}{f(x_2)-f(x_1)} =\frac{x-x_1}{x_2-x_1} \tag{1} f(x2​)−f(x1​)y−f(x1​)​=x2​−x1​x−x1​​(1)                 即
y = x 2 − x x 2 − x 1 f ( x 1 ) + x − x 1 x 2 − x 1 f ( x 2 ) (2) y=\frac{x_2-x}{x_2-x_1}f(x_1)+\frac{x-x_1}{x_2-x_1}f(x_2) \tag{2} y=x2​−x1​x2​−x​f(x1​)+x2​−x1​x−x1​​f(x2​)(2)

        二元函数 z = f ( x , y ) z=f(x,y) z=f(x,y)可以在三维空间(如空间直角坐标系)绘制曲面,设二元函数 z = f ( x , y ) z=f(x,y) z=f(x,y),已知四个点 Q 1 ( x 1 , y 1 , f ( x 1 , y 1 ) ) Q_1(x_1,y_1,f(x_1,y_1)) Q1​(x1​,y1​,f(x1​,y1​))、 Q 2 ( x 1 , y 2 , f ( x 1 , y 2 ) ) Q_2(x_1,y_2,f(x_1,y_2)) Q2​(x1​,y2​,f(x1​,y2​))、 Q 3 ( x 2 , y 1 , f ( x 2 , y 1 ) ) Q_3(x_2,y_1,f(x_2,y_1)) Q3​(x2​,y1​,f(x2​,y1​))、 Q 4 ( x 2 , y 2 , f ( x 2 , y 2 ) ) Q_4(x_2,y_2,f(x_2,y_2)) Q4​(x2​,y2​,f(x2​,y2​))利用双线性插值的本质:在两个方向上分别进行一次线性插值求解最后的插值点 ( x , y , z ) (x,y,z) (x,y,z)
        首先在X方向上进行插值(需要固定y1、y2平面):
                在 y = y 1 y=y_1 y=y1​平面, f ( x , y 1 ) = x 2 − x x 2 − x 1 f ( x 1 , y 1 ) + x − x 1 x 2 − x 1 f ( x 2 , y 1 ) (3) f(x,y_1)=\frac{x_2-x}{x_2-x_1}f(x_1,y_1)+\frac{x-x_1}{x_2-x_1}f(x_2,y_1) \tag{3} f(x,y1​)=x2​−x1​x2​−x​f(x1​,y1​)+x2​−x1​x−x1​​f(x2​,y1​)(3)
                在 y = y 2 y=y_2 y=y2​平面, f ( x , y 2 ) = x 2 − x x 2 − x 1 f ( x 1 , y 2 ) + x − x 1 x 2 − x 1 f ( x 2 , y 2 ) (4) f(x,y_2)=\frac{x_2-x}{x_2-x_1}f(x_1,y_2)+\frac{x-x_1}{x_2-x_1}f(x_2,y_2) \tag{4} f(x,y2​)=x2​−x1​x2​−x​f(x1​,y2​)+x2​−x1​x−x1​​f(x2​,y2​)(4)
        然后在Y方向上进行插值(需要固定x平面):
z = y 2 − y y 2 − y 1 f ( x , y 1 ) + y − y 1 y 2 − y 1 f ( x , y 2 ) (5) z =\frac{y_2-y}{y_2-y_1}f(x,y_1)+\frac{y-y_1}{y_2-y_1} f(x,y_2) \tag{5} z=y2​−y1​y2​−y​f(x,y1​)+y2​−y1​y−y1​​f(x,y2​)(5)
        综上可得:
z = a ∗ f ( x 1 , y 1 ) + b ∗ f ( x 2 , y 1 ) + c ∗ f ( x 1 , y 2 ) + d ∗ f ( x 2 , y 2 ) (6) z=a*f(x_1,y_1)+b*f(x_2,y_1)+c*f(x_1,y_2)+d*f(x_2,y_2) \tag{6} z=a∗f(x1​,y1​)+b∗f(x2​,y1​)+c∗f(x1​,y2​)+d∗f(x2​,y2​)(6)
        其中 a = x 2 − x x 2 − x 1 y 2 − y y 2 − y 1 a=\frac{x_2-x}{x_2-x_1}\frac{y_2-y}{y_2-y_1} a=x2​−x1​x2​−x​y2​−y1​y2​−y​      b = x − x 1 x 2 − x 1 y 2 − y y 2 − y 1 b=\frac{x-x_1}{x_2-x_1}\frac{y_2-y}{y_2-y_1} b=x2​−x1​x−x1​​y2​−y1​y2​−y​     c = x 2 − x x 2 − x 1 y − y 1 y 2 − y 1 c=\frac{x_2-x}{x_2-x_1}\frac{y-y_1}{y_2-y_1} c=x2​−x1​x2​−x​y2​−y1​y−y1​​      d = x − x 1 x 2 − x 1 y − y 1 y 2 − y 1 d=\frac{x-x_1}{x_2-x_1}\frac{y-y_1}{y_2-y_1} d=x2​−x1​x−x1​​y2​−y1​y−y1​​

3、图像应用

        一张二维图像本质可以看成二维函数 z = f ( x , y ) z=f(x,y) z=f(x,y),如 ( x , y ) (x,y) (x,y)即某个像素点的坐标,z即像素点处的函数值。对于二维图像来说,经常用相邻四个像素点, x 2 − x 1 = 1 , y 2 − y 1 = 1 x_2-x_1=1,y_2-y_1=1 x2​−x1​=1,y2​−y1​=1,所以式(6)中分母都为1
        设图像上四个相邻点为 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​)、 ( x 1 , y 2 ) (x_1,y_2) (x1​,y2​)、 ( x 2 , y 1 ) (x_2,y_1) (x2​,y1​)、 ( x 2 , y 2 ) (x_2,y_2) (x2​,y2​),可令 x 1 = i , y 1 = j x_1=i, y_1=j x1​=i,y1​=j,则 x 2 = i + 1 , y 2 = j + 1 x_2=i+1, y_2 = j+1 x2​=i+1,y2​=j+1,同时令 x − x 1 = u x-x_1=u x−x1​=u, y − y 1 = v y-y_1=v y−y1​=v,则 x 2 − x = 1 − u x_2-x=1-u x2​−x=1−u, y 2 − y = 1 − v y_2-y=1-v y2​−y=1−v
带入式(6)后如下:
f ( i + u , j + v ) = ( 1 − u ) ( 1 − v ) f ( i , j ) + u ( 1 − v ) f ( i + 1 , j ) + ( 1 − u ) v f ( i , j + 1 ) + u v f ( i + 1 , j + 1 ) (7) 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) \tag{7} 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)(7)

4、上采样

        插值作为上采样的手段,往往要利用稀疏像元产生密集像元。上采样也可看作是一种小数步长的卷积
在这里插入图片描述

标签:2021.1,y2,frac,18,线性插值,x2,y1,x1
来源: https://blog.csdn.net/jing_zhong/article/details/111979003