首页 > 编程知识 正文

双三次插值算法,双三次插值c语言

时间:2023-05-04 12:49:29 阅读:184931 作者:197

    感觉了解插值就像是打怪一样,现在终于打到这个终极yxdyf了。插值最后一篇。

     上一篇我们讲了cubic interpolation(三次插值),这一篇我们来讲bicubic interpolation(双线性插值)

     双三次插值:是二维空间中最常用的插值方法。在这种方法中,函数 f在点 (x,y) 的值可以通过矩形网格中最近的十六个采样点的加权平均得到,在这里需要使用两个多项式插值三次函数,每个方向使用一个。之前我们说cubic interpolation是求4n个未知数,两个cubic interpolation将会16n个未知数。

    方法一

     比如说我们的图片最开始是2*2的,我们如果要把图片放大2倍,变成4*4,那么放大后,有些像素肯定是没有,这就要借助于其他的已知的点。

      它的计算公式为:

假设 fx.fy fxy是函数f的偏导和全导,并且知道了4个点的值(0,0),(0,1),(1,0),(1,1)。我们现在就是要求aij。一个16个系数。那和我们上一篇讲的cubic interpolation一样,我们几威要6个方程式。

 1 点带入

2 偏导

3 全导

一共16个。

向量

是我们要求的。

向量

是我们已知的。

假设 A为已知矩阵

 

方法二

还可以这样子求a向量,在叫做权重。

用公式计算

一般a取-0.5或者-0.75

      我们要做的就是求出BiCubic函数中的参数x,从而获得上面所说的16个像素所对应的权重W(x)。BiCubic基函数是一维的,而像素是二维的,所以我们将像素点的行与列分开计算。f(X,Y)像素值为:

好,就此我就总结完我所有的学到插值。

下面是我参考和学习的一些网站,主要看的是第一个英文文档

https://en.wikipedia.org/wiki/Bicubic_interpolation

https://www.jianshu.com/p/055706fd32ee

https://zhuanlan.zhihu.com/p/62860859

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。