Remuestreo de Lanczos

fórmula matemática utilizada en la interpolación y el filtrado de señales digitales

El remuestreo de Lanczos y el filtrado de Lanczos son dos aplicaciones de una fórmula matemática, que pueden usarse como filtro de paso bajo o para interpolar sin problemas el valor de una señal digital a partir de sus muestreos. En el último caso, asigna cada muestra de la señal dada a una copia trasladada y escalada del núcleo de Lanczos, que es una función ventana sinc por el lóbulo central de una segunda función sinc más larga. La suma de estos núcleos trasladados y escalados se evalúa luego en los puntos deseados.

Lanczos interpolation with radius 1
Lanczos interpolation with radius 2
Lanczos interpolation with radius 3
Gráfico parcial de una señal discreta (puntos negros) y de su interpolación de Lanczos (curva azul continua), con el parámetro de tamaño a igual a 1 (arriba), 2 (en medio) y 3 (abajo). También se muestran dos copias del núcleo de Lanczos, desplazadas y escaladas, correspondientes a las muestras 4 y 11 (curvas de trazos).

El remuestreo de Lanczos se utiliza normalmente para aumentar el muestreo de una señal digital o para desplazarlo en una fracción del intervalo de muestreo. A menudo se usa también para la interpolación multivariable, como por ejemplo, para cambiar el tamaño o rotar una imagen digital. Se ha considerado el "mejor compromiso" entre varios filtros sencillos con estos propósitos.[1]

El filtro fue inventado por Claude Duchon, quien lo nombró así en referencia a Cornelius Lanczos debido al uso de la aproximación sigma en la construcción del filtro, una técnica creada por Lanczos.[2]

Definición

editar

Núcleo de Lanczos

editar
 
Ventanas de Lanczos para
a= 1, 2, 3
 
Núcleos de Lanczos para los casos a= 2 y a= 3. Téngase en cuenta que la función genera valores negativos

El efecto de cada muestra de entrada sobre los valores interpolados está definido por el núcleo de la reconstrucción L(x) del filtro, llamado núcleo de Lanczos. Es la función seno cardinal normalizada sinc(x), una ventana (multiplicada) por la ventana de Lanczos o ventana sinc, que es el lóbulo central de una función seno cardinal sinc(x/a) elongada horizontalmente para cubrir el intervalo axa.

 

De manera equivalente,

 

El parámetro a es un número entero positivo, normalmente 2 o 3, que determina el tamaño del núcleo. El núcleo de Lanczos tiene lóbulos 2a − 1: uno positivo en el centro y a − 1 alternando lóbulos positivos y negativos en cada lado.

Fórmula de interpolación

editar

Dada una señal unidimensional con si muestras, para valores enteros de i, el valor S(x) interpolado en un argumento real arbitrario x se obtiene mediante la convolución discreta de aquellas muestras con el núcleo de Lanczos:[3]

 

donde a es el parámetro de tamaño del filtro y   es la función suelo. Los límites de esta suma son tales que el núcleo es cero fuera de ellos.

Propiedades

editar

Siempre que el parámetro a sea un entero positivo, el núcleo de Lanczos es continuo en todas partes, y su derivada está definida y es continua en todas partes (incluso en x= ±a, donde ambas funciones sinc llegan a cero). Por lo tanto, la señal reconstruida S(x) también será continua, con derivada continua.

El núcleo de Lanczos es cero en cada argumento entero x, excepto en x= 0, donde tiene valor 1. Por lo tanto, la señal reconstruida interpola exactamente las muestras dadas: se tiene que S(x)= si para cada argumento entero x= i.

El remuestreo de Lanczos es una forma de método general desarrollado por Lanczos para contrarrestar el fenómeno de Gibbs, multiplicando los coeficientes de una serie de Fourier truncada por  , donde   es el índice de coeficientes y   es el número de coeficientes que se mantienen.[4]​ El mismo razonamiento se aplica en el caso de funciones truncadas si se desea eliminar las oscilaciones de Gibbs en su espectro.

Interpolación multidimensional

editar
 
El íncipit de una imagen en blanco y negro. Expansión original de baja calidad con artefactos JPEG
 
La misma imagen muestreada de nuevo en cinco veces más muestras en cada dirección, utilizando el remuestreo de Lanczos. Se eliminaron los artefactos de pixelación cambiando la función de transferencia de la imagen

El núcleo del filtro Lanczos en dos dimensiones es:

 

Evaluación

editar

Ventajas

editar
 
Una ventana discreta de Lanczos y su respuesta en frecuencia. Véase ventana (función) para comparar con otras ventanas

El filtro de reconstrucción teóricamente óptimo para una señal de banda limitada es el filtro Sinc, que tiene soporte infinito. El filtro de Lanczos es una de las muchas aproximaciones prácticas (con soporte finito) del filtro sinc. Cada valor interpolado es la suma ponderada de muestras de entrada consecutivas 2a. Por lo tanto, al variar el parámetro 2a se puede cambiar la velocidad de cálculo por una respuesta de frecuencia mejorada. El parámetro también permite elegir entre una interpolación más suave o una preservación de transitorios agudos en los datos. Para el procesamiento de imágenes, el equilibrio se da entre la reducción de los artefactos de aliasing y la preservación de los bordes nítidos. Además, como ocurre con cualquier procesamiento de este tipo, no hay resultados para los bordes de la imagen. Aumentar la longitud del núcleo aumenta el recorte de los bordes de la imagen.

