En el procesamiento de señal digital, el suavizado espacial o anti-aliasing espacial es la técnica de minimizar la distorsión artificial conocido como aliasing cuando se representa una imagen de alta resolución con una resolución más baja. El suavizado o anti-aliasing se utiliza en fotografía digital, gráficos por computadora, audio digital y muchas otras aplicaciones
En inglés, anti-aliasing significa eliminar los componentes de una señal que tienen una frecuencia mayor que la que puede ser correctamente usada por el dispositivo de grabación (o muestreo). Esta eliminación se realiza antes del (re) muestreo a una resolución más baja. Cuando se realiza el muestreo sin eliminar esta parte de la señal, provoca resultados indeseables tales como el ruido blanco y negro.
En la captura de la señal y el audio, el anti-aliasing se hace a menudo usando un filtro anti-aliasing analógico para quitar el componente fuera de banda de la señal de entrada antes de muestrear con un convertidor analógico-digital. En la fotografía digital, los filtros anti-aliasing ópticos están hechos de materiales birrefringentes y suavizan la señal en el dominio óptico espacial. El filtro de suavizado esencialmente borra ligeramente la imagen para reducir la resolución, dejándola por debajo de la alcanzable por el sensor digital (cuanto mayor es el paso de píxeles, menor es la resolución alcanzable en el nivel del sensor).
Ejemplos Archivo:Aliased.png(a)Archivo:Antialiased.png(b)Archivo:Antialiased lanczos.png(c)Figura 1 marco|Figura 2 En gráficos por computadora, el anti-aliasing mejora la apariencia de los bordes de polígono, por lo que no son "irregulares", pero se suavizan en la pantalla. Sin embargo, incurre en un coste de rendimiento para la tarjeta gráfica y utiliza más memoria de vídeo. El nivel de suavizado determina la suavidad de los bordes de polígonos (y la cantidad de memoria de vídeo que consume).
La figura 1-a ilustra la distorsión visual que ocurre cuándo anti-aliasing no es utilizado. En la parte superior de la imagen, donde las casillas del tablero de damas son muy pequeña, la imagen es difícil de reconocer y no es estéticamente correcta. En contraste, la Figura 1-b muestra una versión con un filtrado anti-aliasing de la escena; en esta imagen del tablero de damas, en la parte superior se mezcla en gris, que es normalmente el efecto deseado cuándo la resolución es insuficiente para mostrar todos los detalles. Cerca de la parte inferior de la imagen, los bordes aparecen mucho más suaves en la imagen con el filtro anti-aliasing. La figura 1-c muestra otro tipo de filtrado anti-aliasing, un algoritmo basado en el sinc filtro, que está considerado como mejor propuesta que el algoritmo utilizado en la figura 1-b.
La figura 2 muestra porciones magnificadas de la imagen del tablero de damas (interpoladas usando el algoritmo de vecino más cercano) de la figura 1-a (izquierda) y 1-c (derecha) para compararlas. En la figura 1-c, el anti-aliasing ha interpolado el brillo de los píxeles en los límites para producir píxeles grises ya que el espacio está ocupado tanto por casillas negras como blancas. Estos ayudan a hacer la figura 1-c parece mucho más suave que la figura 1-a en la ampliación original.
En la figura 3, se usó el anti-aliasing para mezclar los píxeles de contorno de un gráfico de muestra; esto redujo el no deseado efecto de los límites afilados y escalonados que aparecen en el gráfico de alias a la izquierda. El anti-aliasing se aplica a menudo en la representación de texto en una pantalla de computadora, para sugerir contornos suaves que mejor emulen la apariencia del texto producido por la impresión convencional de tinta y papel.
Particularmente con las fuentes que se muestran en las pantallas LCD típicas, es común utilizar técnicas de representación de subpixel como ClearType. El procesamiento de subpíxeles requiere filtros de suavizado de color especiales balanceados para convertir lo que sería una severa distorsión de color en franjas de color apenas visibles. Se pueden obtener resultados equivalentes haciendo que los subpíxeles individuales sean direccionables como si fueran píxeles completos, y proporcionando un filtro anti-aliasing 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, ya sea que el direccionamiento de anti-aliasing y sub-pixel se realice en software o hardware. Archivo:Anti-aliased-diamonds.pngArriba a la izquierda: una versión aliada de una forma simple; Arriba a la derecha: una versión suavizada de la misma forma; A la derecha: El gráfico anti-alias con una ampliación de 5xArchivo:Anti-aliased_diamond_enlarged.pngFigura 3
Aproximación más sencilla al anti-aliasing El enfoque más básico para un filtro anti-aliasing es determinar qué porcentaje del píxel está ocupado por una región determinada en el gráfico vectorial (en este caso un cuadrado de tamaño de píxel, posiblemente transpuesto a lo largo de varios píxeles) y usar ese porcentaje como el color.
Una forma sencilla de graficar un pixel blanco-encima-negro con un método de filtro anti-aliased puede ser el siguiente: Define function PlotAntiAliasedPoint ( number x, number y ) For roundedx = floor ( x ) to ceil ( x ) do For roundedy = floor ( y ) to ceil ( y ) do percent_x = 1 - abs ( x - roundedx ) percent_y = 1 - abs ( y - roundedy ) percent = percent_x * percent_y DrawPixel ( coordinates roundedx, roundedy, color percent (range 0-1) )
Este método suele ser más adecuado para gráficos simples, como líneas o curvas básicas y aplicaciones que de otro modo tendrían que convertir coordenadas absolutas en coordenadas con píxeles, como gráficos en 3-D. Es una función bastante rápida, pero es relativamente de baja calidad, y se vuelve más lenta a medida que aumenta la complejidad de la forma. Para propósitos que requieren gráficos de muy alta calidad o formas vectoriales muy complejas, esto probablemente no será el mejor enfoque.
Nota: La rutina DrawPixel anterior no puede establecer ciegamente el valor del color en el porcentaje calculado. Debe agregar 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 el tiempo para esa ubicación lo que produce un resultado muy negativo. Por ejemplo, si un punto establece un nivel de brillo de 0,90 para un píxel dado y otro punto calculado más tarde apenas toca ese píxel y tiene un brillo de 0,05, el valor final establecido para ese píxel debe ser 0,95, no 0,05.
Para formas más sofisticadas, el algoritmo puede generalizarse como representación de la forma en una cuadrícula de píxeles con mayor resolución que la superficie de visualización objetivo (usualmente un múltiplo que es una potencia de 2 para reducir la distorsión), utilizando la interpolación bicúbica para determinar la intensidad media De cada píxel real en la superficie de visualización.
Aproximación de procesamiento de señales para anti-aliasing En este enfoque, la imagen ideal se considera como una señal. La imagen visualizada 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, uno entendería cómo el cerebro humano procesaría la señal original, y proporcionaría una imagen en pantalla que producirá la respuesta más similar por el cerebro.
La herramienta analítica más aceptada para tales problemas es la transformada de Fourier; Esto descompone una señal en funciones de 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 son de la forma:
Donde j y k son enteros no negativos arbitrarios. También hay componentes de frecuencia que implican las funciones seno en una o ambas dimensiones, pero para el propósito de esta discusión, el coseno será suficiente.
Los números j y k juntos son 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 en gran medida las frecuencias por encima de un cierto límite, conocido como la frecuencia de Nyquist, de modo que la señal será representada con precisión por sus muestras, o casi, de acuerdo con el teorema de muestreo; Hay muchas opciones diferentes de algoritmo detallado, con diferentes funciones de transferencia de filtro. El conocimiento actual de la percepción visual humana no es suficiente, en general, para decir qué enfoque se verá mejor.
Dos consideraciones dimensionales miniaturadeimagen|Sinc Función, con separado X y Y La discusión anterior supone que el muestreo de malla rectangular es la parte dominante del problema. El filtro usualmente considerado óptimo no es simétrico en rotación, como se muestra en esta primera figura; Esto se debe a que los datos se muestrean sobre un retículo cuadrado, no usando una imagen continua. Este patrón de muestreo es la justificación para hacer el procesamiento de señal a lo largo de cada eje, como se hace tradicionalmente en datos unidimensionales. El resampling 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 velocidad de muestreo rectangular de la imagen fuente o de la imagen objetivo, entonces idealmente debería usarse funciones de filtro o interpolación rotatoriamente simétricas, como si los datos fueran una función bidimensional de x e y continua. La función sinc del radio, en la segunda figura, tiene una cola demasiado larga para hacer un buen filtro (no es ni siquiera cuadrada-integrable). Un análogo más apropiado para el sinc unidimensional es la amplitud de disco de Airy bidimensional, la transformada de Fourier 2D de una región circular en el espacio de frecuencia 2D, en oposición a una región cuadrada. miniaturadeimagen|Gaussiano más función diferencial Podría considerarse un Gaussiano más de su segunda derivada para aplanar la parte superior (en el dominio de la frecuencia) o agudizarla (en el dominio espacial), como se muestra. Las funciones basadas en la función gaussiana son elecciones naturales, porque la convolución con un Gaussiano da otro Gaussiano si se aplica a x e y, o al radio. De forma similar a las wavelets, otra de sus propiedades es que está a medio camino entre ser localizada en la configuración (x e y) y en la representación espectral (j y k). Como una función de interpolación, un solo Gaussiano parece demasiado disperso para preservar el máximo detalle posible, y por lo tanto se añade la segunda derivada.
Por ejemplo, cuando se imprime un negativo fotográfico con capacidad de procesamiento abundante y en una impresora con un patrón hexagonal, no hay razón para usar la interpolación de función sinc. Tal interpolación trataría las líneas diagonales de forma diferente a las líneas horizontales y verticales, que es como una forma débil de aliasing.
Aproximaciones prácticas de anti-aliasing en tiempo real Sólo hay un puñado de primitivas utilizadas en el nivel más bajo en un motor de renderizado en tiempo real (ya sea software o hardware acelerado). Estos incluyen "puntos", "líneas" y "triángulos". Si uno es dibujar una primitiva en blanco contra un fondo negro, es posible diseñar una primitiva que tenga bordes difusos, logrando algún tipo de anti-aliasing. Sin embargo, este enfoque tiene dificultades para tratar con 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 de subpíxeles. El enfoque inicial (y con menos memoria) utilizó 16 bits adicionales por píxel, en una cuadrícula de 4 × 4. Si uno rinde las primitivas en un orden cuidadoso, tal como delantero-a-detrás, es posible crear una imagen razonable.