天天看點

圖像進行中對雙三次插值(立方卷積插值)的了解

很多人對圖像進行中雙三次內插補點的矩陣不能了解,現在整合歸納出适合自己了解的資料:

假設源圖像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)處像素值的參數。如圖所示:

圖像進行中對雙三次插值(立方卷積插值)的了解

                                               注:令(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):

圖像進行中對雙三次插值(立方卷積插值)的了解

我們要做的就是求出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呢?

這時候我們得看立方卷積插值的矩陣表示:

圖像進行中對雙三次插值(立方卷積插值)的了解

AB運算後是個1*4的矩陣,這是可以看成是有1行4列的像素,這時候就得把這四列像素分别乘上k_j.

等價為:

圖像進行中對雙三次插值(立方卷積插值)的了解

最後通過求和公式可以得到目标圖檔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(截圖)

繼續閱讀