插值法的公式怎么计算 插值法公式及计算步骤( 二 )


仔细观察上面的公式不难发现,其实PPP点的值等于周围四个点与P点所构成的四个对角矩形面积的加权平均

双三次插值(Bicubic interpolation)双三次插值是一种更加复杂的插值算法,是二维空间中最常用的插值算法,相对双线性插值的图像边缘更加平滑,函数f在点(x,y)的值可以通过矩形网格中最近的十六个采样点的加权平均得到,这里需要使用两个多项式插值三次函数,每个方向使用一个 。
双三次插值通过以下公式进行计算:
计算系数aij的过程依赖于插值数据的特性 。如果已知插值函数的导数,常用的方法就是使用四个顶点的高度以及每个顶点的三个导数 。一阶导数h′x与h′y表示x与y方向的表面斜率,二阶相互导数h”xy表示同时在x与y方向的斜率 。这些值可以通过分别对x与y向量取微分得到 。对于网格单元的每个顶点,将局部坐标(0,0)、(1,0)、(0,1)、(1,1)代入这些方程,再解这16个方程 。
看了上面这段话之后,貌似还是不太好理解,接下来我们看一个例子,双三次插值常用的BiCubic函数如下图
上式中的a取-0.5即可,函数图像如下
对待插值的像素点(x,y)(x,y可为浮点数),取其附近的4×4领域点(xi,yi)其中i,j=0,1,2,3 。按下面的公式进行插值计算:
例如,我们需要求解P点值,在P点周围有16个点
首先,我们要求出当前像素与PPP点的距离,比如a00距离P(x+u,y+v)的距离为(1+u,1+v),那么我们可以得到a00对应的系数为(W(1+u),W(1+v)),所以a11的系数为(W(u),W(v)),a22的系数为(W(1?u),W(1?v)),a33的系数为W(2?u),W(2?v),同理可以得到剩下点的系数,再根据上面的函数就可以求出P点的值 。
关于双三次插值函数更加详细介绍可以参考:论文
http:///download/publications/keysbicubic.pdf
区域插值(Area interpolation)区域插值算法主要分两种情况,缩小图像和放大图像的工作原理并不相同 。
缩小图像
如果图像缩小的比例是整数倍,在调用INTER_LINEAR_EXACT插值算法时,如果图像的宽和高的缩小比例都是2,而且图像的通道数不是2,实际上会调用INTER_AREA 。在调用INTER_LINEAR时,如果图像的宽和高的缩小比例都是2,实际上是会调用INTER_AREA 。
INTER_AREA实际上是个box filter,类似于均值滤波器 。
放大图像
如果放大图像的比例是整数倍,与最近邻插值相似 。如果放大的比例不是整数倍,则会采用线性插值 。
Lanczos插值Lanczos插值属于一种模板算法,需要通过计算模板中的权重信息来计算x对应的值 。对于一维信息,假如我们输入的点集为X,那么,Lanczos对应有个窗口模板Window,窗口中每个位置的权重计算如下:

通常a取2或者3,当a=2时,该算法适应于图像缩小的插值 。当a=3时,算法适用于图像放大的插值 。根据计算出来的权重信息,然后再根据xxx即可求出对应的加权平均:
插值算法耗时比较对于不同的插值算法,在缩放因子不同的时候,耗时会有所区别,具体对照如下表所示
总结【插值法的公式怎么计算 插值法公式及计算步骤】如果要缩小图像,推荐使用INTER_AREA插值效果最好,如果要放大图像,INTER_CUBIC效果最好,但是速度较慢,可以考虑使用INTER_LINEAR速度较快,效果也还不错 。

推荐阅读