Interpolación bilineal

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Los cuatro puntos rojos muestran los datos conocidos y el punto verde representa el punto que queremos interpolar.
Ejemplo de interpolación bilineal sobre el cuadrado unidad con valores de z la magnitud iguales 0, 1, 1 y 1/2. El color indica el valor para los valores interpolados.

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[editar]

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 Q11 = (x1y1), Q12 = (x1y2), Q21 = (x2y1), and Q22 = (x2y2).

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{align}
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)} \Big(   f(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{align}

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[editar]

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, mediante 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-linealiadad[editar]

Contrariamente a lo que el numbre podría 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), \,

Alternativemente, la interpolación puede escribirse como

 b_1 + b_2 x + b_3 y + b_4 x y \,

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 esta visualización geométrica, el valor del punto negro es la suma del valor en cada punto coloreado multiplicado por el área del rectángulo del mismo color, dividida por el área total de los cuatro rectángulos.

In 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 incluso 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[editar]

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.

Véase también[editar]

Enlaces externos[editar]