En el procesamiento digital de señales , el antialiasing espacial es una técnica para minimizar los artefactos de distorsión ( aliasing ) al representar una imagen de alta resolución a una resolución menor. El antialiasing se utiliza en fotografía digital , gráficos por computadora , audio digital y muchas otras aplicaciones.
El suavizado de bordes (anti-aliasing) consiste en eliminar los componentes de la señal cuya frecuencia es superior a la que puede resolver adecuadamente el dispositivo de grabación (o muestreo). Esta eliminación se realiza antes del (re)muestreo a una resolución menor. Si el muestreo se realiza sin eliminar esta parte de la señal, se producen artefactos indeseables, como ruido blanco y negro.
En la adquisición de señales y el audio, el suavizado de bordes se realiza a menudo mediante un filtro analógico para eliminar la componente fuera de banda de la señal de entrada antes del muestreo con un convertidor analógico-digital . En la fotografía digital, los filtros ópticos de suavizado de bordes, fabricados con materiales birrefringentes , suavizan la señal en el dominio óptico espacial. El filtro de suavizado de bordes difumina ligeramente la imagen para reducir la resolución a un valor igual o inferior al que puede alcanzar el sensor digital (cuanto mayor sea el tamaño del píxel , menor será la resolución alcanzable a nivel del sensor).
Ejemplos
En gráficos por computadora, el suavizado de bordes (antialiasing ) mejora la apariencia de los bordes dentados de los polígonos, haciéndolos más uniformes en la pantalla. Sin embargo, esto conlleva una disminución del rendimiento de la tarjeta gráfica y consume más memoria de video . El nivel de suavizado determina la nitidez de los bordes de los polígonos (y la cantidad de memoria de video que consume).




Cerca de la parte superior de una imagen con un patrón de tablero de ajedrez que se desvanece, la imagen es difícil de reconocer y a menudo no se considera estéticamente agradable. En cambio, cuando se aplica el suavizado de bordes, el tablero de ajedrez cerca de la parte superior se difumina en gris, que suele ser el efecto deseado cuando la resolución es insuficiente para mostrar el detalle. Incluso cerca de la parte inferior de la imagen, los bordes aparecen mucho más suaves en la imagen suavizada. Existen varios métodos, incluido el filtro sinc , que se considera un mejor algoritmo de suavizado de bordes. [ 1 ] Al ampliar la imagen, se puede ver cómo el suavizado de bordes interpola el brillo de los píxeles en los límites para producir píxeles grises , ya que el espacio está ocupado tanto por mosaicos blancos como negros. Esto ayuda a que la imagen suavizada con el filtro sinc parezca mucho más suave que la original.

