雙線性插值


假設有一張4*4的圖像.如下圖:

我們想縮放成3*3的圖像,計算如下(以縮放后的像素點B為例):

 

根據如下計算公式:

srcX=dstX* (srcWidth/dstWidth)

srcY = dstY * (srcHeight/dstHeight)

以E點坐標為例計算坐標點在原圖對坐標位置如下:

取原圖像的X坐標 = 1* (4/3)[公式]1.3

取原圖像的Y坐標 = 1* (4/3)[公式]1.3

 

使用雙線性插值法:

對(1.3,1.3)坐標在原圖像上進行投影,如下圖:

對於一個目的像素,設置坐標通過反向變換得到的浮點坐標為(i + u , j + v) (其中i、j均為浮點坐標的整數部分,u、v為浮點坐標的小數部分,是取值[0,1)區間的浮點數)。

則這個像素得值 f(i + u , j + v) 可由原圖像中坐標為 (i , j)、(i + 1 , j)、(i , j + 1)、(i + 1 , j + 1)所對應的周圍四個像素的值決定。即:

f(i + u , j + v) = (1 - u) ( 1 - v) f(i , j) + (1 - u) v f(i , j + 1) + u (1 - v) f(i + 1 , j) + u v f(i + 1 , j + 1)

其中f(i , j)表示源圖像(i , j)處的的像素值,以此類推。

本例分析:

i = 1 , j = 1 , u = 0.3 , v = 0.3

f(1.3 , 1.3) 由(1 , 1) 、(2 , 1)、(1 , 2)、(2 , 2) 這四個像素的值決定,如下圖紅色框選的點:

 

f(1.3 , 1.3) = 0.7 * 0.7 * f(1 , 1) + 0.7 * 0.3 * f(1 , 2) + 0.3 * 0.7 * f(2 , 1) + 0.3 * 0.3 * f(2 , 2)

= 0.7 * 0.7 * 2 + 0.7 * 0.3 * 6 + 0.3 * 0.7 * 4 + 0.3 * 0.3 * 8

 

從上圖也可以看出,點2離目標點最近,其次4和6,最后是8,權重也是越近權重越大。

 

計算原理:

p點像素值決定於Q12、Q22、Q11、Q21這4個點點像素值。

我們先在X軸方向做2次插值操作(分別為R1和R2),然后在Y軸方向做一次插值操作(P),當然我認為也可以先在Y軸做2次插值操作,然后在X軸做一次插值操作。

[公式]

[公式]

[公式]

其中 [公式] 、 [公式] 、 [公式] 、 [公式] 都是權重值。

[公式] 點計算舉例,假設 [公式] , [公式] , [公式] :

[公式] 為總距離, [公式] 為 [公式] 與 [公式] 的距離, [公式] 為 [公式] 與 [公式] 的距離,[公式] 離 [公式]更近,對 [公式] 的影響應該更大,所以權重應該更大,應為 [公式] ,即為 [公式] 。

 

這2次X軸插值操作和1次Y軸插值操作,合並成一個公式即為計算原理上面的步驟。

來源:https://zhuanlan.zhihu.com/p/58991226

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM