Interpolación bilineal - Bilinear interpolation

  (Redirigido desde el filtrado bilineal )
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.

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 .

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 .

Algoritmo

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 1y 1 ), Q 12 = ( x 1y 2 ), Q 21 = ( x 2y 1 ) y Q 22 = ( x 2y 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.

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 se encuentran resolviendo

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 .

Aplicación en procesamiento de imágenes

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 mapear 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.

Cuando es necesario ampliar una imagen, cada píxel de la imagen original debe moverse en una dirección determinada según 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 los 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 perfecta de la imagen 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.

Interpolación bilineal
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.

Ver también

Referencias

  1. ^ Prensa, 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. págs.  123-128 . ISBN 0-521-43108-5.
  2. ^ Definición de interpolación bilineal (artículo popular en www.pcmag.com .
  3. ^ "Tutorial web: interpolación de imágenes digitales" .