stringtranslate.com

Antialiasing espacial

En el procesamiento de señales digitales , el suavizado 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 más baja. El suavizado se utiliza en fotografía digital , gráficos por computadora , audio digital y muchas otras aplicaciones.

Anti-aliasing significa eliminar componentes de la señal que tienen una frecuencia más alta que la que el dispositivo de grabación (o muestreo) puede resolver adecuadamente. Esta eliminación se realiza antes de (re)muestrear a una resolución más baja. Cuando el muestreo se realiza sin eliminar esta parte de la señal, se producen artefactos no deseados, como ruido en blanco y negro.

En la adquisición de señales y audio, el suavizado a menudo se realiza utilizando un filtro antialiasing analógico para eliminar el componente fuera de banda de la señal de entrada antes del muestreo con un convertidor de analógico a digital . En la fotografía digital, los filtros ópticos antialiasing fabricados con materiales birrefringentes suavizan la señal en el dominio óptico espacial. El filtro anti-aliasing esencialmente desenfoca ligeramente la imagen para reducir la resolución a o por debajo de la que puede lograr el sensor digital (cuanto mayor sea el tamaño de píxel , menor será la resolución alcanzable a nivel del sensor).

Ejemplos

En los gráficos por computadora, el suavizado mejora la apariencia de los bordes de los polígonos "irregulares", o " dientes ", para que se suavicen en la pantalla. Sin embargo, genera un costo de rendimiento para la tarjeta gráfica y utiliza más memoria de video . El nivel de suavizado determina qué tan suaves son los bordes del polígono (y cuánta memoria de video consume).

Cerca de la parte superior de una imagen con un patrón de tablero de ajedrez que se aleja, la imagen es difícil de reconocer y no es estéticamente atractiva. Por el contrario, cuando se aplica el suavizado, el tablero de ajedrez cerca de la parte superior se funde con el gris, que suele ser el efecto deseado cuando la resolución es insuficiente para mostrar los detalles. 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 anti-aliasing. [1] Cuando se amplía, se puede ver cómo el suavizado interpola el brillo de los píxeles en los límites para producir píxeles grises , ya que el espacio está ocupado por mosaicos blancos y negros. Esto ayuda a que la imagen suavizada del filtro de sincronización parezca mucho más suave que la original.

Izquierda: una versión con alias de una forma simple. Derecha: una versión suavizada de la misma forma.

En una imagen de diamante simple, el suavizado fusiona los píxeles de los límites; esto reduce el efecto estéticamente discordante de los límites nítidos y escalonados que aparecen en el gráfico con alias.

El suavizado se aplica a menudo al representar texto en la pantalla de una computadora, para sugerir contornos suaves que emulen mejor la apariencia del texto producido por la impresión convencional con 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 subpíxeles como ClearType . La representación de subpíxeles requiere filtros anti-aliasing especiales con equilibrio de color 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 antialiasing basado en hardware como se hace en el controlador de pantalla de la computadora portátil OLPC XO-1 . La geometría de los píxeles afecta a todo esto, ya sea que el suavizado y el direccionamiento de subpíxeles se realicen en software o hardware.

El enfoque más sencillo para el suavizado

El enfoque más básico para suavizar un píxel es determinar qué porcentaje del píxel está ocupado por una región determinada en el gráfico vectorial (en este caso, un cuadrado del tamaño de un píxel, posiblemente transpuesto en varios píxeles) y utilizar ese porcentaje como color. .

Se puede realizar un trazado muy básico de un único punto suavizado blanco sobre negro utilizando ese método de la siguiente manera:

def  plot_antialiased_point ( x :  float ,  y :  float ): """Gráfico de un único punto suavizado blanco sobre negro.""" para rounded_x en el piso ( x ) al techo ( x ): para rounded_y en el piso ( y ) al techo ( y ): porcentaje_x = 1 - abs ( x - rounded_x ) percent_y = 1 - abs ( y - rounded_y ) porcentaje = percent_x * percent_y draw_pixel ( coordenadas = ( redondeado_x , redondeado_y ), color = porcentaje ( rango 0 - 1 ))                                     

