Bilineární interpolace

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

V matematice, je bilineární interpolace rozšíření lineární interpolace pro interpolaci funkce dvou proměnných na pravidelnou prostorovou mřížku. Klíčová myšlenka je provést lineární interpolaci nejprve v jednom směru a pak i ve druhém směru.

Čtyři červené tečky ukazují datové body a zelená tečka je bod který chceme interpolovat.
Například bilineární interpolace na jednotkovým čtverci se z-hodnotami 0, 1, 1 a 0.5 jako signalizace. Interpolační hodnoty uprostřed jsou reprezentovány barvami.

Předpokládejme, že chceme najít hodnotu neznámé funkce f v bodě P = (x, y). Předpokladem je, že známe hodnotu f ve čtyřech bodech Q11 = (x1y1), Q12 = (x1y2), Q21 = (x2y1), a Q22 = (x2y2).

Nejprve provedeme lineární interpolaci v x-ovém směru. To znamená:

 f(R_1) \approx \frac{x_2-x}{x_2-x_1} f(Q_{11}) + \frac{x-x_1}{x_2-x_1} f(Q_{21}) \quad\mbox{kde}\quad R_1 = (x,y_1),

 

 f(R_2) \approx \frac{x_2-x}{x_2-x_1} f(Q_{12}) + \frac{x-x_1}{x_2-x_1} f(Q_{22}) \quad\mbox{kde}\quad R_2 = (x,y_2).

A teď budeme pokračovat v y-ovém směru.

 f(P) \approx \frac{y_2-y}{y_2-y_1} f(R_1) + \frac{y-y_1}{y_2-y_1} f(R_2).

Nyní máme požadovaný odhad f(x, y).

 
\begin{align}
f(x,y) &\approx \frac{f(Q_{11})}{(x_2-x_1)(y_2-y_1)} (x_2-x)(y_2-y) \\
& + \frac{f(Q_{21})}{(x_2-x_1)(y_2-y_1)} (x-x_1)(y_2-y) \\
& + \frac{f(Q_{12})}{(x_2-x_1)(y_2-y_1)} (x_2-x)(y-y_1) \\
& + \frac{f(Q_{22})}{(x_2-x_1)(y_2-y_1)} (x-x_1)(y-y_1). 
\end{align}

Pokud si vybereme souřadící systém se čtyřmi body, kde funkce f je zadána body (0, 0), (0, 1), (1, 0), a (1, 1), pak se vzorec zjednoduší:

 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.

Nebo ekvivalentně, maticovými operacemi:

 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}

Oproti tomu, co říká název, interpolace není lineární. Místo toho je její vzorec

 (a_1 x + a_2)(a_3 y + a_4), \,

takže je součinem dvou lineárních funkcí. Stejně tak lze interpolaci zapsat jako

 b_1 + b_2 x + b_3 y + b_4 x y \,

kde

 b_1 = f(0,0) \,
 b_2 = f(1,0)-f(0,0) \,
 b_3 = f(0,1)-f(0,0) \,
 b_4 = f(0,0)-f(1,0)-f(0,1)+f(1,1) \,.

V obou případech počet konstant (čtyři) odpovídá počtu daných bodů, které funkce f udává. Interpolace je lineární podle přímky, která je rovnoběžná buď se směrem x nebo y, ekvivalentně je-li x nebo y nastaveno konstantně. Rovnoběžně s další přímkou je interpolace kvadratická.

Výsledek bilineární interpolace je nezávislý na pořadí interpolací. Kdybychom nejprve provedli lineární interpolaci na ose y a pak v x-ovém směru, výsledná aproximace bude stejná.

Zřejmým rozšířením bilineární interpolace je třírozměrná interpolace - třílineární interpolace.

Související články[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Bilinear interpolation na anglické Wikipedii.