Kuvassa on yksikköneliön sisälle interpoloitu bilineaarisella menetelmällä neliön nurkissa olevat arvot (meritty z:lla). Arvot on väritetty sateenkaaren eli spektrin väreillä siten, että sininen on nolla ja punainen on yksi. Spektrin värit "nousevat" siten sininen, syaani, vihreä, keltainen, oranssi ja punainen.
**Bilineaarinen interpolaatio** on matematiikassa approksimaatiomenetelmä, joka on lineaarisen interpolaatiomenetelmän kaksiulotteinen laajennus. Siinä tasoalueen pisteiden arvoja lasketaan lähimpien pisteiden arvojen avulla sovittamalla kahdessa suunnassa lineaarisia polynomeja eli *interpolaatiosuoria*. Koska lineaarisia sovituksia on kaksi, kutsutaan menetelmää *bilineaariseksi*. Yleisessä käytössä on ollut kaksi menetelmää, joista toinen hyödyntää kolme ja toinen neljä näytepistettä. Interpoloinnin seurauksena syntyy silloin joko lineaarisia- tai kvadraattisia pintoja. Näitä pintoja kutsutaan *interpolanteiksi* tai *interpolaatiopinnoiksi*.

Tasoalueella satunnaisesti sijaitsevat pisteet voidaan aina yhdistää toisiinsa kolmioiksi, jotka sivuavat toisensa tiiviisti. Kolmion sisällä tapahtuva bilineaarinen interpolaatio on siksi aina mahdollista toteuttaa yksinkertaisella tavalla. Satunnaisia tason pisteitä ei aina ole helppo yhdistää nelikulmioiksi, jotka olisivat aina konvekseja. Bilineaarinen interpolaatiomenetelmässä nelikulmion vastakkaisten sivujen väliset suorat tulisi leikata toisensa nelikulmion sisällä, mikä ei aina onnistu ei-konveksissa nelikulmiossa. Neljän pisteen bilineaarinen interpolaatio totetutetaankin yleensä pisteille, jotka sijaitsevat suorakulmion kärjissä. Silloin näytepisteet on otettu hilamaisen verkon solmukohdissa.

Aiemmin bilineaarista interpolaatiota käytettiin kartografiassa, luonnontieteellisessä tutkimuksessa ja numeerisessa matematiikassa. Nykyään yleisimpiä sovelluskohteita ovat sekä digitaalisten valokuvien kuvankäsittely, tietokonepelien hahmojen käsittely ja elokuva-alan tehosteet. Nykyään nelikulmiossa totetutetut bilineaariset interpolaatiot ovat suoritetuista algoritmeista yleisimpiä, koska esimerkiksi monet kuvankäsittelyohjelmat hallitsevat bilineaarisen kuvankäsittelyn.

Lineaarinen interpolaatio janalla
---------------------------------

Alkuun voidaan esitellä lyhyesti yksiulotteisen lineaarisen interpolaation lausekkeet. Ensin muodostetaan interpolaatio lyhyellä välillä [0,1], jonka päätepisteissä funktio saa arvokseen {\displaystyle f(0)=f\_{1}} ja {\displaystyle f(1)=f\_{2}}. Silloin välin sisäpisteiden arvoksi saadaan 

{\displaystyle f(x)\approx a\_{0}+a\_{1}x=f\_{1}+(f\_{2}-f\_{1})x.} 
Kun interpolaatio viedään toiseen väliin {\displaystyle [x\_{1},x\_{2}]}, missä {\displaystyle f(x\_{1})=f\_{1}} ja {\displaystyle f(x\_{2})=f\_{2}}, saadaan sisäpisteen arvoksi 

{\displaystyle f(x)\approx a\_{0}+a\_{1}x=(f\_{1}x\_{2}-f\_{2}x\_{1})+{\frac {f\_{2}-f\_{1}}{x\_{2}-x\_{1}}}x.}

Bilineaarinen interpolaatio kolmiossa
-------------------------------------

Vaikka kolmella näytepisteellä toteutettu lineaarinen interpolaatio jää suosiossa neljän pisteen menetelmälle, on sillä vielä etulyöntiasema tietyissä tilanteissa. Jokainen pinta, esimerkiksi tasot, pallopinnat tai aaltoilevat pinnat, voidaan miehittää epäsäännöllisellä näytepopulaatiolla. Tällaisellä pistejoukolla voidaan aina muodostaa kolmioita, jotka peittävät pinnan tarkasti ja joilla voidaan suorittaa bilineaarinen interpolaatio kaikille tason pisteille.