Este método generalmente es 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 restringidas por píxeles, como gráficos 3D. Es una función bastante rápida, pero es de calidad relativamente baja 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, este probablemente no sea el mejor enfoque.

Nota: La draw_pixelrutina 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 malo. 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 debe ser 0,95, no 0,05.

Para formas más sofisticadas, el algoritmo puede generalizarse representando la forma en una cuadrícula de píxeles con una resolución más alta que la superficie de visualización de destino (generalmente un múltiplo que es una potencia de 2 para reducir la distorsión) y luego usando la interpolación bicúbica para determinar la intensidad promedio. de cada píxel real en la superficie de visualización.

Enfoque de procesamiento de señales para el antialiasing

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. Lo ideal sería comprender cómo el cerebro humano procesaría la señal original y proporcionar una imagen en pantalla que produzca la respuesta más similar del cerebro.

La herramienta analítica más aceptada para estos problemas es la transformada de Fourier ; esto descompone una señal en funciones básicas 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 números enteros arbitrarios no negativos . También hay componentes de frecuencia que involucran 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 frecuencia de Nyquist , de modo que la señal sea representada con precisión por sus muestras, o casi, de acuerdo con el teorema de muestreo ; Hay muchas opciones diferentes de algoritmos detallados, 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.

Consideraciones bidimensionales

Función Sinc, con X e Y separados

La discusión anterior supone que el muestreo de malla rectangular es la parte dominante del problema. El filtro normalmente considerado óptimo no es rotacionalmente simétrico, como se muestra en esta primera figura; Esto se debe a que los datos se muestrean en una red cuadrada , no utilizando una imagen continua. Este patrón de muestreo es la justificación para realizar el procesamiento de señales a lo largo de cada eje, como se realiza 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 funciones de interpolación o filtro rotacionalmente simétrico, como si los datos fueran una función bidimensional de x e y continuas. 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 del sinc unidimensional es la amplitud del disco de Airy bidimensional , la transformada de Fourier 2D de una región circular en un espacio de frecuencia 2D, a diferencia de una región cuadrada.

Función gaussiana más diferencial

Se podría considerar un gaussiano más suficiente cantidad de su segunda derivada para aplanar la parte superior (en el dominio de la frecuencia) o afinarla (en el dominio espacial), como se muestra. Las funciones basadas en la función gaussiana son opciones naturales, porque la convolución con una gaussiana da otra gaussiana ya sea que se aplique a xey o al radio. Al igual que las wavelets, otra de sus propiedades es que se encuentra a medio camino entre localizarse 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 extendida para preservar el máximo detalle posible y, por lo tanto, se agrega la segunda derivada.

Por ejemplo, al imprimir un negativo fotográfico con abundante capacidad de procesamiento y en una impresora con un patrón hexagonal, no hay razón para utilizar la función de interpolación sinc. Tal interpolación trataría las líneas diagonales de manera diferente a las líneas horizontales y verticales, lo cual es como una forma débil de aliasing.

Aproximaciones prácticas de suavizado en tiempo real

Solo hay un puñado de primitivas utilizadas en el nivel más bajo en un motor de renderizado en tiempo real (ya sea acelerado por software o hardware). Estos incluyen "puntos", "líneas" y "triángulos". Si uno va a dibujar una primitiva de este tipo en blanco sobre un fondo negro, es posible diseñar dicha primitiva para que tenga bordes borrosos, logrando algún tipo de suavizado. 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 el que consume menos memoria) utilizó 16 bits adicionales por píxel, en una cuadrícula de 4 × 4. Si se representan las primitivas en un orden cuidadoso, como de adelante hacia atrá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 como OpenGL , los métodos más recientes simplemente tienen dos o más subpíxeles completos por píxel, incluida información de color completo para cada subpíxel. Es posible que parte de la información se comparta entre los subpíxeles (como el búfer Z ).

mapeo mip

