Ir al contenido

Suavizado espacial

De Wikipedia, la enciclopedia libre

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

[editar]
(a)
(b)
(c)
Figura 1
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 un 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, el cual es normalmente el efecto deseado cuándo la resolución es insuficiente para mostrar todos los detalle. Incluso cerca de la parte inferior de la imagen, los bordes aparecen mucho más suave en la imagen con el filtro anti-aliasing. Figura 1-c muestra otro tipo de filtrado anti-aliasing, un algoritmo basado en el sinc filtro, el cual está considerado mejor propuesta que el algoritmo utilizado en 1-b.[1]

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

Arriba 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 5x
Figura 3

Aproximación más sencilla al anti-aliasing

[editar]

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

[editar]

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

[editar]
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.

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

[editar]

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.

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 tal como OpenGL, los métodos más recientes tienen simplemente dos o más subpípedos completos por píxel, incluyendo información de color completo para cada subpíxel. Alguna información puede ser compartida entre los subpíxeles (como el Z-buffer).

Mipmapping

[editar]

También hay un enfoque especializado para el mapeo de texturas llamado mipmapping, que funciona creando versiones de filtro de textura de menor resolución y pre-filtrado. Al renderizar la imagen, se elige el mipmap de resolución apropiada y por lo tanto los píxeles de textura (texels) ya están filtrados cuando llegan a la pantalla. Mipmapping se combina generalmente con varias formas de filtrado de textura con el fin de mejorar el resultado final.

Un ejemplo de una imagen con aliasing pseudo-aleatorio extremo

[editar]

Debido a que los fractales tienen un detalle ilimitado y ningún ruido que no sea un error aritmético de redondeo, ilustran el aliasing más claramente que las fotografías u otros datos medidos. Los tiempos de escape, que se convierten a los colores en los centros exactos de los píxeles, van al infinito en el borde del conjunto, por lo que los colores de los centros cerca de las fronteras 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 sube a su velocidad de muestreo original. (Puesto que la mayoría de los antialias actuales del software, uno puede tener que descargar la versión del mismo tamaño para ver todo el aliasing.) La segunda imagen se calcula en cinco veces la tarifa de muestreo y down-sampleed con anti-aliasing. Suponiendo que uno realmente quisiera algo como el color promedio sobre cada píxel, éste se está acercando. Es claramente más ordenado que el primero.

Para correctamente comparar estas imágenes, viéndoles en llenos-la escala es necesaria.

Sucede que, en este caso, hay información adicional que se puede utilizar. Al volver a calcular con un algoritmo de "estimador de distancia", se identificaron puntos que están muy cerca del borde del conjunto, de manera que un detalle inusualmente fino es aliado desde los tiempos de escape rápidamente cambiantes cerca del borde del conjunto. Los colores derivados de estos puntos calculados han sido identificados como inusualmente no representativos de sus píxeles. El conjunto cambia más rápidamente allí, por lo que una muestra de punto único es menos representativa de todo el píxel. Esos puntos fueron reemplazados, en la tercera imagen, interpolando los puntos alrededor de ellos. 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 en un fondo gris, se muestran en la cuarta imagen.

Finalmente, "Budding Turbines" es tan regular que el aliasing sistemático (Moiré) se puede ver claramente cerca del eje principal de la turbina cuando se reduce el tamaño tomando el pixel más cercano. El aliasing en la primera imagen aparece aleatorio porque viene de todos los niveles de detalle, debajo del tamaño de píxel. Cuando se suprime el aliasing de nivel inferior, para hacer la tercera imagen y luego se muestra de nuevo una vez más, sin anti-aliasing, para hacer la quinta imagen, el orden en la escala de la tercera imagen aparece como aliasing sistemático en el quinto imagen.

El muestreo descendente puro de una imagen tiene el siguiente efecto (se recomienda ver a escala completa):

Super muestreo / anti-aliasing de escena-completa

[editar]

El anti-aliasing de súper muestreo (SSAA), también denominado anti-aliasing de escena completa (FSAA), se utiliza para evitar el aliasing (o "jaggies") en imágenes de pantalla completa. SSAA fue el primer tipo de anti-aliasing disponible con las primeras tarjetas de video. Pero debido a su tremendo coste computacional y el advenimiento del soporte anti-aliasing multi muestreo (MSAA) en GPUs, ya no es ampliamente utilizado en aplicaciones en tiempo real. MSAA proporciona una calidad gráfica algo inferior, pero también ahorros en potencia computacional.

