Articulo de referencia

Composición alfa

Una imagen de espectro de color con un canal alfa que disminuye a cero en su base, donde se mezcla con un recorte del logotipo de Wikipedia utilizado como fondo. En gráficos por...

Una imagen de espectro de color con un canal alfa que disminuye a cero en su base, donde se mezcla con un recorte del logotipo de Wikipedia utilizado como fondo.

En gráficos por computadora , la composición alfa o fusión alfa es el proceso de combinar una imagen con un fondo para crear la apariencia de transparencia parcial o total . [ 1 ] 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 sola imagen final llamada composición . La composición se usa ampliamente en el cine cuando se combinan elementos de imagen renderizados por computadora con metraje real . La fusión alfa también se usa en gráficos por computadora 2D para colocar elementos de primer plano rasterizados sobre un fondo.

Para combinar correctamente los elementos de las imágenes, es necesario conservar una máscara asociada a cada elemento, además de su color. Esta capa de máscara contiene la información de cobertura —la forma de la geometría que se está dibujando—, lo que permite distinguir entre las partes de la imagen donde se ha dibujado algo y las partes que están vacías.

Aunque la operación más básica para combinar dos imágenes consiste en superponer una sobre la otra, existen muchas operaciones, o modos de fusión , que se pueden utilizar.

Historia

El concepto de canal alfa fue introducido por Alvy Ray Smith y Ed Catmull a finales de la década de 1970 en el Laboratorio de Gráficos por Computadora del Instituto Tecnológico de Nueva York . Bruce A. Wallace derivó el mismo operador directo basado en un modelo físico de reflectancia / transmitancia en 1981. [ 2 ] Un artículo de 1984 de Thomas Porter y Tom Duff introdujo el alfa premultiplicado utilizando un enfoque geométrico. [ 3 ]

Smith explica el uso del término alfa de la siguiente manera: "Lo llamamos así debido a la fórmula clásica 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". [ 4 ] Es decir, al componer la imagen A sobre la imagen B, el valor deα{\displaystyle \alpha }En la fórmula se toma directamente del canal alfa de A.

Descripción

En una imagen 2D, se almacena una combinación de colores para cada elemento de la imagen (píxel), generalmente 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 del píxel inferior se verá a través de él. Un valor de 1 significa que el píxel es completamente 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 de modo que A aparezca en primer plano y B en segundo plano. Esto se puede expresar como A sobre B. Además de sobre , Porter y Duff [ 3 ] definieron los operadores de composición en , hold out by (la frase se refiere a holdout matting y generalmente se abrevia out ), atop y xor (y los operadores inversos rover , rin , rout y ratop ) a partir de una consideración de las opciones para mezclar los colores de dos píxeles cuando su cobertura se superpone, conceptualmente, ortogonalmente:

Como ejemplo, el operador over se puede realizar aplicando la siguiente fórmula a cada píxel: [ 2 ]

αo= doaαa+dobαb(1αa)doo=doaαa+dobαb(1αa)αo{\displaystyle {\begin{aligned}\alpha _{o}&={\phantom {~C_{a}}}\alpha _{a}+{\phantom {C_{b}}}\alpha _{b}(1-\alpha _{a})\\C_{o}&={\frac {C_{a}\alpha _{a}+C_{b}\alpha _{b}(1-\alpha _{a})}{\alpha _{o}}}\end{aligned}}}

Aquídoo{\displaystyle C_{o}},doa{\displaystyle C_{a}}ydob{\displaystyle C_{b}}representan los componentes de color de los píxeles en el resultado de la "superposición", la imagen A y la imagen B respectivamente, aplicadas 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 píxeles respectivos.

El operador "over" es, en efecto, la operación de pintura normal (véase el algoritmo del pintor ). Los operadores " in" y "out" son el equivalente en composición alfa del recorte . Ambos utilizan únicamente el canal alfa de la segunda imagen e ignoran los componentes de color. Además, "plus" define la fusión aditiva. [ 3 ]

Directo versus premultiplicado

