La interpolación bilineal se realiza mediante interpolación lineal primero en una dirección y luego nuevamente en otra dirección. Aunque cada paso es lineal en los valores muestreados y en la posición, la interpolación en su conjunto no es lineal sino cuadrática en la ubicación de la muestra.
Supongamos que queremos hallar el valor de la función desconocida f en el punto ( x , y ). Se supone que 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 ).
Interpolación lineal repetida
Primero hacemos una interpolación lineal en la dirección x . Esto produce
Procedemos interpolando en la dirección y para obtener la estimación deseada:
Nótese que llegaremos al mismo resultado si la interpolación se realiza primero a lo largo de la dirección y y luego a lo largo de la dirección x . [1]
Ajuste polinomial
Una forma alternativa es escribir la solución del problema de interpolación como un polinomio multilineal.
donde los coeficientes se encuentran resolviendo el sistema lineal
dando el resultado
Media ponderada
La solución también se puede escribir como una media ponderada de f ( Q ):
donde los pesos suman 1 y satisfacen el sistema lineal transpuesto
dando el resultado
Lo cual se simplifica a
De acuerdo con el resultado obtenido por interpolación lineal repetida, el conjunto de pesos también puede interpretarse como un conjunto de coordenadas baricéntricas generalizadas para un rectángulo.
Forma matricial alternativa
Combinando lo anterior, tenemos
En el cuadrado unitario
Si elegimos un sistema de coordenadas en el que los cuatro puntos donde se conoce f son (0, 0), (0, 1), (1, 0) y (1, 1), entonces la fórmula de interpolación se simplifica a
o equivalentemente, en operaciones matriciales:
Aquí también reconocemos los pesos:
Alternativamente, el interpolante en el cuadrado unitario se puede escribir como
dónde
En ambos casos, el número de constantes (cuatro) corresponde al número de puntos de datos donde se da f .
Propiedades
Como sugiere el nombre, el interpolante bilineal no es lineal; pero es lineal (es decir, afín) a lo largo de líneas paralelas a la dirección x o y , equivalentemente si x o y se mantienen constantes. A lo largo de cualquier otra línea recta, el interpolante es cuadrático . Aunque la interpolación no es lineal en la posición ( x e y ), en un punto fijo es lineal en los valores de interpolación, como se puede ver en las ecuaciones (matriciales) anteriores.
El resultado de la interpolación bilineal es independiente de qué eje se interpola primero y cuál segundo. Si hubiéramos realizado primero la interpolación lineal en la dirección y y luego en la dirección x , la aproximación resultante sería la misma.
En general, el interpolante asumirá cualquier valor (en la envoltura convexa de los valores de los vértices) en un número infinito de puntos (formando ramas de hipérbolas [2] ), por lo que la interpolación no es invertible.
Sin embargo, cuando la interpolación bilineal se aplica a dos funciones simultáneamente, como cuando se interpola un campo vectorial , entonces la interpolación es invertible (bajo ciertas condiciones). En particular, esta inversa se puede utilizar para encontrar las "coordenadas cuadradas unitarias" de un punto dentro de cualquier cuadrilátero convexo (considerando las coordenadas del cuadrilátero como un campo vectorial que se interpola bilinealmente en el cuadrado unitario). Usando este procedimiento, la interpolación bilineal se puede extender a cualquier cuadrilátero convexo, aunque el cálculo es significativamente más complicado si no es un paralelogramo. [3] El mapa resultante entre cuadriláteros se conoce como transformación bilineal , deformación bilineal o distorsión bilineal .
Alternativamente, se puede utilizar una función proyectiva entre un cuadrilátero y el cuadrado unitario, pero el interpolante resultante no será bilineal.
En el caso especial en que el cuadrilátero es un paralelogramo , existe una aplicación lineal al cuadrado unitario y la generalización se sigue fácilmente.
La extensión obvia de la interpolación bilineal a tres dimensiones se llama interpolación trilineal .
Aplicación en el procesamiento de imágenes
En la visión artificial y el procesamiento de imágenes , se utiliza la interpolación bilineal para remuestrear imágenes y texturas. Se utiliza un algoritmo para asignar la ubicación de un píxel de la pantalla a un punto correspondiente en el mapa de texturas . Se calcula un promedio ponderado de los atributos (color, transparencia, etc.) de los cuatro texels circundantes y se aplica al píxel de la pantalla. Este proceso se repite para cada píxel que forma el objeto que se está texturizando. [4]
Cuando es necesario ampliar una imagen, cada píxel de la imagen original debe moverse en una dirección determinada en función de la constante de escala. Sin embargo, cuando se amplía una imagen mediante un factor de escala no integral, hay píxeles (es decir, agujeros ) a los que no se les asignan valores de píxel adecuados. En este caso, a esos agujeros se les deben asignar valores RGB o de escala de grises adecuados para que la imagen de salida no tenga píxeles sin valor.
La interpolación bilineal se puede utilizar cuando no es posible realizar una transformación perfecta de la imagen con coincidencia de píxeles, de modo que se puedan calcular y asignar valores de intensidad adecuados a los píxeles. A diferencia de otras técnicas de interpolación, como la interpolación del vecino más próximo y la interpolación bicúbica , la interpolación bilineal utiliza valores de solo los 4 píxeles más cercanos, ubicados en direcciones diagonales a partir de un píxel determinado, para encontrar los valores de intensidad de color adecuados para ese píxel.
La interpolación bilineal considera el vecindario 2 × 2 más cercano de valores de píxeles conocidos que rodean la ubicación calculada del píxel desconocido. Luego, toma un promedio ponderado de estos 4 píxeles para llegar a su valor interpolado final. [5] [6]
Ejemplo
Como se ve en el ejemplo de la derecha, el valor de intensidad en el píxel calculado en la fila 20.2, columna 14.5 se puede calcular interpolando primero linealmente entre los valores en las columnas 14 y 15 en cada fila 20 y 21, dando
y luego interpolando linealmente entre estos valores, obtenemos
Este algoritmo reduce parte de la distorsión visual causada por el cambio de tamaño de una imagen a un factor de zoom no integral, a diferencia de la interpolación del vecino más cercano, que hará que algunos píxeles parezcan más grandes que otros en la imagen redimensionada.
Una simplificación de términos
Este ejemplo es de datos tabularizados de Presión (columnas) vs. Temperatura (filas) como una búsqueda en relación con alguna Variable
El siguiente cálculo estándar por partes tiene 18 operaciones requeridas.
Todo esto se puede simplificar desde las 18 operaciones individuales iniciales a 16 operaciones individuales como tales;
Lo anterior tiene dos operaciones repetidas.
A estas dos repeticiones se les pueden asignar variables temporales mientras se calcula una única interpolación, lo que reducirá el número de cálculos a 14 operaciones, que es el número mínimo de pasos necesarios para producir la interpolación deseada. Al realizar esta interpolación en 14 operaciones en lugar de 18, resulta un 22 % más eficiente.
La simplificación de términos es una buena práctica para la aplicación de la metodología matemática a aplicaciones de ingeniería y puede reducir los requisitos computacionales y energéticos de un proceso.
^ Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (1992). Recetas numéricas en C: el arte de la computación científica (2.ª ed.). Nueva York, NY, EE. UU.: Cambridge University Press. pp. 123-128. ISBN 0-521-43108-5.
^ Monasse, Pascal (10 de agosto de 2019). "Extracción de las líneas de nivel de una imagen bilineal". Procesamiento de imágenes en línea . 9 : 205–219. doi : 10.5201/ipol.2019.269 . ISSN 2105-1232.
^ Quilez, Inigo (2010). "Interpolación bilineal inversa". iquilezles.org . Archivado desde el original el 2010-08-13 . Consultado el 2024-02-17 .
^ Definición de interpolación bilineal (artículo popular en www.pcmag.com.
^ Khosravi, MR (19 de marzo de 2021). "BL-ALM: un filtro de reconstrucción guiado por bordes escalable y ciego para el monitoreo ambiental inteligente a través de redes ecológicas IoMT-UAV". Transacciones IEEE sobre comunicaciones y redes ecológicas . 5 (2): 727–736. doi :10.1109/TGCN.2021.3067555. S2CID 233669511.
^ "Tutorial web: Interpolación de imágenes digitales".