Bilineární interpolace
Bilineární interpolace je metoda interpolace pro funkce dvou proměnných na pravidelné mřížce (v) . Vypočítá hodnotu funkce v kterémkoli bodě od jejích dvou nejbližších sousedů v každém směru. Jedná se o metodu široce používanou v digitálním zobrazování pro změnu velikosti obrazu , která poskytuje lepší výsledky než interpolace nejbližšího souseda při zachování přiměřené složitosti.
Obecná zásada
Na rozdíl od toho, co naznačuje její název, interpolační funkce není lineární forma, ale kvadratická, kterou lze vyjádřit ve tvaru:
F(X,y)=naX+by+vs.Xy+d.{\ displaystyle f (x, y) = sekera + by + cxy + d.}Hodnota f ( x , y ) je interpolovaná hodnota v bodě souřadnic ( x , y ) a a , b , c , d jsou konstanty určené ze čtyř sousedů ( x 1 , y 1 ), ( x 1 , y 2 ), ( x 2 , y 1 ), ( x 2 , y 2 ) bodu ( x , y ), jehož hodnotu hledáme. Známe-li hodnoty v těchto bodech, můžeme napsat systém 4 rovnic se 4 neznámými :
{F(X1,y1)=naX1+by1+vs.X1y1+dF(X2,y1)=naX2+by1+vs.X2y1+dF(X1,y2)=naX1+by2+vs.X1y2+dF(X2,y2)=naX2+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}} \ vpravo.}Bilineární interpolace může být interpretována jako posloupnost dvou lineárních interpolací , jedné v každém směru.
Systémové řešení
Změna proměnné značně zjednodušuje systém, který má být vyřešen. Zvažte následující nové proměnné:
dX=X-X1,dy=y-y1,{\ displaystyle dx = x-x_ {1}, \ quad dy = y-y_ {1},}kde ( x 1 , y 1 ) jsou souřadnice levého dolního rohu. Poté se zapíše nová bilineární interpolační funkce:
F(dX,dy)=nadX+bdy+vs.dXdy+d.{\ displaystyle f (dx, dy) = a \, dx + b \, dy + c \, dx \, dy + d.}Zavedením notací a se matice, která se má převrátit, stává:
ΔX=X2-X1{\ displaystyle \ Delta x = x_ {2} -x_ {1}}Δy=y2-y1{\ displaystyle \ Delta y = y_ {2} -y_ {1}}
NA=(0001ΔX0010Δy01ΔXΔyΔXΔy1){\ displaystyle A = {\ begin {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}}} .
Zbývá zavést následující notace:
Δ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}).}
Řešení bilineární interpolační funkce problému pak přichází přímo:
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}).}
Reference
-
(in) Rafael C. Gonzalez a Richard E. Woods, Digital Image Processing , Prentice Hall,2008„Vzorkování a kvantizace obrazu“, s. 66.
Související články
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">