También existe un enfoque especializado para el mapeo de texturas llamado mipmapping , que funciona creando versiones prefiltradas y de menor resolución del mapa de texturas. Al renderizar la imagen, se elige el mapa MIP de resolución adecuada y, por lo tanto, los píxeles de textura (texels) ya están filtrados cuando llegan a la pantalla. El mipmapping generalmente se combina con varias formas de filtrado de texturas para mejorar el resultado final.

Ejemplo de una imagen con aliasing pseudoaleatorio extremo

Debido a que los fractales tienen detalles ilimitados y ningún ruido más que el error de redondeo aritmético, ilustran el aliasing más claramente 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, llegan al infinito en el borde del conjunto, por lo que los colores de los centros cercanos a los bordes son impredecibles debido al alias. Este ejemplo tiene bordes en aproximadamente la mitad de sus píxeles, por lo que muestra mucho alias. La primera imagen se carga a su frecuencia de muestreo original. (Dado que la mayoría de los software anti-aliasing son modernos, es posible que sea necesario descargar la versión de tamaño completo para ver todos los aliasing). La segunda imagen se calcula a cinco veces la frecuencia de muestreo y se reduce la muestra con suavizado. Suponiendo que a uno realmente le gustaría algo como el color promedio sobre cada píxel, este se está acercando. Es claramente más ordenado que el primero.

Para comparar adecuadamente estas imágenes, es necesario verlas a escala completa.

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 modo que los detalles inusualmente finos se solapan con los tiempos de escape que cambian rápidamente cerca del borde del conjunto. Los colores derivados de estos puntos calculados se han identificado como inusualmente no representativos de sus píxeles. El conjunto cambia más rápidamente allí, por lo que una muestra de un solo punto es menos representativa de todo el píxel. Esos puntos fueron reemplazados, en la tercera imagen, interpolando los puntos a su alrededor. Esto reduce el ruido de la imagen pero tiene el efecto secundario de aclarar los colores. Entonces 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ó, en la cuarta imagen se muestran los puntos rechazados, mezclados con un fondo gris.

Finalmente, "Budding Turbines" es tan regular que se puede ver claramente un alias sistemático (Moiré) cerca del "eje de la turbina" principal cuando se reduce su tamaño tomando el píxel más cercano. El alias en la primera imagen parece aleatorio porque proviene de todos los niveles de detalle, por debajo del tamaño de píxel. Cuando se suprime el alias de nivel inferior, para crear la tercera imagen y luego se vuelve a muestrear hacia abajo, sin suavizado, para crear la quinta imagen, el orden en la escala de la tercera imagen aparece como alias sistemático en la quinta. imagen.

La reducción pura de una imagen tiene el siguiente efecto (se recomienda verla a escala completa):

Súper muestreo/antialiasing de escena completa

Antialiasing de súper muestreo (SSAA) , [2] también llamado antialiasing de escena completa (FSAA), [3] se utiliza para evitar aliasing (o " jaggies ") en imágenes de pantalla completa. [4] SSAA fue el primer tipo de suavizado disponible con las primeras tarjetas de video. Pero debido a su tremendo costo computacional y la llegada del soporte anti-aliasing multimuestra (MSAA) en las GPU, ya no se usa ampliamente en aplicaciones en tiempo real. MSAA proporciona una calidad gráfica algo inferior, pero también un enorme ahorro en potencia computacional.

La imagen resultante de SSAA puede parecer más suave y también debería parecer más realista. Sin embargo, si bien es útil para imágenes tipo fotografía, un enfoque simple de suavizado (como el supermuestreo y luego el promedio) en realidad puede empeorar la apariencia de algunos tipos de arte lineal o diagramas (haciendo que la imagen parezca borrosa), especialmente donde la mayoría Las líneas son horizontales o verticales. En estos casos, puede resultar útil un paso previo de ajuste de la red (ver sugerencias ).

En general, el supermuestreo es una técnica para recopilar puntos de datos con una resolución mayor (generalmente una potencia de dos) que la resolución de datos final. Estos puntos de datos luego se combinan (se reducen de muestreo) hasta la resolución deseada, a menudo simplemente mediante un promedio simple . Los puntos de datos combinados tienen artefactos de aliasing menos visibles (o patrones muaré ).

