Bilinaarinen interpolaatio
Bilineaarinen interpolaatio on menetelmä interpoloimalla funktioiden kaksi muuttujaa on säännöllisen ruudukon (in) . Se laskee funktion arvon missä tahansa pisteessä kahden lähimmän naapurinsa perusteella kumpaankin suuntaan. Se on menetelmä, jota käytetään laajasti digitaalisen kuvantamisen ja kuvan koon muuttaminen , mikä antaa paremman tuloksen kuin naapuriin interpolointi pysyessä kohtuullisen monimutkaisuutta.
Yleinen käytäntö
Toisin kuin nimestään käy ilmi, interpolointifunktio ei ole lineaarinen vaan neliöllinen muoto, joka voidaan laittaa muotoon:
f(x,y)=klox+by+vs.xy+d.{\ displaystyle f (x, y) = ax + by + cxy + d.}Arvo f ( x , y ) on interpoloitu arvo koordinaattien ( x , y ) pisteessä , ja a , b , c , d ovat vakioita, jotka määritetään neljältä naapurilta ( x 1 , y 1 ), ( x 1 , y 2 ), ( x 2 , y 1 ), ( x 2 , y 2 ) pisteestä ( x , y ), jonka arvoa etsimme. Kun tiedämme näiden pisteiden arvot, voimme kirjoittaa 4 yhtälöjärjestelmän 4 tuntemattomalla :
{f(x1,y1)=klox1+by1+vs.x1y1+df(x2,y1)=klox2+by1+vs.x2y1+df(x1,y2)=klox1+by2+vs.x1y2+df(x2,y2)=klox2+by2+vs.x2y2+d{\ 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.}Bilinaarinen interpolointi voidaan tulkita kahden lineaarisen interpolaation peräkkäisenä , yksi kumpaankin suuntaan.
Järjestelmäratkaisu
Muuttujan muutos yksinkertaistaa huomattavasti ratkaistavaa järjestelmää. Harkitse seuraavia uusia muuttujia:
dx=x-x1,dy=y-y1,{\ displaystyle dx = x-x_ {1}, \ quad dy = y-y_ {1},}missä ( x 1 , y 1 ) ovat vasemman alakulman koordinaatit. Uusi bilinaarinen interpolaatiofunktio kirjoitetaan sitten:
f(dx,dy)=klodx+bdy+vs.dxdy+d.{\ displaystyle f (dx, dy) = a \, dx + b \, dy + c \, dx \, dy + d.}Esittämällä merkinnät ja käännetystä matriisista tulee:
Δx=x2-x1{\ displaystyle \ Delta x = x_ {2} -x_ {1}}Δy=y2-y1{\ displaystyle \ Delta y = y_ {2} -y_ {1}}
AT=(0001Δx0010Δy01ΔxΔyΔxΔy1){\ displaystyle A = {\ aloita {pmatrix} 0 & 0 & 0 & 1 \\\ Delta x & 0 & 0 & 1 \\ 0 & \ Delta y & 0 & 1 \\\ Delta x & \ Delta y & \ Delta x \ Delta y & 1 \\\ end {pmatrix}}} .
Seuraavien merkintöjen käyttöönotto on jäljellä:
Δfx=f(x2,y1)-f(x1,y1),Δfy=f(x1,y2)-f(x1,y1),{\ displaystyle \ Delta f_ {x} = f (x_ {2}, y_ {1}) - f (x_ {1}, y_ {1}), \ quad \ Delta f_ {y} = f (x_ {1 }, y_ {2}) - f (x_ {1}, y_ {1}),}
Δfxy=f(x1,y1)+f(x2,y2)-f(x2,y1)-f(x1,y2).{\ displaystyle \ Delta f_ {xy} = f (x_ {1}, y_ {1}) + f (x_ {2}, y_ {2}) - f (x_ {2}, y_ {1}) - f (x_ {1}, y_ {2}).}
Tällöin ongelman bilineaarisen interpolointitoiminnon ratkaisu tulee suoraan:
f(x,y)=ΔfxdxΔx+ΔfydyΔy+ΔfxydxΔxdyΔy+f(x1,y1).{\ displaystyle f (x, y) = \ Delta f_ {x} {\ frac {dx} {\ Delta x}} + \ Delta f_ {y} {\ frac {dy} {\ Delta y}} + \ Delta f_ {xy} {\ frac {dx} {\ Delta x}} {\ frac {dy} {\ Delta y}} + f (x_ {1}, y_ {1}).}
Viitteet
-
(in) Rafael C. Gonzalez ja Richard E. Woods, Digital Image Processing , Prentice Hall,2008, ”Kuvanäytteenotto ja kvantisointi”, s. 66.
Aiheeseen liittyvät artikkelit
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">