En una imagen simple de diamante, el suavizado de bordes difumina los píxeles del contorno; esto reduce el efecto estéticamente discordante de los bordes nítidos y escalonados que aparecen en el gráfico con suavizado de bordes.
El suavizado de bordes (anti-aliasing) se aplica frecuentemente al renderizar texto en una pantalla de ordenador para sugerir contornos suaves que imiten mejor la apariencia del texto impreso con tinta y papel. En particular, con las fuentes que se muestran en las pantallas LCD típicas, es común utilizar técnicas de renderizado de subpíxeles como ClearType . El renderizado de subpíxeles requiere filtros de suavizado de bordes con balance de color especial para convertir lo que sería una distorsión de color severa en franjas de color apenas perceptibles. Se pueden obtener resultados equivalentes haciendo que los subpíxeles individuales sean direccionables como si fueran píxeles completos y proporcionando un filtro de suavizado de bordes basado en hardware, como se hace en el controlador de pantalla del portátil OLPC XO-1 . La geometría de los píxeles afecta a todo esto, tanto si el suavizado de bordes como el direccionamiento de subpíxeles se realizan por software como por hardware.
El enfoque más sencillo para el suavizado de bordes
El método más básico para suavizar los bordes de un píxel consiste en determinar qué porcentaje del píxel está ocupado por una región determinada del gráfico vectorial (en este caso, un cuadrado del tamaño de un píxel, posiblemente transpuesto a lo largo de varios píxeles) y utilizar ese porcentaje como color.
Un programa en Python que produce un gráfico básico de un único punto blanco sobre negro con suavizado de bordes utilizando el método es el siguiente:
def plot_antialiased_point ( x : float , y : float ): """Dibuja un único punto blanco sobre negro con suavizado de bordes.""" for rounded_x in floor ( x ) to ceil ( x ): for rounded_y in floor ( y ) to ceil ( y ): percent_x = 1 - abs ( x - rounded_x ) percent_y = 1 - abs ( y - rounded_y ) percent = percent_x * percent_y draw_pixel ( coordinates = ( rounded_x , rounded_y ), color = percent ( range 0 - 1 ))Este método suele ser más adecuado para gráficos sencillos, como líneas o curvas básicas, y para aplicaciones que, de otro modo, tendrían que convertir coordenadas absolutas a coordenadas con restricciones de píxeles, como los gráficos 3D. Es una función bastante rápida, pero su calidad es relativamente baja y se ralentiza a medida que aumenta la complejidad de la forma. Para aplicaciones que requieren gráficos de muy alta calidad o formas vectoriales muy complejas, probablemente no sea la mejor opción.
Nota: La plot_antialiased_pointrutina anterior no puede establecer automáticamente el valor de color al porcentaje calculado. Debe sumar el nuevo valor al valor existente en esa ubicación, hasta un máximo de 1. De lo contrario, el brillo de cada píxel será igual al valor más oscuro calculado en ese momento para esa ubicación, lo que produce un resultado muy deficiente. Por ejemplo, si un punto establece un nivel de brillo de 0,90 para un píxel determinado y otro punto calculado posteriormente apenas toca ese píxel y tiene un brillo de 0,05, el valor final establecido para ese píxel debería ser 0,95, no 0,05.
Para formas más sofisticadas, el algoritmo puede generalizarse para representar la forma en una cuadrícula de píxeles con una resolución mayor que la de la superficie de visualización de destino (normalmente un múltiplo que sea una potencia de 2 para reducir la distorsión), y luego utilizar la interpolación bicúbica para determinar la intensidad media de cada píxel real en la superficie de visualización.
Enfoque de procesamiento de señales para el anti-aliasing
En este enfoque, la imagen ideal se considera una señal . La imagen mostrada en la pantalla se toma como muestras, en cada posición de píxel ( x,y ), de una versión filtrada de la señal. Idealmente, se comprendería cómo el cerebro humano procesaría la señal original y se proporcionaría una imagen en pantalla que produjera la respuesta cerebral más similar.
La herramienta analítica más aceptada para este tipo de problemas es la transformada de Fourier ; esta descompone una señal en funciones base de diferentes frecuencias, conocidas como componentes de frecuencia, y nos da la amplitud de cada componente de frecuencia en la señal. Las ondas tienen la forma:
donde j y k son enteros no negativos arbitrarios . También existen componentes de frecuencia que involucran funciones seno en una o ambas dimensiones, pero para los fines de esta discusión, bastará con el coseno .
Los números j y k juntos representan la frecuencia del componente: j es la frecuencia en la dirección x , y k es la frecuencia en la dirección y .
El objetivo de un filtro anti-aliasing es reducir considerablemente las frecuencias superiores a un cierto límite, conocido como frecuencia de Nyquist , de modo que la señal se represente con precisión mediante sus muestras, o casi con exactitud, de acuerdo con el teorema de muestreo . Existen diversas opciones de algoritmos detallados, con diferentes funciones de transferencia de filtro . En general, el conocimiento actual de la percepción visual humana no es suficiente para determinar qué enfoque resultará más eficaz.
Consideraciones bidimensionales

La discusión anterior presupone que el muestreo de malla rectangular es la parte dominante del problema. El filtro que generalmente se considera óptimo no es simétrico rotacionalmente, como se muestra en la primera figura; esto se debe a que los datos se muestrean en una red cuadrada , no mediante una imagen continua. Este patrón de muestreo justifica el procesamiento de la señal a lo largo de cada eje, como se hace tradicionalmente con datos unidimensionales. El remuestreo de Lanczos se basa en la convolución de los datos con una representación discreta de la función sinc.
Si la resolución no está limitada por la frecuencia de muestreo rectangular de la imagen de origen o de destino, lo ideal sería utilizar filtros o funciones de interpolación con simetría rotacional, como si los datos fueran una función bidimensional de x e y continuos. La función sinc del radio tiene una cola demasiado larga para ser un buen filtro (ni siquiera es integrable al cuadrado ). Un análogo más apropiado para la función sinc unidimensional es la amplitud del disco de Airy bidimensional , la transformada de Fourier bidimensional de una región circular en el espacio de frecuencias bidimensional, en contraposición a una región cuadrada.