Kolmiomenetelmässä valitaan kaksi sivua, joihin merkitään kumpaankin yksi sisäpiste. Sisäpisteiden arvot lasketaan lineaarisella interpolaatiolla, jossa hyödynnetään sivujensa päätepisteiden arvoja. Toisessa vaiheessa yhdistetään sivujen sisäpisteet suoralla, jonka pisteet lasketaan lineaarisella interpolaatiolla edellisessä vaiheessa laskettujen arvojen avulla. Kolmion sisäpisteen arvo selviää kolmella interpolaatiolla.

### Yksikkökolmiossa: bilineaarisesti

Edellinen laskentamenetelmä ei sovellu tilanteisiin, jossa on tilattu bilineaarinen interpolaatio tiettyyn kolmion sisäpisteeseen. Siinä on ongelmana määrittää sivujen pisteet, jotta niiden lineaarinen interpolaatio voidaan suorittaa. Edullinen lähestymistapa on suorittaa kolmiolle affiinimuunnos suorakulmaiselle tasakylkiselle kolmiolle, jonka sivut ovat origon vieressä sijaitsevan yksikköneliön [0, 1]×[0, 1] sivuilla. Tätä kolmiota kututaan tässä yksikkökolmioksi ja sen kärkien koordinaatit ovat (0, 0), (1, 0) ja (0, 1).

Yksikkökolmion sisäpisteen (*x*, *y*) interpoloitua arvoa merkitään tässä *f*(*x*, *y*). Merkitään kolmion kärkien tunnetut funktion arvot *f*(0, 0) = *f*00,*f*(0, 1) = *f*01 ja *f*(1, 0) = *f*10. Kohtisuorilla sivuilla suoritetut lineaarit interpoloinnit tuottavat arvot *f*(*a*, 0) = *f*a0 ja *f*(0, *b*) = *f*0b seuraavasti

{\displaystyle f\_{a0}\approx f\_{00}+(f\_{10}-f\_{00})a}
{\displaystyle f\_{0b}\approx f\_{00}+(f\_{01}-f\_{00})b}
Kun interpoloidaan haluttua pistettä *f*(*x*, *y*) = *f*xy, kannattaa interpolointiin valita kolmion hypotenuusan suuntainen suora, koska sen päätepisteet ovat yhtä etäällä origosta. Mainittu etäisyys pisteen (*x*, *y*) interpoloimiseksi on a = b = *x* + *y*. Edelliset tulokset kirjoitetaan silloin

{\displaystyle f\_{(x+y)0}\approx f\_{00}+(f\_{10}-f\_{00})(x+y)}
{\displaystyle f\_{0(x+y)}\approx f\_{00}+(f\_{01}-f\_{00})(x+y).}
Koska pisteen (*x*, *y*) etäisyys päätepisteestään hypotenuusan suuntaisella suoralla on verrannollinen koordinaatin *x* ja matkan *x* + *y* suhteeseen, voidaan haluttu interpolaatio kirjoittaa (pisteestä (0, *x* + *y*) lukien)

{\displaystyle f\_{xy}=f(x,y)\approx f\_{0(x+y)}+(f\_{(x+y)0}-f\_{0(x+y)}){\frac {x}{x+y}}.}
### Yksikkökolmiossa: tasopinnan sovitys

Vaikka pinnansovitus ei ole billineaarista interpolointia, voidaan asiaa sivuta myös tässä. Menetelmän tuottaman pinnan laatu selviää, kun sieventää edellisen laskelman viimeinen lauseke:

{\displaystyle f\_{xy}=f(x,y)\approx f\_{00}+(f\_{10}-f\_{00})x+(f\_{01}-f\_{00})y.}
Interpolaatiopisteet muodostavat (lausekkeen muodon mukaisesti) tason, jossa kolmion sisäpisteen arvo saadaan yhtälöstä

{\displaystyle f(x,y)\approx a\_{00}+a\_{10}x+a\_{01}y,} 
missä vakiot ovat

{\displaystyle a\_{00}=f\_{00}},
{\displaystyle a\_{10}=f\_{10}-f\_{00}} ja
{\displaystyle a\_{01}=f\_{01}-f\_{00}.}

Bilineaarinen interpolaatio nelikulmiossa
-----------------------------------------

Pisteen P (vihreä) interpolointi, kun tunnetaan arvot suorakulmion kulmissa (punainen). Pisteet R1 ja R2 (sininen) ovat ensimmäiset apupisteet, joidan arvo interpoloidaan ensimmäiseksi.Tässä esitettävä menetelmä perustuu suorakulmioon, koska sen avulla on helppo demostroida suorakulmaisessa koordinaatistossa menetelmän perusperiaatteet. Sillä ratkeaa myös suorakulmioista affiinikuvauksella muodostettavien muiden nelikulmioiden bilineaariset interpolaatiot. Affiinikuvauksia ei käsitellä tässä.