Si se utiliza un canal alfa en una imagen, existen dos representaciones comunes disponibles: alfa directo (no asociado) y alfa premultiplicado (asociado).

  • Con el canal alfa directo , los componentes RGB representan el color del objeto o píxel, sin tener en cuenta su opacidad. Este es el método implícito en el operador "over" de la sección anterior.
  • Con alfa premultiplicado , los componentes RGB representan la emisión del objeto o píxel, y alfa representa la oclusión. El operador over se convierte entonces en: [ 3 ]
    doo=doa+dob(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})}

Comparación

La ventaja más significativa del alfa premultiplicado es que permite una correcta mezcla, interpolación y filtrado . La interpolación ordinaria sin alfa premultiplicado provoca que la información RGB se filtre fuera de las regiones totalmente transparentes (A=0), aunque idealmente esta información RGB sea 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 se ponderan correctamente, lo que da una ponderación incorrectamente alta al color de los píxeles más transparentes (con menor alfa). [ 5 ]

También se puede utilizar alfa premultiplicado para permitir que regiones de mezcla alfa regular (por ejemplo, humo) y regiones con modo de mezcla aditivo (por ejemplo, efectos de llama y brillo) se codifiquen dentro de la misma imagen. [ 6 ] [ 7 ] Esto se representa mediante una tripleta RGBA que expresa emisión sin oclusión, como (0.4, 0.3, 0.2, 0.0).

Otra ventaja del alfa premultiplicado es el rendimiento; en ciertas situaciones, puede reducir el número de operaciones de multiplicación (por ejemplo, si la imagen se usa muchas veces durante la composición posterior). Las operaciones de Porter - Duff tienen una forma simple solo en alfa premultiplicado. [ 3 ] Algunas canalizaciones de renderizado exponen una superficie de API de "alfa directo", pero las convierten en alfa premultiplicado para mejorar el rendimiento. [ 8 ]

Una desventaja del alfa premultiplicado es que puede reducir la precisión relativa disponible en los valores RGB al usar la representación entera o de punto fijo para los componentes de color. Esto puede causar una pérdida de calidad notable si la información de color se aclara posteriormente o si se elimina el canal alfa. En la práctica, esto no suele ser perceptible 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 con bajo alfa sobre la imagen de salida final (después de la composición) se reduce correspondientemente. Esta pérdida de precisión también facilita la compresión de imágenes premultiplicadas mediante 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 con 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 imágenes sin alfa, y este argumento es problemático por lo tanto.

Ejemplos

Suponiendo que el color del píxel se expresa mediante tuplas RGBA directas (sin premultiplicación) , un valor de píxel de (0, 0.7, 0, 0.5) implica un píxel con un 70 % de la intensidad máxima de verde y un 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 añade para obtener (0, 0.35, 0, 0.5). En este caso, el valor 0.35 para el canal G indica una intensidad de emisión verde del 70 % (con un 50 % de oclusión). Una emisión verde pura se codificaría como (0, 0.5, 0, 0.5). Es fundamental saber si un archivo utiliza alfa directo o premultiplicado para procesarlo o componerlo correctamente, ya que se requiere un cálculo diferente.

La emisión sin oclusión no se puede representar en alfa puro. En este caso, no es posible realizar ninguna conversión.

Formatos de imagen que admiten canales alfa

Los formatos de imagen más populares que admiten el canal alfa son PNG y TIFF . GIF admite transparencia de 1 bit al designar una entrada de la paleta como transparente . La compatibilidad con canales alfa está presente en algunos códecs de vídeo, como Animation y Apple ProRes 4444 del formato QuickTime, o en el códec multiformato Techsmith.

El formato de archivo BMP generalmente no admite este canal; sin embargo, en diferentes formatos como 32 bits (888–8) o 16 bits (444–4) es posible guardar el canal alfa, aunque no todos los sistemas o programas pueden leerlo: se explota principalmente en algunos videojuegos [ 9 ] o aplicaciones particulares; [ 10 ] también se han creado programas específicos para la creación de estos BMP.

Corrección gamma

Mezcla alfa, sin tener en cuenta la corrección gamma.
Mezcla alfa, teniendo en cuenta la 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 :

