雙線性插值,又稱為雙線性內插。在數學上,雙線性插值是對線性插值在二維直角網格上的擴展,用於對雙變量函數(例如 x 和 y)進行插值。其核心思想是在兩個方向分別進行一次線性插值。 單位矩形的四個角的z值分別是0、1、1、0.5,如果將坐標解釋為顏色,整個單位矩形上的雙線性插值結果如圖。 算法 紅色的數據點與待插值得到的綠色點 假如我們想得到未知函數 f 在點 P = ( x , y ) {\displaystyle P=\left(x,y\right)} 的值,假設我們已知函數 f 在 Q 11 = ( x 1 , y 1 ) {\displaystyle Q_{11}=\left(x_{1},y_{1}\right)} , Q 12 = ( x 1 , y 2 ) {\displaystyle Q_{12}=\left(x_{1},y_{2}\right)} , Q 21 = ( x 2 , y 1 ) {\displaystyle Q_{21}=\left(x_{2},y_{1}\right)} , 及 Q 22 = ( x 2 , y 2 ) {\displaystyle Q_{22}=\left(x_{2},y_{2}\right)} 四個點的值。 首先在 x 方向進行線性插值,得到 f ( x , y 1 ) ≈ x 2 − x x 2 − x 1 f ( Q 11 ) + x − x 1 x 2 − x 1 f ( Q 21 ) , f ( x , y 2 ) ≈ x 2 − x x 2 − x 1 f ( Q 12 ) + x − x 1 x 2 − x 1 f ( Q 22 ) . {\displaystyle {\begin{aligned}f(x,y_{1})&\approx {\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{11})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{21}),\\f(x,y_{2})&\approx {\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{12})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{22}).\end{aligned}}} 然後在 y 方向進行線性插值,得到 f ( x , y ) ≈ y 2 − y y 2 − y 1 f ( x , y 1 ) + y − y 1 y 2 − y 1 f ( x , y 2 ) = y 2 − y y 2 − y 1 ( x 2 − x x 2 − x 1 f ( Q 11 ) + x − x 1 x 2 − x 1 f ( Q 21 ) ) + y − y 1 y 2 − y 1 ( x 2 − x x 2 − x 1 f ( Q 12 ) + x − x 1 x 2 − x 1 f ( Q 22 ) ) = 1 ( x 2 − x 1 ) ( y 2 − y 1 ) ( f ( Q 11 ) ( x 2 − x ) ( y 2 − y ) + f ( Q 21 ) ( x − x 1 ) ( y 2 − y ) + f ( Q 12 ) ( x 2 − x ) ( y − y 1 ) + f ( Q 22 ) ( x − x 1 ) ( y − y 1 ) ) = 1 ( x 2 − x 1 ) ( y 2 − y 1 ) [ x 2 − x x − x 1 ] [ f ( Q 11 ) f ( Q 12 ) f ( Q 21 ) f ( Q 22 ) ] [ y 2 − y y − y 1 ] . {\displaystyle {\begin{aligned}f(x,y)&\approx {\frac {y_{2}-y}{y_{2}-y_{1}}}f(x,y_{1})+{\frac {y-y_{1}}{y_{2}-y_{1}}}f(x,y_{2})\\&={\frac {y_{2}-y}{y_{2}-y_{1}}}\left({\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{11})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{21})\right)+{\frac {y-y_{1}}{y_{2}-y_{1}}}\left({\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{12})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{22})\right)\\&={\frac {1}{(x_{2}-x_{1})(y_{2}-y_{1})}}{\big (}f(Q_{11})(x_{2}-x)(y_{2}-y)+f(Q_{21})(x-x_{1})(y_{2}-y)+f(Q_{12})(x_{2}-x)(y-y_{1})+f(Q_{22})(x-x_{1})(y-y_{1}){\big )}\\&={\frac {1}{(x_{2}-x_{1})(y_{2}-y_{1})}}{\begin{bmatrix}x_{2}-x&x-x_{1}\end{bmatrix}}{\begin{bmatrix}f(Q_{11})&f(Q_{12})\\f(Q_{21})&f(Q_{22})\end{bmatrix}}{\begin{bmatrix}y_{2}-y\\y-y_{1}\end{bmatrix}}.\end{aligned}}} 注意此處如果先在 y 方向插值、再在 x 方向插值,其結果與按照上述順序雙線性插值的結果是一樣的。 Remove ads單位正方形 如果選擇一個坐標系統使得 f 的四個已知點坐標分別為 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那麼插值公式就可以化簡為 f ( x , y ) ≈ f ( 0 , 0 ) ( 1 − x ) ( 1 − y ) + f ( 1 , 0 ) x ( 1 − y ) + f ( 0 , 1 ) ( 1 − x ) y + f ( 1 , 1 ) x y . {\displaystyle f(x,y)\approx f(0,0)\,(1-x)(1-y)+f(1,0)\,x(1-y)+f(0,1)\,(1-x)y+f(1,1)xy.} 或者用矩陣運算表示為 f ( x , y ) ≈ [ 1 − x x ] [ f ( 0 , 0 ) f ( 0 , 1 ) f ( 1 , 0 ) f ( 1 , 1 ) ] [ 1 − y y ] {\displaystyle f(x,y)\approx {\begin{bmatrix}1-x&x\end{bmatrix}}{\begin{bmatrix}f(0,0)&f(0,1)\\f(1,0)&f(1,1)\end{bmatrix}}{\begin{bmatrix}1-y\\y\end{bmatrix}}} Remove ads非線性 顧名思義,雙線性插值的結果不是線性的,它是兩個線性函數的積。在單位正方形上,雙線性插值可以記作 f ( x , y ) = ∑ i = 0 1 ∑ j = 0 1 a i j x i y j = a 00 + a 10 x + a 01 y + a 11 x y {\displaystyle f(x,y)=\sum _{i=0}^{1}\sum _{j=0}^{1}a_{ij}x^{i}y^{j}=a_{00}+a_{10}x+a_{01}y+a_{11}xy} 常數的數目(四)對應於給定的 f 的數據點數目 a 00 = f ( 0 , 0 ) , {\displaystyle a_{00}=f(0,0),} a 10 = f ( 1 , 0 ) − f ( 0 , 0 ) , {\displaystyle a_{10}=f(1,0)-f(0,0),} a 01 = f ( 0 , 1 ) − f ( 0 , 0 ) , {\displaystyle a_{01}=f(0,1)-f(0,0),} a 11 = f ( 1 , 1 ) + f ( 0 , 0 ) − ( f ( 1 , 0 ) + f ( 0 , 1 ) ) . {\displaystyle a_{11}=f(1,1)+f(0,0)-{\big (}f(1,0)+f(0,1){\big )}.} 雙線性插值的結果與插值的順序無關。首先進行 y 方向的插值,然後進行 x 方向的插值,所得到的結果是一樣的。 雙線性插值的一個顯然的三維空間延伸是三線性插值。 Remove ads在圖像處理領域的應用 對灰度值進行雙線性插值 在計算機視覺及圖像處理領域,雙線性插值是一種基本的重採樣技術。 材質貼圖中,雙線性插值也叫雙線性過濾或者雙線性材質貼圖。圖像的雙線性插值放大算法中,目標圖像中新創造的象素值,是由源圖像位置在它附近的2*2區域4個鄰近象素的值通過加權平均計算得出的。雙線性內插值算法放大後的圖像質量較高,不會出現像素值不連續的的情況。然而此算法具有低通濾波器的性質,使高頻分量受損,所以可能會使圖像輪廓在一定程度上變得模糊。 參見 雙三次插值 樣條插值 Lanczos resampling Loading related searches...Wikiwand - on Seamless Wikipedia browsing. On steroids.Remove ads