插值,通俗来说当在一个离散的事件中,想知道某一个位置确定的值时,就可以利用插值方式计算得到,即利用已知数据估计未知位置数值。插值的方式有很多,下面介绍几种常用的插值方式。
一、最近邻插值(Nearest Neighbour Interpolation)
最近邻插值法也成为零阶插值法,下图是一个一维的最近邻插值原理图,坐标轴上各点 xi-1,xi,xi+1 … 两两对半等分间隔 (红色虚线划分),以每个坐标点划分出各自的区域,最近邻插值的原理就是,各插值坐标点的值等于所在邻域坐标点的值。
例如,插值点 x 位于坐标点 xi 的邻域,那么其值 f(x) 就等于 f(xi)。
图1 一维最近邻插值原理图
对于二维情况来说,同理,只是插值位置的值由一维中的某个坐标点变为二维平面中的某点决定。如下图2所示,插值点P的值由与他位置最相近的Q11决定:
图2 二维最近邻插值示意图
二、单线性插值
下图3是一个一维的线性插值示意图,不同于最近邻插值,线性插值是将坐标轴上各点 xi-1,xi,xi+1 … 的值两两直接相连为线段,得到一条连续的约束函数。在这种插值中,例如插值坐标点x,根据约束函数可以求出其值应为 f(x)。相当于两点确定一条直线,从而线段上所有点的坐标就都可以确定了。若想插值的点在确定的线段外,也可以用这种方式求得,只是这种插值方式被称为线性外插。
因为每两个坐标点之间的约束函数曲线是一次线性的线段,对插值结果而言是“线性” 的,所以该方法称为线性插值。
图3 单线性插值示意图
三、双线性插值(bilinear Interpolation)
一维中插值推广到二维插值时就被称为双线性插值,也就是在一个平面中求某点的值,而非单线性插值中的某条线上求插值。每次需要经过三次一阶线性插值才能获得最终结果,下图4便展示了该过程的一种斜视示意图。
图4 双线性插值示意图
其中,(x0, y0)、(x0, y1)、(x1, y0)、(x1, y1) 为已知的像素坐标点(最上面四个边界点),灰度值分别对应为 f(x0, y0)、f(x0, y1)、f(x1, y0)、f(x1, y1)。灰度值未知的插值点为 (x, y),就是我们要求的插值点。
根据双线性插值法的约束,可以先由像素坐标点 (x0, y0) 和 (x0, y1) 在 y 轴向作一维线性插值得到 f(x0, y)、由像素坐标点 (x1, y0) 和 (x1, y1) 在 y 轴向作一维线性插值得到 f(x1, y),然后再由 (x0, y) 和 (x1, y) 在 x 轴向作一维线性插值得到插值点 (x, y) 的灰度值 f(x, y)。在做一维线性插值时,先作 x 轴或是先作 y 轴不影响结果。上述过程在俯视图中观看的话能够更加直观:
图5 双线性插值方式俯视图
双线性插值分别在两个方向计算了共3次单线性插值,也就是开始所说的三次一阶线性插值。
四、三线性插值
三线性插值原理与双线性插值原理类似,双线性插值是根据周围四个点计算插值点,而三线性插值是对一个立方体中周围8个顶点进行计算。实际上是双线性插值的3D形式。
图6 三线性插值原理图
(1)首先在x轴上进行插值(横向),分别求出4个边界上的蓝色的点C00,C01,C10,C11;
(2)再在y轴上进行插值(纵向),得到绿色的C0和C1两点;
(3)最后在z轴上进行插值得到插值点C。
五、双三次插值(BiCubic Interpolation)
双三次插值又叫立方卷积插值/ 双立方插值,它是利用了待求像素点在源图像中相邻的16个像素点的值,即这16个像素点的加权平均。在数值分析中,双三次插值是二维空间中最常用的插值方法。算是双线性插值的一种,与三线性插值不同。
图7 双三次插值俯视原理图
上图7是一个二维图像的双三次插值俯视示意图。每个像素值的权重由该点到待求像素点的距离确定,这个距离包括水平和竖直两个方向上的距离。
设待求插值点为图中 (i+u, j+v),已知其周围的 16 个像素坐标点 (网格) 的灰度值,还需要计算 16 个点各自的权重。以像素坐标点 (i, j) 为例,因为该点在 y 轴和 x 轴方向上与待求插值点 (i+u, j+v) 的距离分别为 u 和 v,所以的权重为 w(u) × w(v),其中 w(·) 是插值权重核 (可以理解为定义的权重函数)。同理可得其余 15 个像素坐标点各自的权重。那么,待求插值点 (i+u, j+v) 的灰度值 f(i+u, j+v) 将通过如下计算得到:
其中ABC三项分别为:
权重核为:
双三次插值不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。因此克服了前两种方法的不足之处,能够产生比双线性插值更为平滑的边缘,计算精度很高,处理后的图像像质损失最少,效果是最佳的。
参考资料:
https://blog.csdn.net/weixin_41311617/article/details/88943092
https://blog.csdn.net/weixin_42546737/article/details/110850247
https://blog.csdn.net/weixin_42463482/article/details/82830628
https://blog.csdn.net/qq_39478403/article/details/105796249