En los gráficos por computadora , la composición alfa o la combinación alfa es el proceso de combinar una imagen con un fondo para crear la apariencia de transparencia parcial o total . A menudo es útil renderizar elementos de imagen (píxeles) en pasadas o capas separadas y luego combinar las imágenes 2D resultantes en una única imagen final llamada compuesta . La composición se usa ampliamente en películas cuando se combinan elementos de imagen renderizados por computadora con metraje en vivo . La mezcla alfa también se utiliza en gráficos de computadora 2D para poner rasterizados elementos de primer plano sobre un fondo.
Para combinar correctamente los elementos de imagen de las imágenes, es necesario mantener un mate asociado para cada elemento además de su color. Esta capa mate contiene la información de cobertura, la forma de la geometría que se dibuja, lo que permite distinguir entre las partes de la imagen donde se dibujó algo y las partes que están vacías.
Aunque la operación más básica de combinar dos imágenes es colocar una sobre la otra, existen muchas operaciones, o modos de fusión , que se utilizan.
Descripción
Para almacenar información mate , el concepto de canal alfa fue introducido por Alvy Ray Smith a fines de la década de 1970 y completamente desarrollado en un artículo de 1984 por Thomas Porter y Tom Duff . [1] En una imagen 2D, se almacena una combinación de colores para cada elemento de la imagen (píxel). Los datos adicionales para cada píxel se almacenan en el canal alfa con un valor que varía de 0 a 1. Un valor de 0 significa que el píxel es completamente transparente y no proporciona ninguna información de cobertura; es decir, no hay oclusión en la ventana de píxeles de la imagen porque la geometría no se superpone a este píxel. Un valor de 1 significa que el píxel es completamente opaco porque la geometría se superpone completamente a la ventana de píxeles.
Con la existencia de un canal alfa, es posible expresar operaciones de composición de imágenes utilizando un álgebra de composición . Por ejemplo, dadas dos imágenes A y B, la operación de composición más común es combinar las imágenes para que A aparezca en primer plano y B aparezca en segundo plano. Esto se puede expresar como A sobre B. Además de over , Porter y Duff definieron los operadores de composición en , sostenido por (la frase se refiere al matting de reserva y generalmente se abrevia out ), encima y xor (y los operadores inversos rover , rin , rout y ratop ) a partir de una consideración de opciones al combinar los colores de dos píxeles cuando su cobertura está, conceptualmente, superpuesta ortogonalmente:
Como ejemplo, el operador over se puede lograr aplicando la siguiente fórmula a cada píxel:
Aquí , y representan los componentes de color de los píxeles en el resultado, imagen A e imagen B respectivamente, aplicados a cada canal de color (rojo / verde / azul) individualmente, mientras que , y son los valores alfa de los píxeles respectivos.
El operador over es, en efecto, la operación de pintura normal (consulte el algoritmo de Painter ). Bruce A. Wallace derivó el operador sobre la base de un modelo de reflectancia / transmitancia física , a diferencia del enfoque geométrico de Duff. [2] Los en y fuera operadores son el alfa de composición equivalente de recorte . Los dos usan solo el canal alfa de la segunda imagen e ignoran los componentes de color.
Directo versus premultiplicado
Si se utiliza un canal alfa en una imagen, hay dos representaciones comunes disponibles: alfa directo (no asociado) y alfa premultiplicado (asociado).
Con alfa directo , los componentes RGB representan el color del objeto o píxel, sin tener en cuenta su opacidad.
Con alfa premultiplicado , los componentes RGB representan la emisión del objeto o píxel y el alfa representa la oclusión. El operador over se convierte entonces en:
Una ventaja más obvia de esto es que, en ciertas situaciones, puede guardar una multiplicación posterior (por ejemplo, si la imagen se usa muchas veces durante la composición posterior). Sin embargo, las ventajas más significativas de usar alfa premultiplicado son la corrección y la simplicidad en lugar del rendimiento: el alfa premultiplicado permite el filtrado y la combinación correctos. Además, el alfa premultiplicado permite codificar regiones de fusión alfa regular y regiones con modo de fusión aditivo dentro de la misma imagen. [3]
Suponiendo que el color del píxel se expresa utilizando tuplas RGBA rectas (no premultiplicadas) , un valor de píxel de (0, 0.7, 0, 0.5) implica un píxel que tiene el 70% de la intensidad máxima de verde y el 50% de opacidad. Si el color fuera completamente verde, su RGBA sería (0, 1, 0, 0.5).
Sin embargo, si este píxel utiliza alfa premultiplicado, todos los valores RGB (0, 0,7, 0) se multiplican, o se escalan para la oclusión, por el valor alfa 0,5, que se agrega para producir (0, 0,35, 0, 0,5). En este caso, el valor de 0,35 para el canal G indica realmente un 70% de intensidad de emisión verde (con un 50% de oclusión). Una emisión verde pura se codificaría como (0, 0.5, 0, 0.5). Saber si un archivo usa alfa directo o premultiplicado es esencial para procesarlo o componerlo correctamente, ya que se requiere un cálculo diferente. También es completamente aceptable tener una emisión expresa triplete RGBA sin oclusión, como (0.4, 0.3, 0.2, 0.0). Los fuegos y llamas, resplandores, bengalas y otros fenómenos similares solo se pueden representar usando alfa asociado / premultiplicado.
La única diferencia importante está en el rango dinámico de la representación del color en los cálculos numéricos de precisión finita (que está en todas las aplicaciones): el alfa premultiplicado tiene una representación única para píxeles transparentes, evitando la necesidad de elegir un "color claro" o artefactos resultantes como franjas de borde (véanse los párrafos siguientes). En una imagen alfa asociada / premultiplicada, el RGB representa la cantidad de emisión, mientras que el alfa es la oclusión. El alfa premultiplicado tiene algunas ventajas prácticas sobre la mezcla alfa normal porque la interpolación y el filtrado dan resultados correctos. [4]
La interpolación ordinaria sin alfa premultiplicado conduce a que la información RGB se filtre fuera de las regiones completamente transparentes (A = 0), aunque esta información RGB es idealmente invisible. Al interpolar o filtrar imágenes con bordes abruptos entre regiones transparentes y opacas, esto puede resultar en bordes de colores que no eran visibles en la imagen original. También se producen errores en áreas de semitransparencia porque los componentes RGB no están ponderados correctamente, lo que da una ponderación incorrectamente alta al color de los píxeles más transparentes (alfa inferior).
La premultiplicación puede reducir la precisión relativa disponible en los valores RGB cuando se usa una representación de punto fijo o entero para los componentes de color, lo que puede causar una pérdida notable de calidad si la información de color se aclara más tarde o si se elimina el canal alfa. En la práctica, esto normalmente no se nota porque durante las operaciones de composición típicas, como OVER, la influencia de la información de color de baja precisión en áreas de alfa bajo en la imagen de salida final (después de la composición) se reduce correspondientemente. Esta pérdida de precisión también hace que las imágenes premultiplicadas sean más fáciles de comprimir usando ciertos esquemas de compresión, ya que no registran las variaciones de color ocultas dentro de las regiones transparentes y pueden asignar menos bits para codificar áreas de bajo alfa. Las mismas "limitaciones" de profundidades de bits de cuantificación más bajas, como 8 bits por canal, también están presentes en las imágenes sin alfa, y este argumento es problemático como resultado.
Corrección gamma
Los valores RGB de las imágenes digitales típicas no corresponden directamente a las intensidades de luz física, sino que están comprimidos por una función de corrección de gamma :
Esta transformación utiliza mejor el número limitado de bits en la imagen codificada eligiendo que se adapta mejor a la percepción humana no lineal de la luminancia.
En consecuencia, los programas de computadora que se ocupan de tales imágenes deben decodificar los valores RGB en un espacio lineal (deshaciendo la compresión gamma), combinar las intensidades de luz lineal y volver a aplicar la compresión gamma al resultado: [5] [6]
Cuando se combina con alfa premultiplicado, la pre-multiplicación se realiza en un espacio lineal, antes de la compresión gamma. [7] Esto da como resultado la siguiente fórmula:
Tenga en cuenta que solo los componentes de color se someten a corrección de gamma; el canal alfa es siempre lineal.
Otros métodos de transparencia
Aunque se utilizan para fines similares, los colores transparentes y las máscaras de imagen no permiten una mezcla suave de los píxeles de la imagen superpuesta con los del fondo (solo se permiten píxeles de imagen completa o píxeles de fondo completos).
Se puede lograr un efecto similar con un canal alfa de 1 bit, como se encuentra en el modo de color alto RGBA de 16 bits del formato de archivo de imagen Truevision TGA y el modo gráfico de alto color de los adaptadores de pantalla TARGA y AT-Vista / NU-Vista relacionados. . Este modo dedica 5 bits para cada color RGB primario (RGB de 15 bits ) más un bit restante como "canal alfa".
La transparencia de Screendoor se puede utilizar para simular una oclusión parcial donde solo está disponible el alfa de 1 bit.
Para algunas aplicaciones, un solo canal alfa no es suficiente: una vidriera, por ejemplo, requiere un canal de transparencia separado para cada canal RGB para modelar la transparencia roja, verde y azul por separado. Se pueden agregar más canales alfa para aplicaciones precisas de filtración de color espectral.
Derivación analítica del operador over
Se encuentra un tercer enfoque partiendo de dos supuestos muy simples. Para simplificar, usaremos aquí la notación abreviadapara representar al operador over .
La primera suposición es que en el caso de que el fondo sea opaco (es decir, ), el operador over representa la combinación convexa de y :
El segundo supuesto es que el operador debe respetar la regla asociativa:
Ahora, supongamos que y tienen transparencias variables, mientras que es opaco. Estamos interesados en encontrar
Sabemos por la regla asociativa que lo siguiente debe ser cierto:
Lo sabemos es opaco y, por lo tanto, se sigue que es opaco, por lo que en la ecuación anterior, cada El operador se puede escribir como una combinación convexa:
Por tanto, vemos que esto representa una ecuación de la forma . Configurando y obtenemos
lo que significa que hemos obtenido analíticamente una fórmula para el alfa de salida y el color de salida de .
Se da una representación aún más compacta al notar que :
La El operador cumple todos los requisitos de un monoide no conmutativo , donde el elemento de identidad se elige de tal manera que (es decir, el elemento de identidad puede ser cualquier tupla con ).
Ver también
- Alfa a la cobertura
- Poco blit
- Modos de fusión
- Composición digital
- Máscaras de imágenes
- Rosa Mágico
- Gráficos de red portátiles
- Espacio de color RGBA
- Salpicaduras de textura
- Transparencia (gráfico)
- Color transparente en paletas
- Truevision TGA
Referencias
- ^ Porter, Thomas ; Duff, Tom (julio de 1984). "Composición de imágenes digitales" (PDF) . Gráficos por computadora SIGGRAPH . Ciudad de Nueva York, Nueva York: ACM Press. 18 (3): 253–259. doi : 10.1145 / 800031.808606 . ISBN 9780897911382. Archivado (PDF) desde el original el 29 de abril de 2011 . Consultado el 11 de marzo de 2019 .
- ^ Wallace, Bruce A. (1981). "Fusión y transformación de imágenes rasterizadas para animación de dibujos animados" . Gráficos por computadora SIGGRAPH . Ciudad de Nueva York, Nueva York: ACM Press. 15 (3): 253–262 . CiteSeerX 10.1.1.141.7875 . doi : 10.1145 / 800224.806813 . ISBN 0-89791-045-1.
- ^ "Blog de tecnología de TomF: solo pretende ser una wiki" . tomforsyth1000.github.io . Archivado desde el original el 12 de diciembre de 2017 . Consultado el 8 de mayo de 2018 .
- ^ "COMPOSICIÓN ALFA - Animationmet" . animationmet.com . Archivado desde el original el 25 de septiembre de 2019 . Consultado el 25 de septiembre de 2019 .
- ^ Minute Physics (20 de marzo de 2015). "El color de la computadora está roto" . YouTube .
- ^ Novak, John (21 de septiembre de 2016). "Lo que todo codificador debe saber sobre gamma" .
- ^ "Corrección gamma frente a píxeles premultiplicados - Søren Sandmann Pedersen" . ssp.impulsetrain.com .
enlaces externos
- Composición de imágenes digitales - Thomas Porter y Tom Duff (documento original)
- Conceptos básicos de composición de imágenes
- ¡Comprenda las extensiones de composición y color en SVG 1.2 en 30 minutos!
- Alfombra alfa y premultiplicación