Se podría considerar una función gaussiana más una derivada segunda suficiente para aplanar la parte superior (en el dominio de la frecuencia) o acentuarla (en el dominio espacial), como se muestra. Las funciones basadas en la función gaussiana son opciones naturales, ya que la convolución con una gaussiana produce otra gaussiana, tanto si se aplica a x e y como al radio. De forma similar a las ondículas, otra de sus propiedades es que se encuentra a medio camino entre la localización en la configuración (x e y) y en la representación espectral (j y k). Como función de interpolación, una gaussiana por sí sola parece demasiado dispersa para preservar el máximo detalle posible, por lo que se le añade la derivada segunda.
Por ejemplo, al imprimir un negativo fotográfico con una amplia capacidad de procesamiento y en una impresora con patrón hexagonal, no hay razón para usar la interpolación mediante la función sinc. Dicha interpolación trataría las líneas diagonales de forma diferente a las horizontales y verticales, lo que equivale a una forma leve de aliasing.
Aproximaciones prácticas de suavizado de bordes en tiempo real
En un motor de renderizado en tiempo real (ya sea con aceleración por software o hardware), solo se utilizan unas pocas primitivas a nivel básico . Estas incluyen puntos, líneas y triángulos. Si se dibuja una de estas primitivas en blanco sobre un fondo negro, es posible diseñarla con bordes difuminados, logrando así un efecto de suavizado de bordes. Sin embargo, este método presenta dificultades para manejar primitivas adyacentes (como triángulos que comparten un borde).
Para aproximar el algoritmo de promedio uniforme, se puede usar un búfer adicional para datos subpíxel. El método inicial (y el que menos memoria consume) utilizaba 16 bits adicionales por píxel, en una cuadrícula de 4 × 4. Si se renderizan las primitivas en un orden preciso, como de adelante hacia atrás, es posible crear una imagen aceptable.
Dado que esto requiere que las primitivas estén en algún orden y, por lo tanto, interactúa mal con una interfaz de programación de aplicaciones como OpenGL , los métodos más recientes simplemente utilizan dos o más subpíxeles completos por píxel, incluyendo información de color completa para cada subpíxel. Parte de la información puede compartirse entre los subpíxeles (como el búfer Z ).
Mipmapping
También existe una técnica especializada para el mapeo de texturas llamada mipmapping , que consiste en crear versiones prefiltradas y de menor resolución del mapa de texturas. Al renderizar la imagen, se selecciona el mipmap con la resolución adecuada, por lo que los píxeles de textura (texels) ya están filtrados cuando aparecen en pantalla. El mipmapping se suele combinar con diversas técnicas de filtrado de texturas para mejorar el resultado final.
Ejemplo de una imagen con aliasing pseudoaleatorio extremo
Debido a que los fractales tienen un nivel de detalle ilimitado y no presentan ruido más allá del error de redondeo aritmético, ilustran el aliasing con mayor claridad que las fotografías u otros datos medidos. Los tiempos de escape , que se convierten en colores en los centros exactos de los píxeles, tienden al infinito en el borde del conjunto, por lo que los colores de los centros cercanos a los bordes son impredecibles debido al aliasing. Este ejemplo tiene bordes en aproximadamente la mitad de sus píxeles, por lo que muestra mucho aliasing. La primera imagen se carga con su frecuencia de muestreo original. (Dado que la mayoría del software moderno aplica suavizado de bordes, es posible que haya que descargar la versión de tamaño completo para ver todo el aliasing). La segunda imagen se calcula a cinco veces la frecuencia de muestreo y se submuestrea con suavizado de bordes. Suponiendo que se desee algo como el color promedio en cada píxel, esta se acerca más. Es claramente más ordenada que la primera.
Para poder comparar correctamente estas imágenes, es necesario visualizarlas a tamaño real.
1. Calculado con el programa "MandelZot"
2. Suavizado mediante desenfoque y submuestreo por un factor de cinco.
3. Puntos de borde interpolados, luego suavizados y submuestreados.
4. Mejora de los puntos eliminados de la imagen anterior.
5. Remuestreo descendente nuevamente, sin suavizado de bordes.
Resulta que, en este caso, hay información adicional que se puede utilizar. Al recalcular con un algoritmo de "estimación de distancia", se identificaron puntos muy cercanos al borde del conjunto, de modo que se produce un aliasing de detalles inusualmente finos debido a los tiempos de escape que cambian rápidamente cerca del borde del conjunto. Se ha identificado que los colores derivados de estos puntos calculados no son representativos de sus píxeles. El conjunto cambia más rápidamente en esa zona, por lo que una sola muestra de punto es menos representativa de todo el píxel. En la tercera imagen, esos puntos se reemplazaron interpolando los puntos que los rodean. Esto reduce el ruido de la imagen, pero tiene el efecto secundario de aclarar los colores. Por lo tanto, esta imagen no es exactamente la misma que se obtendría con un conjunto aún mayor de puntos calculados. Para mostrar lo que se descartó, los puntos rechazados, mezclados con un fondo gris, se muestran en la cuarta imagen.
Finalmente, "Budding Turbines" es tan regular que el aliasing sistemático (Moiré) se aprecia claramente cerca del "eje de la turbina" principal al reducir su tamaño tomando el píxel más cercano. El aliasing en la primera imagen parece aleatorio porque proviene de todos los niveles de detalle, por debajo del tamaño del píxel. Al suprimir el aliasing de nivel inferior para crear la tercera imagen, y luego reducirla nuevamente sin suavizado de bordes para obtener la quinta, el orden en la escala de la tercera imagen aparece como un aliasing sistemático en la quinta.
La reducción de tamaño pura de una imagen tiene el siguiente efecto (se recomienda visualizarla a escala completa):
1) Una imagen de una característica espiral particular del conjunto de Mandelbrot.
2) 4 muestras por píxel
3) 25 muestras por píxel
4) 400 muestras por píxel
Supermuestreo / suavizado de bordes de escena completa
El antialiasing por supermuestreo (SSAA) , [ 2 ] también llamado antialiasing de escena completa (FSAA), [ 3 ] se utiliza para evitar el aliasing (o " bordes dentados ") en imágenes de pantalla completa. [ 4 ] El SSAA fue el primer tipo de antialiasing disponible con las primeras tarjetas de video. Pero debido a su enorme costo computacional y la llegada del soporte para antialiasing multisample (MSAA) en las GPU, ya no se usa ampliamente en aplicaciones en tiempo real. El MSAA proporciona una calidad gráfica algo menor, pero también un enorme ahorro en potencia computacional.
La imagen resultante de SSAA puede parecer más suave y también debería verse más realista. Sin embargo, si bien es útil para imágenes fotográficas, un enfoque simple de suavizado de bordes (como el supermuestreo y luego el promedio) puede empeorar la apariencia de algunos tipos de dibujos lineales o diagramas (haciendo que la imagen parezca borrosa), especialmente cuando la mayoría de las líneas son horizontales o verticales. En estos casos, puede ser útil un paso previo de ajuste de cuadrícula (ver sugerencia ).
En general, el supermuestreo es una técnica que consiste en recopilar puntos de datos con una resolución mayor (normalmente dos veces superior) que la resolución final de los datos. Estos puntos de datos se combinan (se submuestrean) hasta alcanzar la resolución deseada, a menudo mediante un simple promedio . Los puntos de datos combinados presentan artefactos de aliasing (o patrones de moiré ) menos visibles.
El suavizado de escena completa mediante supermuestreo generalmente implica que cada fotograma completo se renderiza al doble (2x) o al cuádruple (4x) de la resolución de la pantalla , y luego se reduce su resolución para que coincida con ella. Por lo tanto, un FSAA 2x renderizaría 4 píxeles supermuestreados por cada píxel de cada fotograma. Renderizar a resoluciones más altas produce mejores resultados; sin embargo, se necesita más potencia de procesamiento, lo que puede degradar el rendimiento y la velocidad de fotogramas. A veces, el FSAA se implementa en hardware de tal manera que la aplicación gráfica no se da cuenta de que las imágenes se están supermuestreando y luego reduciendo su resolución antes de mostrarse.
Suavizado de bordes basado en objetos
Un sistema de renderizado gráfico crea una imagen a partir de objetos formados por primitivas poligonales. Los efectos de aliasing en la imagen se pueden reducir aplicando un esquema de suavizado de bordes únicamente a las áreas que representan los contornos de los objetos. Estos contornos se suavizan mediante la creación de primitivas de suavizado con opacidad variable. Estas primitivas se unen a los contornos y crean una región en la imagen donde los objetos parecen fundirse con el fondo. Este método presenta importantes ventajas sobre los métodos clásicos basados en el búfer de acumulación, ya que genera suavizado de bordes de escena completa en solo dos pasadas y no requiere la memoria adicional que este necesita. El suavizado de bordes basado en objetos se desarrolló inicialmente en Silicon Graphics para su estación de trabajo Indy .
Suavizado de bordes y compresión gamma
Las imágenes digitales suelen almacenarse en un formato con compresión gamma , pero la mayoría de los filtros ópticos anti-aliasing son lineales. Por lo tanto, para reducir la resolución de una imagen de forma que coincida con el desenfoque óptico, primero se debe convertir a un formato lineal, luego aplicar el filtro anti-aliasing y, finalmente, volver a convertirla a un formato con compresión gamma. [ 5 ] El uso de aritmética lineal en una imagen con compresión gamma produce valores ligeramente diferentes al filtro ideal. Este error es mayor al tratar con áreas de alto contraste, lo que provoca que estas áreas se atenúen: los detalles brillantes (como los bigotes de un gato) se vuelven visualmente más finos y los detalles oscuros (como las ramas de los árboles) se vuelven más gruesos, en relación con la imagen con anti-aliasing óptico. [ 6 ] Cada píxel se distorsiona individualmente, lo que significa que los contornos se vuelven irregulares después del anti-aliasing. Debido a que la conversión a y desde un formato lineal ralentiza considerablemente el proceso, y a que las diferencias suelen ser sutiles, la mayoría del software de edición de imágenes , incluidos Final Cut Pro y Adobe Photoshop , procesan las imágenes en el dominio de compresión gamma.
La mayoría de las GPU modernas admiten el almacenamiento de texturas en memoria en formato sRGB y pueden realizar transformaciones al espacio lineal y viceversa de forma transparente, prácticamente sin pérdida de rendimiento.
Historia
Entre los trabajos iniciales importantes en la historia del suavizado de bordes se incluyen:
- Freeman, H. (marzo de 1974). "Procesamiento informático de imágenes de dibujos lineales". ACM Computing Surveys . 6 (1): 57– 97. doi : 10.1145/356625.356627 . S2CID 18962414 .
- Crow, Franklin C. (noviembre de 1977). "El problema del aliasing en imágenes sombreadas generadas por computadora" . Communications of the ACM . 20 (11): 799– 805. doi : 10.1145/359863.359869 . S2CID 18799849 .
- Catmull, Edwin (23-25 de agosto de 1978). "Un algoritmo de superficie oculta con suavizado de bordes". Actas de la 5.ª conferencia anual sobre gráficos por computadora y técnicas interactivas . págs. 6-11 .
Véase también
Referencias
- ↑ Leler, William J. (julio de 1980). "Visión humana, suavizado de bordes y la pantalla barata de 4000 líneas". ACM SIGGRAPH Computer Graphics . 14 (3): 308– 313. doi : 10.1145/965105.807509 .
- ↑ "Radeon HD 5870 de AMD: La llegada de la próxima generación de GPU" . AnandTech.com. Archivado del original el 30 de mayo de 2010.
- ↑ Jason Gregory, Jeff Lander (2009). Arquitectura de motores de juegos . AK Peters, Ltd. pág. 39. ISBN 978-1-56881-413-1.
- ↑ M. Carmen Juan Lizandra (junio de 2000). "Bibliotecas gráficas para programación en Windows". Crossroads . 6 (4). ACM: 14–18 . doi : 10.1145/333424.333433 . S2CID 15786664 .
- ↑ Maruszczyk, Kuba; Denes, Gyorgy; Mantiuk, Rafal K. (2018). "Mejora de la calidad del suavizado de bordes en realidad virtual" (PDF) . EG UK Computer Graphics & Visual Computing . S2CID 54081570. Archivado del original (PDF) el 18 de febrero de 2019.
- ↑ Brasseur, Eric. "Error gamma en el escalado de imágenes" . www.4p8.com . Archivado del original el 23 de diciembre de 2012. Consultado el 14 de diciembre de 2012 .
Enlaces externos
- Tutorial sobre suavizado de bordes y transparencia : Explica la interacción entre el suavizado de bordes y la transparencia, especialmente al trabajar con gráficos web.
- Interpolación y corrección gamma: En la mayoría de los sistemas reales, se requiere la corrección gamma para linealizar la curva de respuesta del sensor y del sistema de visualización. Si no se tiene en cuenta, la distorsión no lineal resultante anulará el propósito de los cálculos de antialiasing basados en la suposición de una respuesta lineal del sistema.
- El futuro del Anti-Aliasing : una comparación de los diferentes algoritmos MSAA, MLAA, DLAA y FXAA
- (en francés) Le rôle du filtre anti-aliasing dans les APN (la función del filtro anti-aliasing en dSLR)
- "SMOOTHVISION™" (PDF) . ATI Technologies. Archivado del original (PDF) el 18 de enero de 2007.
- Procesamiento de imágenes
- Tipografía digital
- artefactos gráficos por computadora
- Algoritmos de suavizado de bordes