El filtro de Lanczos se ha comparado con otros métodos de interpolación para señales discretas, particularmente otras versiones en ventana del filtro sinc. Turkowski y Gabriel afirmaron que el filtro de Lanczos (con a= 2) es el "mejor compromiso en términos de reducción de aliasing, nitidez y resonancia mínima", en comparación con la función sinc truncada y las ventanas sinc de Bartlett, coseno y la ventana de Hann, para eliminar o interpolar datos de imágenes bidimensionales digitales.[1]​ Según Jim Blinn, el núcleo de Lanczos (con a= 3) "mantiene las frecuencias bajas y rechaza las frecuencias altas mejor que cualquier filtro (alcanzable) que hayamos visto hasta ahora".[5]

La interpolación de Lanczos es un filtro popular para "mejorar" videos en varias utilidades para la edición de medios visuales, como AviSynth[6]​ y FFmpeg.[7]

Limitaciones

editar

Dado que el núcleo asume valores negativos para a > 1, la señal interpolada puede ser negativa incluso si todas las muestras son positivas. De manera más general, el rango de valores de la señal interpolada puede ser más amplio que el rango abarcado por los valores de muestra discretos. En particular, pueden generarse artefactos de anillo justo antes y después de cambios abruptos en los valores de la muestra, lo que puede conducir a artefactos de recorte. Sin embargo, estos efectos se reducen en comparación con el filtro sinc (sin ventana). Para a = 2 (un núcleo de tres lóbulos), el efecto de anillo es < 1%.

El método es una de las opciones de interpolación disponibles en el software gratuito GNU Image Manipulation Program (GIMP). Una forma de visualizar el efecto de artefactos de anillo es cambiar la escala de un gráfico de bloques en blanco y negro, y seleccionar la interpolación de Lanczos.

Cuando se utiliza el filtro Lanczos para remuestreo de imágenes, el efecto de anillo creará halos claros y oscuros en los bordes nítidos. Si bien estas bandas pueden resultar visualmente molestas, ayudan a aumentar la acutancia y, por lo tanto, proporcionan una forma de realce de bordes. Esto puede mejorar la calidad subjetiva de la imagen, dada la función especial de la nitidez de los bordes en el proceso fisiológico de la visión.[8]

En algunas aplicaciones, los artefactos de recorte de gama baja se pueden mejorar transformando los datos a un dominio logarítmico antes del filtrado. En este caso, los valores interpolados serán una media geométrica ponderada, en lugar de una media aritmética, de las muestras de entrada.

El kernel de Lanczos no tiene la propiedad de la partición de la unidad. Es decir, la suma   de todas las copias del núcleo traducidas a números enteros no siempre es 1. Por lo tanto, la interpolación de Lanczos de una señal discreta con muestras constantes no produce una función constante. Este defecto es más evidente cuando a= 1. Además, para a= 1 la señal interpolada tiene derivada cero en cada argumento entero. Esto es bastante académico, ya que el uso de un núcleo de un solo lóbulo (a = 1) pierde todos los beneficios del enfoque de Lanczos y proporciona un filtro deficiente. Hay muchas funciones mejores de ventanas de un solo lóbulo y en forma de campana.

Véase también

editar

Referencias

editar
  1. a b Turkowski, Ken; Gabriel, Steve (1990). «Filters for Common Resampling Tasks». En Glassner, Andrew S., ed. Graphics Gems I. Academic Press. pp. 147-165. ISBN 978-0-12-286165-9.  Parámetro desconocido |cite= ignorado (ayuda)
  2. Claude, Duchon (1 de agosto de 1979). «Lanczos Filtering in One and Two Dimensions». Journal of Applied Meteorology 18 (8): 1016-1022. doi:10.1175/1520-0450(1979)018<1016:LFIOAT>2.0.CO;2. 
  3. Burger, Wilhelm; Burge, Mark J. (2009). Principles of digital image processing: core algorithms. Springer. pp. 231-232. ISBN 978-1-84800-194-7. 
  4. Lanczos, Cornelius (1988). Applied analysis. New York: Dover Publications. pp. 219-221. ISBN 0-486-65656-X. OCLC 17650089. 
  5. Blinn, Jim (1998). Jim Blinn's corner: dirty pixels. Morgan Kaufmann. pp. 26-27. ISBN 978-1-55860-455-1. 
  6. «Resize». Avisynth. 1 de enero de 2015. Consultado el 27 de julio de 2015. 
  7. «A How To guide: Upconverting video using FFDShow - Neowin Forums». Neowin.net. 18 de abril de 2006. Consultado el 31 de julio de 2012. 
  8. «IPOL: Linear Methods for Image Interpolation». Ipol.im. 27 de septiembre de 2011. Consultado el 31 de julio de 2012. 

Enlaces externos

editar
  • Anti-Grain Geometry examples: image_filters.cpp shows comparisons of repeatedly resampling an image with various kernels.
  • imageresampler: A public domain image resampling class in C++ with support for several windowed Lanczos filter kernels.