La imagen resultante de SSAA puede parecer más suave, y también debe aparecer más realista. Sin embargo, si bien es útil para imágenes fotográficas, un enfoque anti-aliasing simple (como el super-muestreo y el promedio) puede empeorar la apariencia de algunos tipos de líneas de arte o diagramas (haciendo que la imagen aparezca borrosa), especialmente donde la mayoría Las líneas son horizontales o verticales. En estos casos, puede ser útil un paso anterior de ajuste de rejilla

En general, el super-muestreo es una técnica de recolección de puntos de datos con una mayor resolución (usualmente por una potencia de dos) que la resolución final de los datos. Estos puntos de datos se combinan entonces (con muestreo descendente) a la resolución deseada, a menudo simplemente por un promedio simple. Los puntos de datos combinados tienen artefactos de aliasing menos visibles (o patrones de moiré).

El anti-aliasing de escena completa por súper muestreo normalmente significa que cada fotograma completo se renderiza a doble (2x) o cuádruple (4x) la resolución de la pantalla, y luego se muestrea a la baja para que coincida con la resolución de la pantalla. Por lo tanto, una FSAA de 2x produciría 4 píxeles super-muestreados para cada píxel individual de cada trama. La renderización en resoluciones más grandes producirá mejores resultados; Sin embargo, se necesita más potencia del procesador, lo que puede degradar el rendimiento y la velocidad de fotogramas. A veces, FSAA se implementa en hardware de tal manera que una aplicación gráfica no sabe que las imágenes están siendo super-muestreadas y luego muestreadas antes de ser mostradas.

Anti-aliasing basado en objeto

[editar]

Un sistema de representación gráfica crea una imagen basada en objetos construidos con primitivas poligonales; Los efectos de aliasin en la imagen se pueden reducir aplicando un esquema anti-aliasing solamente a las áreas de la imagen que representan los bordes de la silueta de los objetos. Los bordes de la silueta son anti-alias mediante la creación de anti-aliasing primitivas que varían en opacidad. Estas primitivas anti-aliasing se unen a los bordes silueteados, y crean una región en la imagen donde los objetos parecen mezclarse en el fondo. El método tiene algunas ventajas importantes sobre los métodos clásicos basados en el amortiguador de acumulación ya que genera suavizado de escena completa en sólo dos pasadas y no requiere el uso de memoria adicional requerida por el tampón de acumulación. El anti-aliasing basado en objetos fue desarrollado por primera vez en Silicon Graphics para su estación de trabajo Indy.

Anti-aliasing y compresión gamma

[editar]

Las imágenes digitales suelen almacenarse en un formato comprimido gamma, pero la mayoría de los filtros ópticos anti-alias son lineales. Por lo tanto, para muestrear una imagen de manera que coincida con la difuminación óptica, primero debe convertirla a un formato lineal, luego aplicar el filtro anti-aliasing y finalmente convertirlo de nuevo a un formato comprimido gamma. El uso de la aritmética lineal en una imagen comprimida gamma da como resultado valores que son ligeramente diferentes del filtro ideal. Este error es mayor cuando se trata de zonas de alto contraste, haciendo que las zonas de alto contraste se vuelvan más oscuras: los detalles brillantes (como los bigotes de un gato) se vuelven visualmente más delgados y los detalles oscuros (como las ramas de los árboles) Imagen de alias. Debido a que la conversión hacia y desde un formato lineal ralentiza mucho el proceso, y debido a que las diferencias son usualmente sutiles, casi todo el software de edición de imágenes, incluyendo Final Cut Pro, Adobe Photoshop y GIMP, procesan imágenes en el dominio comprimido gamma.

Historia

[editar]

Trabajos tempranos importantes en la historia de anti-aliasing incluye:

Véase también

[editar]

Referencias

[editar]
  1. Leler, William J. (July 1980). «Human Vision, Anti-aliasing, and the Cheap 4000 Line Display». ACM SIGGRAPH Computer Graphics 14 (3): 308-313. doi:10.1145/965105.807509. 

Enlaces externos

[editar]