stringtranslate.com

Interpolación bilineal

Ejemplo de interpolación bilineal en el cuadrado unitario con los valores de z 0, 1, 1 y 0,5 como se indica. Valores interpolados intermedios representados por color.

En matemáticas , la interpolación bilineal es un método para interpolar funciones de dos variables (por ejemplo, xey ) utilizando interpolación lineal repetida . Generalmente se aplica a funciones muestreadas en una cuadrícula rectilínea 2D , aunque se puede generalizar a funciones definidas en los vértices de (una malla de) cuadriláteros convexos arbitrarios .

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 más bien cuadrática en la ubicación de la muestra.

La interpolación bilineal es una de las técnicas básicas de remuestreo en visión por computadora y procesamiento de imágenes , donde también se denomina filtrado bilineal o mapeo de textura bilineal .

Cálculo

Los cuatro puntos rojos muestran los puntos de datos y el punto verde es el punto en el que queremos interpolar.

Supongamos 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 ).

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:

Tenga en cuenta que llegaremos al mismo resultado si la interpolación se realiza primero en la dirección y y luego en la dirección x . [1]

Ajuste polinomial

Una forma alternativa es escribir la solución al problema de interpolación como un polinomio multilineal.

donde los coeficientes se encuentran resolviendo el sistema lineal

dando el resultado

media ponderada

Una visualización geométrica de la 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).

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 que simplifica a

de acuerdo con el resultado obtenido por interpolación lineal repetida. El conjunto de pesos también se puede interpretar 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

Comparación de la interpolación bilineal con algunas interpolaciones unidimensionales y bidimensionales. Los puntos
negro y rojo / amarillo / verde / azul corresponden al punto interpolado y a las muestras vecinas, respectivamente.
Sus alturas sobre el suelo corresponden a sus valores.

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 , de manera equivalente si x o y se mantienen constantes. A lo largo de cualquier otra línea recta, la interpolante es cuadrática . 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 primero hubiéramos realizado la interpolación lineal en la dirección y y luego en la dirección x , la aproximación resultante sería la misma.

El interpolante es un polinomio bilineal , que también es una función armónica que satisface la ecuación de Laplace . Su gráfico es un parche de superficie bilineal de Bézier .

Inversa y generalización

En general, el interpolante asumirá cualquier valor (en la capa 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 se aplica la interpolación bilineal 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 del cuadrado unitario" 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). Utilizando 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 un mapeo proyectivo entre un cuadrilátero y el cuadrado unitario, pero el interpolante resultante no será bilineal.

En el caso especial en el 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 visión por computadora y 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 y aplica al píxel de la pantalla un promedio ponderado de los atributos (color, transparencia, etc.) de los cuatro texels circundantes . 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 según la constante de escala. Sin embargo, al ampliar 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 apropiados. En este caso, a esos agujeros se les deben asignar valores RGB o de escala de grises apropiados para que la imagen de salida no tenga píxeles sin valores.

La interpolación bilineal se puede utilizar cuando es imposible 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 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 determinado, 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 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. [5] [6]

Interpolación bilineal
Ejemplo de interpolación bilineal en valores en escala de grises.

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, 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, Saúl A.; Vetterling, William T.; Flannery, Brian P. (1992). Recetas numéricas en C: el arte de la informática científica (2ª ed.). Nueva York, NY, Estados Unidos: Cambridge University Press. págs. 123-128. ISBN 0-521-43108-5.
  2. ^ 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.
  3. ^ Quilez, Íñigo (2010). "Interpolación bilineal inversa". iquilezles.org . Archivado desde el original el 13 de agosto de 2010 . Consultado el 17 de febrero de 2024 .
  4. ^ Definición de interpolación bilineal (artículo popular en www.pcmag.com.
  5. ^ Khosravi, señor (19 de marzo de 2021). "BL-ALM: un filtro de reconstrucción guiado por bordes ciego y escalable para un monitoreo ambiental inteligente a través de redes ecológicas IoMT-UAV". Transacciones IEEE sobre redes y comunicaciones ecológicas . 5 (2): 727–736. doi :10.1109/TGCN.2021.3067555. S2CID  233669511.
  6. ^ "Tutorial web: Interpolación de imágenes digitales".