En matemáticas , la interpolación bilineal es una extensión de la interpolación lineal para la interpolación de funciones de dos variables (por ejemplo, x y Y ) en una rejilla 2D rectilínea .
Los cuatro puntos rojos muestran los puntos de datos y el punto verde es el punto en el que queremos interpolar.
Ejemplo de interpolación bilineal en el cuadrado unitario con los valores
z 0, 1, 1 y 0.5 como se indica. Valores interpolados intermedios representados por color.
La interpolación bilineal se realiza utilizando la interpolación lineal primero en una dirección y luego nuevamente en la 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.
La interpolación bilineal es una de las técnicas básicas de remuestreo en la visión por computadora y el procesamiento de imágenes , donde también se le llama filtrado bilineal o mapeo de textura bilineal .
Suponga que queremos encontrar 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 ).
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:
Tenga en cuenta que vamos a llegar al mismo resultado si la interpolación se realiza en primer lugar a lo largo del y dirección y luego a lo largo del x dirección. [1]
Algoritmo alternativo
Una forma alternativa de escribir la solución al problema de interpolación es
donde los coeficientes se encuentran resolviendo el sistema lineal
dando el resultado
Si se prefiere una solución en términos de f ( Q ), entonces podemos escribir
donde los coeficientes están normalizados [2] y se pueden encontrar calculando
Cuadrado unitario
Si elegimos un sistema de coordenadas en el que los cuatro puntos donde se conoce f son (0, 0), (1, 0), (0, 1) y (1, 1), entonces la fórmula de interpolación se simplifica a
o equivalentemente, en operaciones matriciales:
Una visualización geométrica de interpolación bilineal. El producto del valor en el punto deseado (negro) y el área completa es igual a la suma de los productos del valor en cada esquina y el área parcial diagonalmente opuesta a la esquina (colores correspondientes).
No lineal
Como sugiere el nombre, el interpolante bilineal no es lineal; pero es el producto de dos funciones lineales . Por ejemplo, la interpolación bilineal derivada anteriormente es un producto de los valores de y .
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 . El interpolador es lineal a lo largo de líneas paralelas a cualquiera de los x o la y dirección, de manera equivalente si x o y es constante conjunto. A lo largo de cualquier otra línea recta, el interpolante es cuadrático . Sin embargo, incluso si la interpolación es no lineal en la posición ( x y Y ), que es lineal en la amplitud, como es evidente a partir de las ecuaciones anteriores: todos los coeficientes de un j , j = 1-4, son proporcionales a la valor de la función f .
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 el y dirección y luego en la x dirección, la aproximación resultante sería la misma.
La extensión obvia de la interpolación bilineal a tres dimensiones se llama interpolación trilineal .
Comparación de la
interpolación bilineal con algunas
interpolaciones de 1 y 2 dimensiones. Los puntos negros y rojos / amarillos / verdes / azules corresponden al punto interpolado y a las muestras vecinas, respectivamente. Sus alturas sobre el suelo corresponden a sus valores.
En la visión por computadora y el procesamiento de imágenes , la interpolación bilineal se utiliza para volver a muestrear 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 textura . 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. [3]
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, al escalar una imagen con un factor de escala no integral, hay píxeles (es decir, huecos ) a los que no se les asignan valores de píxeles 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 la transformación de imagen perfecta con la coincidencia de píxeles es imposible, de modo que se pueden 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 cercano 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 desde un píxel dado, para encontrar los valores de intensidad de color apropiados de ese píxel.
La interpolación bilineal considera la vecindad 2 × 2 más cercana de los valores de píxeles conocidos que rodean la ubicación calculada del píxel desconocido. Luego, se necesita un promedio ponderado de estos 4 píxeles para llegar a su valor final interpolado. [4]
Ejemplo de interpolación bilineal en valores de escala de grises
Como se ve en el ejemplo de la derecha, el valor de intensidad en el píxel calculado para estar 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 interpolar linealmente entre estos valores, dando
Este algoritmo reduce parte de la distorsión visual causada al cambiar el 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.