图像处理中对双三次插值(立方卷积插值)的理解

很多人对图像处理中双三次差值的矩阵不能理解,现在整合归纳出适合自己理解的资料:

假设源图像A大小为m*n,缩放后的目标图像B的大小为M*N。那么根据比例我们可以得到B(X,Y)在A上的 对应坐标为A(x,y)=A(X*(m/M),Y*(n/N))。在双线性插值法中,我们选取A(x,y)的最近四个点。而在双立方 插值法中,我们选取的是最近的16个像素点作为计算目标图像B(X,Y)处像素值的参数。如图所示

图像处理中对双三次插值(立方卷积插值)的理解_第1张图片
                                               注:令(x,y)为P点

        如图所示P点就是目标图像B在(X,Y)处对应于源图像中的位置,P的坐标位置会出现小数部分,所以我们假设 P的坐标为P(x+u,y+v),其中x,y分别表示整数部分,u,v分别表示小数部分。那么我们就可以得到如图所示的 最近16个像素的位置,在这里用a(i,j)(i,j=0,1,2,3)来表示。 
        双立方插值的目的就是通过找到一种关系,或者说系数,可以把这16个像素对于P处像素值得影响因子找出 来,从而根据这个影响因子来获得目标图像对应点的像素值,达到图像缩放的目的。 影响因子函数就是S(x):


图像处理中对双三次插值(立方卷积插值)的理解_第2张图片
我们要做的就是求出S(x)函数中的参数x,从而获得上面所说的16个像素所对应的系数。在学习双线性插 值法的时候,我们是把图像的行和列分开来理解的,那么在这里,我们也用这种方法描述如何求出a(i,j)对应 的系数k_ij。假设行系数为k_i,列系数为k_j。我们以a(0,0)位置为例: 

首先,我们要求出当前像素与P点的位置,比如a(0,0)距离P(i+u,j+v)的距离为(1+u,1+v)。 
那么我们可以得到:k_i_0=W(1+u),k_j_0=W(1+v). 同理我们可以得到所有行和列对应的系数:

k_i_0=W(1+u), k_i_1=W(u),k_i_2=W(1-u), k_i_3=W(2-u); 

k_j_0=W(1+v), k_j_1=W(v),k_j_2=W(1-v), k_j_3=W(2-v);

这样我们就分别得到了行和列方向上的系数。 由k_i_j=k_i*k_j我们就可以得到每个像素a(i,j)对应的权值了。

为何像素a(i,j)对应的权值k_i_j是k_i*k_j而不是k_i呢?

这时候我们得看立方卷积插值的矩阵表示:

图像处理中对双三次插值(立方卷积插值)的理解_第3张图片
AB运算后是个1*4的矩阵,这是可以看成是有1行4列的像素,这时候就得把这四列像素分别乘上k_j.

等价为:

图像处理中对双三次插值(立方卷积插值)的理解_第4张图片

最后通过求和公式可以得到目标图片B(X,Y)对应的像素值: 
pixelB(X,Y)=pixelA(0,0)*k_0_0+pixelA(0,1)*k_0_1+…+pixelA(3,3)*k_3_3; 
这里其实就是个求和公式,由于不知道怎么编辑公式,就这样表达了。


文字部分参考:http://blog.csdn.net/qq_29058565/article/details/52769497

图片来源:https://www.bilibili.com/video/av20110752/?p=12(截图)

你可能感兴趣的:(图像处理中对双三次插值(立方卷积插值)的理解)