Composición alfa
En gráficos por computadora, composición alfa o combinación alfa es el proceso de combinar una imagen con un fondo para crear la apariencia de transparencia parcial o total. Suele ser útil renderizar elementos de la imagen (píxeles) en pasadas o capas separadas y luego combinar las imágenes 2D resultantes en una única imagen final denominada composición. La composición se usa ampliamente en películas cuando se combinan elementos de imágenes renderizados por computadora con imágenes en vivo. La mezcla alfa también se usa en gráficos de computadora 2D para colocar elementos de primer plano rasterizados 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, se utilizan muchas operaciones o modos de combinación.
Descripción
En una imagen 2D, se almacena una combinación de colores para cada elemento de la imagen (píxel), a menudo una combinación de rojo, verde y azul (RGB). Cuando se utiliza la composición alfa, cada píxel tiene un valor numérico adicional almacenado en su canal alfa, con un valor que oscila entre 0 y 1. Un valor de 0 significa que el píxel es completamente transparente y el color en el píxel de abajo se verá a través. Un valor de 1 significa que el píxel es totalmente opaco.
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 aparece en el fondo. Esto se puede expresar como A sobre B. Además de sobre, Porter y Duff definieron los operadores de composición en, retenidos por (la frase se refiere a la estera de retención y generalmente se abrevia como out), atop 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, conceptualmente, se superpone ortogonalmente:
Como ejemplo, el operador sobre se puede lograr aplicando la siguiente fórmula a cada píxel:
- α α o=α α a+α α b()1− − α α a){displaystyle alpha _{o}=alpha _{a}+alpha _{b}(1-alpha _{a})}
- Co=Caα α a+Cbα α b()1− − α α a)α α o{displaystyle C_{o}={frac {C_{a}alpha ¿Por qué?
Aquí. Co{displaystyle C_{o}, Ca{displaystyle C_{a} y Cb{displaystyle C_{b} soporte para los componentes de color de los píxeles en el resultado, imagen A y imagen B respectivamente, aplicado a cada canal de color (rojo/verde/azul) individualmente, mientras que α α o{displaystyle alpha _{o}, α α a{displaystyle alpha _{a} y α α b{displaystyle alpha _{b} son los valores alfa de los respectivos píxeles.
El operador over es, en efecto, la operación de pintura normal (consulte Algoritmo de Painter). Bruce A. Wallace derivó el operador sobre basándose en un modelo físico de reflectancia/transmitancia, a diferencia del enfoque geométrico de Duff. Los operadores in y out son el equivalente de composición alfa del recorte. Los dos usan solo el canal alfa de la segunda imagen e ignoran los componentes de color.
Recta versus premultiplicada
Si se usa un canal alfa en una imagen, hay dos representaciones comunes disponibles: alfa directo (no asociado) y alfa premultiplicado (asociado).
- Con alfa recta, los componentes RGB representan el color del objeto o pixel, ignorando su opacidad.
- Con alfa, los componentes RGB representan la emisión del objeto o pixel, y el alfa representa la oclusión. El sobre El operador entonces se convierte en:
- Co=Ca+Cb()1− − α α a){displaystyle C_{o}=C_{a}+C_{b}(1-alpha _{a}}
- α α o=α α a+α α b()1− − α α a){displaystyle alpha _{o}=alpha _{a}+alpha _{b}(1-alpha _{a})}
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 dentro de la misma imagen regiones de mezcla alfa regular y regiones con modo de mezcla aditivo.
Suponiendo que el color del píxel se exprese mediante tuplas RGBA directas (no premultiplicadas), un valor de píxel de (0, 0,7, 0, 0,5) implica un píxel que tiene el 70 % del máximo Intensidad verde y 50% de opacidad. Si el color fuera totalmente verde, su RGBA sería (0, 1, 0, 0,5).
Sin embargo, si este píxel usa alfa premultiplicado, todos los valores RGB (0, 0,7, 0) se multiplican o 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 en realidad indica una intensidad de emisión verde del 70 % (con una oclusión del 50 %). 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 rápida de triplete RGBA sin oclusión, como (0.4, 0.3, 0.2, 0.0). Los fuegos y las llamas, los resplandores, las bengalas y otros fenómenos similares solo se pueden representar mediante alfa asociada/premultiplicada.
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 los píxeles transparentes, lo que evita la necesidad de elegir un "claro color" o artefactos resultantes tales como flecos en los bordes (ver los siguientes párrafos). 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 combinación alfa normal porque la interpolación y el filtrado dan resultados correctos.
La interpolación ordinaria sin alfa premultiplicado hace 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 generar 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 tienen la ponderación correcta, lo que otorga 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 utiliza 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 no suele notarse 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 alfa bajas 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 alfa bajo. 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, como resultado, este argumento es problemático.
Corrección gamma
Los valores RGB de las imágenes digitales típicas no se corresponden directamente con las intensidades de luz físicas, sino que se comprimen mediante una función de corrección gamma:
- Ccodificado=Clineal1/γ γ {displaystyle C_{text{encoded}=C_{text{linear}{1/gamma }
Esta transformación mejor utiliza el número limitado de bits en la imagen codificada eligiendo γ γ {displaystyle gamma } que mejor coincide con la percepción humana no lineal de la luminancia.
En consecuencia, los programas informáticos que se ocupan de este tipo de imágenes deben decodificar los valores RGB en un espacio lineal (deshacer la compresión gamma), combinar las intensidades de luz lineales y volver a aplicar la compresión gamma al resultado:
- Co=()Caγ γ α α a+Cbγ γ α α b()1− − α α a)α α o)1/γ γ {displaystyle C_{o}=left({frac {C_{a}{gamma }alpha ¿Por qué? }
Cuando se combina con alfa premultiplicado, la premultiplicación se realiza en un espacio lineal, antes de la compresión gamma. Esto da como resultado la siguiente fórmula:
- Co=()Caγ γ +Cbγ γ ()1− − α α a))1/γ γ {displaystyle C_{o}=left(C_{a}{gamma }+C_{b}{gamma }(1-alpha _{a})right)^{1/gamma }
Tenga en cuenta que solo los componentes de color se someten a la corrección 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 la combinación uniforme de los píxeles de la imagen superpuestos con los del fondo (solo se permiten píxeles de imagen completos o píxeles de fondo completos).
Se puede lograr un efecto similar con un canal alfa de 1 bit, como el que se encuentra en el modo de color RGBA de 16 bits del formato de archivo de imagen Truevision TGA y los adaptadores de pantalla TARGA y AT-Vista/NU-Vista relacionados.; modo gráfico de color alto. 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 cuando solo se dispone de 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.
Historia
El concepto de canal alfa lo introdujeron Alvy Ray Smith y Ed Catmull a fines de la década de 1970 en el laboratorio de gráficos por computadora del Instituto Tecnológico de Nueva York, y Thomas Porter y Tom Duff lo desarrollaron completamente en un artículo de 1984.
El uso del término alfa es explicado por Smith como sigue: "Lo llamamos así por la clásica fórmula de interpolación lineal α α A+()1− − α α )B{displaystyle alpha A+(1-alpha)B} que utiliza la letra griega α α {displaystyle alpha } (alfa) para controlar la cantidad de interpolación entre, en este caso, dos imágenes A y B". Es decir, al componer la imagen Una imagen superior B, el valor de α α {displaystyle alpha } en la fórmula se toma directamente del canal alfa de A.
Contenido relacionado
Sistema de conmutación electrónica
Tubo de torpedo
Pico (editor de texto)