最近用到插值算法,使用三次樣條插值時仿真速度太慢,於是采用算法簡單的線性插值。本篇主要介紹一下雙線性插值的實現方法。
1. 線性插值
已知坐標 (x0, y0) 與 (x1, y1),要得到 [x0, x1] 區間內某一位置 x 在直線上的值。
由於 x 值已知,所以可以從公式得到 y 的值
已知 y 求 x 的過程與以上過程相同,只是 x 與 y 要進行交換。
2. 雙線性插值(Bilinear Interpolation)
在數學上,雙線性插值是有兩個變量的插值函數的線性插值擴展,其核心思想是在兩個方向分別進行一次線性插值。
圖中:紅色的數據點與待插值得到的綠色點
假如我們想得到未知函數 f 在點 P = (x, y) 的值,假設我們已知函數 f 在 Q11 = (x1, y1)、Q12 = (x1, y2), Q21 = (x2, y1) 以及 Q22 = (x2, y2) 四個點的值。
首先在 x 方向進行線性插值,得到
然后在 y 方向進行線性插值,得到
這樣就得到所要的結果 f(x, y),
雙線性插值在三維空間的延伸是三線性插值。