# Interpolación bilineal

La interpolación bilineal es una extensión de la interpolación lineal para interpolar funciones de dos variables (por ejemplo, $x$ e $y$) en una malla regular de dos dimensiones.
La idea principal es realizar una interpolación lineal en una dirección, y después en la otra. Aunque cada uno de estos pasos es lineal, la interpolación en su conjunto no es lineal sino cuadrática.

## Algoritmo

Supóngase que se quiere encontrar el valor para la función f desconocida en el punto P = (x, y). Conocemos el valor de f en los cuatro puntos Q$_{11}$ = (x$_1$, y$_1$), Q$_{12}$ = (x$_1$, y$_2$), Q$_{21}$ = (x$_2$, y$_1$) y Q$_{22}$ = (x$_2$, y$_2$).
Primero se hace una interpolación lineal en la dirección x. Esto genera:
    $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})$
donde $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})$
donde $R_{2}=(x,y_{2}).$
Después se hace una interpolación en la dirección y:
    $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}).$
Esto proporciona una estimación de f(x, y).
    ${\begin{aligned}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})\\=&\,{\frac {1}{(x_{2}-x_{1})(y_{2}-y_{1})}}{\Bigf(Q_{11})(x_{2}-x)(y_{2}-y)\,+\\&\,\qquad \qquad \qquad \qquad \;\;f(Q_{21})(x-x_{1})(y_{2}-y)\,+\\&\,\qquad \qquad \qquad \qquad \;\;f(Q_{12})(x_{2}-x)(y-y_{1})\,+\\&\,\qquad \qquad \qquad \qquad \;\;f(Q_{22})(x-x_{1})(y-y_{1})\quad {\Big )}.\end{aligned}}$
Hay que tener en cuenta que se obtienen los mismos resultados si la interpolación se hace primero en la dirección y y después en la dirección x.

### Cuadrado unidad

Si se escoge un sistema de coordenadas en los cuales los cuatro puntos donde f es conocido sean (0, 0), (0, 1), (1, 0) y (1, 1), entonces la fórmula de interpolación se simplifica notablemente a:
   $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.$
O equivalentemente, en forma matricial:
   $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}}.$

### No-linealidad

Contrariamente a lo que el nombre pudiera sugerir, la interpolación bilineal no es lineal, ya que de hecho es el producto de dos funciones lineales (y, por tanto, no lineal):
   $(a_{1}x+a_{2})(a_{3}y+a_{4}),\,$
Alternativamente, la interpolación puede escribirse como:
   $b_{1}+b_{2}x+b_{3}y+b_{4}xy\,$
donde
    $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).\,$
En ambos casos, el número de constantes (cuatro) se corresponde con el número de datos en los que se conoce f. La interpolación lineal a lo largo de líneas paralelas al eje $x$ o al eje $y$, equivalentmente si $x$ o $y$ se toma como constante. A lo largo de cualquier otra línea recta, la interpolación resulta una función cuadrática.
Debe notarse, sin embargo, que aunque la interpolación no es lineal en la posición (x e y), es lineal en amplitud, como puede verse a partir de las ecuaciones anteriores: todos los coeficientes bj, j=1..4 son proporcionales al valor de la función f(,).
El resultado de una interpolación bilineal es independiente del orden (aquí orden significa qué eje se interpola primero y cual el segundo. Si se realizara primero una interpolación lineal en sobre el eje y y luego sobre el eje x, la aproximación resultante es la misma.
Existe una extensión obvia de la interpolación lineal a tres dimensiones denominada interpolación trilineal.

## Aplicación en el procesado de imágenes

En la visión artificial y en el procesamiento digital de imágenes, la interpolación bilineal es una técnica básica de remuestreo.