### Yksikköneliössä: bilineaarisesti

Interpoloidan bilineaarisesti origosta alkavan yksikköneliön, eli alueen [0, 1]×[0, 1], sisäpisteen (*x*, *y*) arvo *f*(*x*, *y*). Merkitään neliön kärjissä sijaitsevat funktion arvot *f*(0, 0) = *f*00,*f*(0, 1) = *f*01, *f*(1, 0) = *f*10 ja *f*(1, 1) = *f*11. Vaakasuorilla sivuilla suoritetut lineaarit interpoloinnit tuottavat arvot *f*(*x*, 0) = *f*x0 ja *f*(*x*, 1) = *f*x1 seuraavasti

{\displaystyle f\_{x0}\approx f\_{00}+(f\_{10}-f\_{00})x,}
{\displaystyle f\_{x1}\approx f\_{01}+(f\_{11}-f\_{01})x.}
Kun interpoloidaan pystysuoraan *f*(*x*, *y*) = *f*xy, saadaan

{\displaystyle f\_{xy}=f(x,y)\approx f\_{x0}+(f\_{x1}-f\_{x0})y.}
### Suorakulmiossa: bilineaarisesti

Valitaan suorakulmiosta yksi sivu ja sivulta piste. Lasketaan tämän pisteen arvo lineaarisella interpolaatiolla sivunsa päätepisteiden avulla. Piirretään sivun pisteestä normaali suorakulmion vastakkaiselle sivulle. Normaalin leikkauspiste vastakkaisen sivun kanssa on seuraavan interpolaation kohde. Se suoritetaan vastakkaista sivua pitkin. Kun molempien pisteiden interpoloidut arvot tunnetaan, voidaan pisteiden väliset suorakulmion sisäpisteet interpoloida lineaarisesti.

Interpoloidaan bilineaarisesti pisteessä (*x*, *y*) olevaa arvoa suorakulmion kärjissä (viereinen kuva) *Q*11 = (*x*1, *y*1), *Q*12 = (*x*1, *y*2), *Q*21 = (*x*2, *y*1), and *Q*22 = (*x*2, *y*2) olevien arvojen *f*(x1, y1) = *f*11, *f*(x1, y2) = *f*12, *f*(x2, y1) = *f*21 ja *f*(x2, y2) = *f*22 avulla (viereinen kuva).

Aluksi interpoloidaan lineaarisesti *x*-akselin suuntaan. Kohdassa *x*, ylä- ja alasivulla, sijaitsevat pisteet *R1 = (x, y1) ja* R2 = (x, y2). Näihin pisteisiin interpoloidaan arvot *f*(x,  y1) = *f*x1 ja *f*(x,  y2) = *f*x2

{\displaystyle {\begin{aligned}f\_{x1}=f(x,y\_{1})&\approx {\frac {x\_{2}-x}{x\_{2}-x\_{1}}}f\_{11}+{\frac {x-x\_{1}}{x\_{2}-x\_{1}}}f\_{21}\\f\_{x2}=f(x,y\_{2})&\approx {\frac {x\_{2}-x}{x\_{2}-x\_{1}}}f\_{12}+{\frac {x-x\_{1}}{x\_{2}-x\_{1}}}f\_{22}\end{aligned}}}
Viimeisessä vaiheessa interpoloidaan lineaarisesti pisteen *P* = (*x*, *y*) arvo *f*(x, y)

{\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})\\&\approx {\frac {y\_{2}-y}{y\_{2}-y\_{1}}}\left({\frac {x\_{2}-x}{x\_{2}-x\_{1}}}f\_{11}+{\frac {x-x\_{1}}{x\_{2}-x\_{1}}}f\_{21}\right)+{\frac {y-y\_{1}}{y\_{2}-y\_{1}}}\left({\frac {x\_{2}-x}{x\_{2}-x\_{1}}}f\_{12}+{\frac {x-x\_{1}}{x\_{2}-x\_{1}}}f\_{22}\right)\\&={\frac {1}{(x\_{2}-x\_{1})(y\_{2}-y\_{1})}}\left(f\_{11}(x\_{2}-x)(y\_{2}-y)+f\_{21}(x-x\_{1})(y\_{2}-y)+f\_{12}(x\_{2}-x)(y-y\_{1})+f\_{22}(x-x\_{1})(y-y\_{1})\right)\end{aligned}}}
### Yksikköneliössä: pinnansovitus

