Trilineaarinen interpolaatio

Trilineaarinen interpolaatio on matematiikassa approksimaatiomenetelmä, joka on lineaarisen- ja bilineaarisen interpolaatiomenetelmien kolmiulotteinen laajennus. Siinä rajatussa tilavuuden sisällä olevia pisteiden arvoja lasketaan lähimpien pisteiden arvojen avulla sovittamalla kolmessa suunnassa lineaarisia polynomeja eli interpolaatiosuoria. Koska lineaarisia sovituksia on kolme, kutsutaan menetelmää trilineaariseksi.[1][2]

Tilavuuden sisällä satunnaisesti sijaitsevat pisteet voidaan aina yhdistää toisiinsa tetraedreiksi, jotka sivuavat toisensa tiiviisti. Tetraedrin sisällä tapahtuva trilineaarinen interpolaatio on siksi aina mahdollista toteuttaa yksinkertaisella tavalla. Satunnaisia tilavuudessa olevia pisteitä ei aina ole helppo yhdistää särmiöiksi, jotka olisivat aina konvekseja. Trilineaarisessä interpolaatiomenetelmässä särmiön vastakkaisten tahkojen väliset suorat tulisi leikata toisensa särmiön sisällä, mikä ei aina onnistu ei-konveksissa särmiössä. Särmiöiden trilineaarinen interpolaatio totetutetaankin yleensä pisteille, jotka sijaitsevat suorakulmaisen särmiön kärjissä. Silloin näytepisteet on otettu hilamaisen verkon solmukohdissa.[2]

Trilineaarinen interpolaatio: yksikkökuutio

Helppo tapa esitellä nopea laskualgoritmi trilineaariseta interpolaatiosta on käyttää origoon sijoitettua 1-särmäistä kuutiota. Kuution kärkien koordinaatit ovat silloin (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0) ja (1,1,1). Kärjissä sijaitsevat funktion arvot f(x,y,z) = fxyz edellä mainituilla koordinaateilla. Kuution sisäpisteen interpoloitu arvo on tällöin [3]

f ( x , y , z ) = f 000 ( 1 x ) ( 1 y ) ( 1 z ) + f 100 x ( 1 y ) ( 1 z ) + f 010 ( 1 x ) y ( 1 z ) + f 001 ( 1 x ) ( 1 y ) z + f 101 x ( 1 y ) z + f 011 ( 1 x ) y z + f 110 x y ( 1 z ) + f 111 x y z . {\displaystyle {\begin{aligned}f(x,y,z)=&f_{000}(1-x)(1-y)(1-z)+f_{100}x(1-y)(1-z)\\&+f_{010}(1-x)y(1-z)+f_{001}(1-x)(1-y)z+f_{101}x(1-y)z\\&+f_{011}(1-x)yz+f_{110}xy(1-z)+f_{111}xyz.\end{aligned}}}

Trilineaarinen interpolaatio: vapaavalintaiset koordinaatit

Merkitään suorakulmaisen särmiön kärkiä koordinaateilla ( x 1 , y 1 , z 1 ) , ( x 1 , y 1 , z 2 ) , ( x 1 , y 2 , z 1 ) , ( x 1 , y 2 , z 2 ) , ( x 2 , y 1 , z 1 ) , ( x 2 , y 1 , z 2 ) , ( x 2 , y 2 , z 1 )  ja  ( x 2 , y 2 , z 2 ) {\displaystyle (x_{1},y_{1},z_{1}),(x_{1},y_{1},z_{2}),(x_{1},y_{2},z_{1}),(x_{1},y_{2},z_{2}),(x_{2},y_{1},z_{1}),(x_{2},y_{1},z_{2}),(x_{2},y_{2},z_{1}){\text{ ja }}(x_{2},y_{2},z_{2})} ja kärjissä olevia funktion arvoja f ( x i , y j , z k ) {\displaystyle f(x_{i},y_{j},z_{k})} ( i , j , k { 1 , 2 } ) . {\displaystyle (i,j,k\in \{1,2\}).} Silloin särmiön sisäpisteen ( x , y , z ) {\displaystyle (x,y,z)} trilineaarinen interpolaatio f ( x , y , z ) {\displaystyle f(x,y,z)} on [4]

f ( x , y , z ) ( x 2 x ) ( y 2 y ) ( z 2 z ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 1 , y 1 , z 1 ) + ( x 2 x ) ( y 2 y ) ( z z 1 ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 1 , y 1 , z 2 ) + ( x 2 x ) ( y y 1 ) ( z 2 z ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 1 , y 2 , z 1 ) + ( x 2 x ) ( y y 1 ) ( z z 1 ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 1 , y 2 , z 2 ) + ( x x 1 ) ( y 2 y ) ( z 2 z ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 2 , y 1 , z 1 ) + ( x x 1 ) ( y 2 y ) ( z z 1 ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 2 , y 1 , z 2 ) + ( x x 1 ) ( y y 1 ) ( z 2 z ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 2 , y 2 , z 1 ) + ( x x 1 ) ( y y 1 ) ( z z 1 ) ( x 2 x 1 ) ( y 2 y 1 ) ( z 2 z 1 ) f ( x 2 , y 2 , z 2 ) . {\displaystyle {\begin{aligned}f(x,y,z)&\approx {\frac {(x_{2}-x)(y_{2}-y)(z_{2}-z)}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{1},y_{1},z_{1})\\&+{\frac {(x_{2}-x)(y_{2}-y)(z-z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{1},y_{1},z_{2})\\&+{\frac {(x_{2}-x)(y-y_{1})(z_{2}-z)}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{1},y_{2},z_{1})\\&+{\frac {(x_{2}-x)(y-y_{1})(z-z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{1},y_{2},z_{2})\\&+{\frac {(x-x_{1})(y_{2}-y)(z_{2}-z)}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{2},y_{1},z_{1})\\&+{\frac {(x-x_{1})(y_{2}-y)(z-z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{2},y_{1},z_{2})\\&+{\frac {(x-x_{1})(y-y_{1})(z_{2}-z)}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{2},y_{2},z_{1})\\&+{\frac {(x-x_{1})(y-y_{1})(z-z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}f(x_{2},y_{2},z_{2}).\end{aligned}}}

Katso myös

  • Bilineaarinen interpolaatio

Lähteet

Viitteet

  1. Jacobs, David W.: Interpolation, Marylandin yliopisto, USA
  2. a b Scratchapixel: Trilinear Interpolation
  3. Bourke, Paul: Interpolation methods, 1999
  4. Wagner, Rick: Multi-Linear Interpolation, Beach Cities Robotics
Tämä matematiikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.