docodificado=dolineal1/γ{\displaystyle C_{\text{encoded}}=C_{\text{linear}}^{1/\gamma }}

Esta transformación aprovecha mejor el número limitado de bits en la imagen codificada al elegirγ{\displaystyle \gamma }que se ajusta mejor a la percepción humana no lineal de la luminancia.

En consecuencia, los programas informáticos que trabajan con dichas imágenes deben decodificar los valores RGB en un espacio lineal (deshaciendo la compresión gamma), mezclar las intensidades de luz lineales y volver a aplicar la compresión gamma al resultado: [ 20 ] [ 21 ]

doo=(doaγαa+dobγαb(1αa)αo)1/γ{\displaystyle C_{o}=\left({\frac {C_{a}^{\gamma }\alpha _{a}+C_{b}^{\gamma }\alpha _{b}(1-\alpha _{a})}{\alpha _{o}}}\right)^{1/\gamma }}

Cuando se combina con alfa premultiplicado, la premultiplicación se realiza en el espacio lineal, antes de la compresión gamma. [ 22 ] Esto da como resultado la siguiente fórmula:

doo=(doaγ+dobγ(1αa))1/γ{\displaystyle C_{o}=\left(C_{a}^{\gamma }+C_{b}^{\gamma }(1-\alpha _{a})\right)^{1/\gamma }}

Tenga en cuenta que el canal alfa puede o no someterse a corrección gamma, incluso cuando los canales de color sí lo hacen.

Otros métodos de transparencia

Aunque se utilizan con fines similares, los colores transparentes y las máscaras de imagen no permiten una fusión uniforme de los píxeles de la imagen superpuesta 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 alto RGBA de 16 bits del formato de archivo de imagen Truevision TGA y en el modo gráfico de color alto de los adaptadores de pantalla TARGA y AT-Vista/NU-Vista relacionados. Este modo dedica 5 bits a cada color RGB primario ( RGB de 15 bits ) más un bit restante como "canal alfa".

El tramado se puede utilizar para simular una oclusión parcial cuando solo se dispone de un valor alfa de 1 bit.

Para algunas aplicaciones, un solo canal alfa no es suficiente: una vidriera , por ejemplo, requiere un canal de transparencia independiente para cada canal RGB, con el fin de modelar la transparencia del rojo, el verde y el azul por separado. Se pueden añadir más canales alfa para aplicaciones de filtrado de color espectral más precisas.

Algunos métodos de transparencia independientes del orden reemplazan el operador de sobre con una aproximación conmutativa. [ 23 ]

Véase también