Nelikulmaisessa bilineaarisessa interpoloinnissa syntyy pinta, jonka laatu selviää sieventämällä edellisiä lausekkeita. Nisstä saadaan

{\displaystyle f\_{xy}=f(x,y)\approx f\_{00}+(f\_{10}-f\_{00})x+(f\_{01}-f\_{00})y+(f\_{11}-f\_{01}-f\_{10}+f\_{00})xy.}
Tämä yhtälö voidaan kirjoittaa kompaktiin muotoon sijoittamalla muuttujien eteen vain kertoimet

{\displaystyle f(x,y)\approx a\_{00}+a\_{10}x+a\_{01}y+a\_{11}xy,} 
missä kertoimet ovat

{\displaystyle a\_{00}=f\_{00}} ja
{\displaystyle a\_{10}=f\_{10}-f\_{00}} ja
{\displaystyle a\_{01}=f\_{01}-f\_{00}} ja
{\displaystyle a\_{11}=f\_{11}-f\_{01}-f\_{10}+f\_{00}.}
Muodostunutta pintaa kutsutaan hyperboliseksi paraboloidiksi, mikä se yleisesti onkin. Joskus funktion arvot ovat sellaiset, että pinta onkin taso.

### Suorakulmiossa: pinnansovitus

Vaikka pinnansovitus ei ole bilineaarinen interpolaatio, esitetään vaihtoehtoisena ratkaisutapana samassa yhteydessä. Kun valitaan tasolta mitkä tahansa neljä kulmapistettä {\displaystyle \scriptstyle (x\_{1},y\_{1}),(x\_{2},y\_{1}),(x\_{1},y\_{2}){\text{ ja }}(x\_{2},y\_{2}),} voidaan niiden kautta sovittaa kulkemaan tasopinta 

{\displaystyle f(x,y)=ax+by+cxy+d.}
Tasopinnan lausekkeen kertoimet voidaan määrittää ratkaisemalla yhtälöryhmä, jossa lausekkeeseen on sijoitettu koordinaatit ja jossa funktion arvoiksi merkitään kulmapisteiden funktion arvot. Yhtälöryhmä on tällöin

{\displaystyle \left\{{\begin{matrix}f(x\_{1},y\_{1})=ax\_{1}+by\_{1}+cx\_{1}y\_{1}+d\\f(x\_{2},y\_{1})=ax\_{2}+by\_{1}+cx\_{2}y\_{1}+d\\f(x\_{1},y\_{2})=ax\_{1}+by\_{2}+cx\_{1}y\_{2}+d\\f(x\_{2},y\_{2})=ax\_{2}+by\_{2}+cx\_{2}y\_{2}+d\end{matrix}}\right.}

Sovellus: Digitaalisen valokuvan käsittely
------------------------------------------

Digitaalista valokuvaa pienennettäessä voidaan neliön vierekkäiset neljä kuvapikseliä kutistaa yhdeksi pikseliksi bilineaarisella interpolaatiolla. Pikselien numeeriset arvot interpoloidaan yhdeksi numeeriseksi arvoksi, joka sijoitetaan kopiokuvaan vastaavalle paikalle pienennöksessä. Valokuvia suurennettaessa osa pikseleistä kopioidaan alkuperäisestä valokuvasta ja osa pikseleistä luodaan tyhjinä. Tyhjät pikselit täytetään interpoloimalla viereisiä pikseleitä bilineaarisesti. Samalla voidaan interpoloida kopioituja pikseleitä uudelleen sahalaitaisuuden välttämiseksi.

Katso myös
----------

* Trilineaarinen interpolaatio

Lähteet
-------

1. 1 2 3 4 5  Jacobs, David W.: Interpolation, Marylandin yliopisto, USA
2. ↑  Stover, Christopher: Interpolant (Math World – A Wolfram Web Resource) Wolfram Research.  (englanniksi)
3. ↑  Weisstein, Eric W.: Interpolation (Math World – A Wolfram Web Resource) Wolfram Research.  (englanniksi)
4. 1 2 3 4  Kidner, David, Dorey, Mark & Smith, Derek: What's the point? Interpolation and extrapolation with a regular grid DEM (Arkistoitu – Internet Archive), Glamorganin yliopisto, Wales, Englanti, 1999 (englanniksi)
5. ↑  Hemmo-Iivonen, Katariina et al.: *Pyramidi 12 – Numeerisia ja algebrallisia menetelmiä*. (lukion pitkä matematiikka). Helsinki: Tammi. ISBN 978-951-26-5406-2.
6. ↑  VisionSystems: "Understanding image-interpolation techniques"[vanhentunut linkki], 2007
7. ↑  Cambridge in Color: Digital Image Interpolation