El suavizado de escena completa mediante supermuestreo generalmente significa que cada fotograma completo se representa al doble (2x) o al cuádruple (4x) de la resolución de la pantalla y luego se reduce el muestreo para que coincida con la resolución de la pantalla. Por lo tanto, un FSAA 2x generaría 4 píxeles supermuestreados por cada píxel de cada cuadro. La renderización con resoluciones mayores 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 se da cuenta de que las imágenes están siendo supermuestreadas y luego reducidas antes de mostrarse.

Antialiasing basado en objetos

Un sistema de representación de gráficos crea una imagen basada en objetos construidos con primitivas poligonales; Los efectos de alias en la imagen se pueden reducir aplicando un esquema de suavizado solo a las áreas de la imagen que representan los bordes de la silueta de los objetos. Los bordes de la silueta tienen suavizado mediante la creación de primitivas de suavizado que varían en opacidad. Estas primitivas de suavizado se unen a los bordes silueteados y crean una región en la imagen donde los objetos parecen mezclarse con el fondo. El método tiene algunas ventajas importantes sobre los métodos clásicos basados ​​en el búfer de acumulación [ aclaración necesaria ] ya que genera suavizado de escena completa en solo dos pasadas y no requiere el uso de memoria adicional requerida por el búfer de acumulación. El suavizado basado en objetos se desarrolló por primera vez en Silicon Graphics para su estación de trabajo Indy .

Antialiasing y compresión gamma

Las imágenes digitales generalmente se almacenan en un formato comprimido gamma , pero la mayoría de los filtros ópticos antialiasing son lineales. Entonces, para reducir la muestra de una imagen de una manera que coincida con el desenfoque óptico, primero se debe convertir a un formato lineal, luego aplicar el filtro anti-aliasing y finalmente convertirla nuevamente a un formato comprimido gamma. [5] El uso de 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 áreas de alto contraste, lo que hace que las áreas 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) se vuelven más gruesos, en relación con las áreas ópticamente antirreflejos. imagen con alias. [6] Cada píxel se distorsiona individualmente, lo que significa que los contornos se vuelven poco suaves después del suavizado. Debido a que la conversión hacia y desde un formato lineal ralentiza enormemente el proceso, y debido 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 imágenes en el dominio comprimido gamma.

La mayoría de las GPU modernas admiten el almacenamiento de texturas en la memoria en formato sRGB y pueden realizar transformaciones al espacio lineal y viceversa de forma transparente, prácticamente sin pérdida de rendimiento.

Historia

Los primeros trabajos importantes en la historia del suavizado incluyen:

Ver también

Referencias

  1. ^ Leler, William J. (julio de 1980). "Visión humana, suavizado y visualización económica de 4000 líneas". Gráficos por computadora ACM SIGGRAPH . 14 (3): 308–313. doi :10.1145/965105.807509.
  2. ^ "Radeon HD 5870 de AMD: generando la próxima generación de GPU". AnandTech.com.
  3. ^ Jason Gregory, Jeff Lander (2009). Arquitectura del motor de juego. AK Peters, Ltd. pág. 39.ISBN 978-1-56881-413-1.
  4. M. Carmen Juan Lizandra (junio de 2000). "Bibliotecas gráficas para programación en Windows". Cruce . ACM. 6 (4): 14-18. doi :10.1145/333424.333433. S2CID  15786664.
  5. ^ Maruszczyk, Cuba; Denes, György; Mantiuk, Rafal K. (2018). "Mejora de la calidad del suavizado en realidad virtual" (PDF) . EG, Reino Unido, gráficos por computadora y computación visual . S2CID  54081570. Archivado desde el original (PDF) el 18 de febrero de 2019.
  6. ^ Brasseur, Eric. "Error de gamma en el escalado de la imagen". www.4p8.com . Archivado desde el original el 23 de diciembre de 2012 . Consultado el 14 de diciembre de 2012 .

enlaces externos