Referencias

  1. "Definición de fusión alfa" . PCMAG . Consultado el 7 de agosto de 2021 .
  2. 1 2 Wallace, Bruce A. (1981). "Fusión y transformación de imágenes rasterizadas para animación de dibujos animados" . Actas de la 8.ª conferencia anual sobre gráficos por computadora y técnicas interactivas - SIGGRAPH '81 . Vol. 15. Ciudad de Nueva York, Nueva York: ACM Press. pp. 253–262 . CiteSeerX 10.1.1.141.7875 . doi : 10.1145/800224.806813 . ISBN    0-89791-045-1. S2CID 1147910 . 
  3. 1 2 3 4 5 Porter, Thomas ; Duff, Tom (julio de 1984). "Composición de imágenes digitales" (PDF) . Actas de la 11.ª conferencia anual sobre gráficos por computadora y técnicas interactivas - SIGGRAPH '84 . Vol. 18. Ciudad de Nueva York, Nueva York: ACM Press. págs. 253–259 . doi : 10.1145/800031.808606 . ISBN   9780897911382. S2CID 18663039 . Archivado (PDF) del original el 29-04-2011 . Recuperado el 11-03-2019 . 
  4. Alvy Ray Smith (15 de agosto de 1995). "Alpha y la historia de la composición digital" (PDF) . alvyray.com . pág. 6. Archivado del original (PDF) el 25 de octubre de 2021. 
  5. "Mezcla alfa: ¿Preprocesar o no preprocesar?" . NVIDIA Developer . 31 de enero de 2013. Sin embargo, sucede algo interesante cuando generamos el siguiente nivel de mipmap...
  6. "Blog de tecnología de TomF: solo pretende ser una wiki" . Blog de tecnología de TomF: solo pretende ser una wiki . Archivado del original el 12 de diciembre de 2017. Consultado el 8 de mayo de 2018 .
  7. Trebilco, Damian. "Demasiado cerca de la llamada de dibujo (presentación sobre alfa pre-multiplicado)" . GitHub . Al cambiar al modo de mezcla pre-multiplicado para todos los efectos de partículas, toda la escena se puede hacer con una llamada de dibujo (suponiendo atlasing/matriz 2D para las texturas)... Otro truco ingenioso con el alfa pre-multiplicado es que si tienes texturas superpuestas que están en posiciones conocidas, puedes preprocesarlas todas hasta convertirlas en una sola textura.
  8. "Alfa premultiplicado" . Win2D para WinUI3 . Consultado el 30 de junio de 2023. Win2D utiliza alfa directo en su superficie de API, pero alfa premultiplicado para operaciones de renderizado internas.
  9. "Creación de texturas" . www.echos.ch . Consultado el 25 de mayo de 2023 .
  10. "Formatos extendidos" . 4 de marzo de 2016. Archivado del original el 4 de marzo de 2016. Consultado el 25 de mayo de 2023 .
  11. Lambrecht, Jordan (31 de diciembre de 2022). "Lista de formatos de vídeo/imagen que admiten canales alfa" . Pixel Bakery Design Studio . Consultado el 25 de mayo de 2023 .
  12. "Final Cut Pro 6 - Compatibilidad con formatos amplios" . apple.com . Archivado del original el 8 de junio de 2011. Consultado el 13 de agosto de 2024 .
  13. Jie Dong (19 de junio de 2010). "Primera reunión JCT-VC, Dresde, Alemania" . H265.net. Archivado del original el 25 de junio de 2010. Consultado el 13 de agosto de 2024 .
  14. Jie Dong (1 de julio de 2008). "Estado actual de H.265 (a julio de 2008)" . H265.net. Archivado del original el 12 de julio de 2008. Consultado el 13 de agosto de 2024 .
  15. Yu Liu (15 de abril de 2009). "Requisitos preliminares para NGVC" . H265.net. Archivado del original el 13 de mayo de 2009. Consultado el 13 de agosto de 2024 .
  16. "Formato de vídeo AV1 | ¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." . caniuse.com . Consultado el 25/05/2023 .
  17. "Radiodifusión de audio digital (DAB); Presentación de diapositivas MOT; Especificación de la aplicación de usuario (pdf)" (PDF) . ETSI . Consultado el 13 de agosto de 2024 .
  18. "Especificación SVG, "Color"" . Consorcio World Wide Web. 14 de enero de 2003. Archivado del original el 7 de septiembre de 2009. Consultado el 13 de agosto de 2024 .
  19. @chromium.org, de... (24-08-2022). "Soporte de decodificación JPEG XL (image/jxl) en blink (seguimiento de error)" . bugs.chromium.org . Consultado el 13-08-2024 .
  20. Minute Physics (20 de marzo de 2015). "El color de la computadora está roto" . YouTube . Archivado del original el 22 de noviembre de 2021.
  21. Novak, John (21 de septiembre de 2016). "Lo que todo programador debería saber sobre gamma" .
  22. ^ "Corrección gamma frente a píxeles premultiplicados: Søren Sandmann Pedersen" . ssp.impulsetrain.com .
  23. McGuire, Morgan; Bavoil, Louis (2013). "Transparencia ponderada independiente del orden" . Journal of Computer Graphics Techniques . 2 (2): 122– 141.
  • Composición de imágenes digitales - Thomas Porter y Tom Duff (Artículo original)
  • Fundamentos de la composición de imágenes
  • ¡Aprende a usar las extensiones de composición y color en SVG 1.2 en 30 minutos!
  • Matización alfa y premultiplicación