数字图像处理之双线性插值
MASK R-CNN中很重要的一个改进是ROIAlign,ROIAlign使用了双线性插值运算避免了之前ROI运算的两次量化操作,从而提高对检测框的预测。这里就对双线性插值做一个简单的介绍。
线性插值
讲双线性插值之前先介绍一下线性插值。已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值(反之亦然):
y
−
y
0
x
−
x
0
=
y
1
−
y
0
x
1
−
x
0
\frac{y - y_0}{x - x_0} = \frac{y_1 - y_0}{x_1 - x_0}
x−x0y−y0=x1−x0y1−y0
由此得
y
=
x
1
−
x
x
1
−
x
0
y
0
+
x
−
x
0
x
1
−
x
0
y
1
y = \frac{x_1 - x}{x_1 - x_0}y_0 +\frac{x - x_0}{x_1 - x_0}y_1
y=x1−x0x1−xy0+x1−x0x−x0y1
线性插值的几何意义:用过两插值节点的直线近似原函数,通过近似代替原函数、插值得到数值。
双线性插值
双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。
已知的红色数据点与待插值得到的绿色点,我们把这些点上的值看作是图像上的像素点,假如我们想得到未知函数 f 在点P= (x,y) 的值,假设我们已知函数f在Q11 = (x1,y1),Q12 = (x1,y2), Q21 = (x2,y1) 以及Q22 = (x2,y2) 四个点的值。首先在x方向进行线性插值,得到R1和R2.
然后在y方向进行线性插值,得到P.
这样就得到所要的结果f(x,y).