Composición alfa

Operación en gráficos por computadora
Una imagen de espectro de color con un canal alfa que cae a cero en su base, donde se mezcla con el color de fondo.

En gráficos por computadora , la 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 . [1] A menudo es útil renderizar elementos de imagen (píxeles) en pases o capas separados y luego combinar las imágenes 2D resultantes en una única imagen final llamada composición . La composición se usa ampliamente en películas cuando se combinan elementos de imagen renderizados por computadora con metraje en vivo . La combinació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 mantener una capa mate asociada a cada elemento, además de su color. Esta capa mate 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 en las que se dibujó algo y las partes que están vacías.

Aunque la operación más básica para combinar dos imágenes es poner una sobre la otra, existen muchas operaciones, o modos de fusión , que se utilizan.

Historia

El concepto de canal alfa fue introducido por Alvy Ray Smith y Ed Catmull a fines de la década de 1970 en el Laboratorio de Gráficos Informáticos del Instituto de Tecnología de Nueva York . Bruce A. Wallace derivó el mismo operador de canal alfa 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 que utiliza la letra griega (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 encima de la imagen B, el valor de en la fórmula se toma directamente del canal alfa de A. alfa A + ( 1 alfa ) B {\displaystyle \alpha A+(1-\alpha )B} alfa {\estilo de visualización \alpha} alfa {\estilo de visualización \alpha}

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 varía de 0 a 1. Un valor de 0 significa que el píxel es completamente transparente y el color del píxel que se encuentra debajo 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 aparezca 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 , mantenido por (la frase se refiere al enmarañado de retención y generalmente se abrevia como out ), encima y xor (y los operadores inversos rover , rin , rout y ratop ) a partir de una consideración de las opciones en la combinación de los colores de dos píxeles cuando su cobertura se superpone, conceptualmente, ortogonalmente:

A modo de ejemplo, el operador over se puede lograr aplicando la siguiente fórmula a cada píxel: [2]

alfa o =   do a alfa a + do b alfa b ( 1 alfa a ) do o = do a alfa a + do b alfa b ( 1 alfa a ) alfa 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í , y representan los componentes de color de los píxeles en el resultado de la "superposición", 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 respectivos píxeles. do o {\displaystyle C_{o}} do a Estilo de visualización C_{a}} do b Estilo de visualización C_{b} alfa o {\displaystyle \alpha_{o}} alfa a {\displaystyle \alpha _{a}} alfa b {\displaystyle \alpha _{b}}

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

Directo versus premultiplicado

Si se utiliza un canal alfa en una imagen, hay dos representaciones comunes disponibles: alfa recta (no asociada) y alfa premultiplicada (asociada).

  • Con el alfa directo , los componentes RGB representan el color del objeto o píxel, sin tener en cuenta su opacidad. Este es el método implicado por el operador over en la sección anterior.
  • 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: [3]
    do o = do a + do b ( 1 alfa a ) {\displaystyle C_{o}=C_{a}+C_{b}(1-\alpha _{a})}
    alfa o = alfa a + alfa b ( 1 alfa a ) {\displaystyle \alpha _{o}=\alpha _{a}+\alpha _{b}(1-\alpha _{a})}

Comparación

La ventaja más importante del alfa premultiplicado es que permite una combinación, interpolación y filtrado 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 dar como resultado bordes de colores que no eran visibles en la imagen original. También ocurren errores en áreas de semitransparencia porque los componentes RGB no están correctamente ponderados, lo que da una ponderación incorrectamente alta al color de los píxeles más transparentes (alfa más bajo). [5]

El alfa premultiplicado también se puede utilizar 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 un triplete 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 la cantidad 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 API de "alfa directa", 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 cuando se utiliza una representación de enteros o de punto fijo para los componentes de color. Esto puede provocar una pérdida notable de calidad si la información de color se aclara posteriormente 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 las áreas de bajo alfa 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 utilizando 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 las 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.

Ejemplos

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 obtener (0, 0,35, 0, 0,5). En este caso, el valor 0,35 para el canal G indica en realidad 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 utiliza alfa directo o premultiplicado es esencial 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 directa. No hay conversión disponible en este caso.

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 canales alfa, pero se considera ineficiente en lo que respecta al tamaño del archivo. 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 soporta 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 son capaces de leerlo: es explotado principalmente en algunos videojuegos [9] o aplicaciones particulares; [10] también se han creado programas específicos para la creación de estos BMP.

Formato de archivo/códec [11]Profundidad máximaTipoCompatibilidad con navegadoresTipo de medioNotas
Apple ProRes 444416 bitsNingunoVídeo (.mov)ProRes es el sucesor del Apple Intermediate Codec [12]
HEVC / h.26510 bitsLimitado a SafariVídeo (.hevc)Sucesor previsto de H.264 [13] [14] [15]
WebM (códec de vídeo VP8, VP9 o AV1)12 bitsTodos los navegadores modernosVídeo (.webm)Si bien VP8/VP9 es ampliamente compatible con los navegadores modernos, AV1 aún tiene un soporte limitado. [16] Solo los navegadores basados ​​en Chromium mostrarán capas alfa.
Abrir EXR32 bitsNingunoImagen (.exr)Tiene la mayor dispersión HDR.
PNG16 bitsderechoTodos los navegadores modernosImagen (.png)
APNG24 bitsderechoSoporte moderadoImagen (.apng)Admite animación. [17]
PELEA32 bitsambosNingunoImagen (.tiff)
GIF8 bitsTodos los navegadores modernosImagen (.gif)Los navegadores generalmente no admiten capas alfa GIF.
SVG32 bitsderechoTodos los navegadores modernosImagen (.svg)Basado en color CSS. [18]
JPEG-XL32 bitsambosSoporte moderadoImagen (.jxl)Permite pérdida y HDR. [19]

Corrección gamma

Combinación alfa, sin tener en cuenta la corrección gamma
Combinación alfa, teniendo
en cuenta la corrección gamma

Los valores RGB de las imágenes digitales típicas no corresponden directamente a las intensidades de la luz física, sino que están comprimidos por una función de corrección gamma :

do codificado = do lineal 1 / gamma {\displaystyle C_{\text{codificado}}=C_{\text{lineal}}^{1/\gamma }}

Esta transformación utiliza mejor el número limitado de bits en la imagen codificada al elegir el que mejor se adapta a la percepción humana no lineal de la luminancia. gamma {\estilo de visualización \gamma}

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

C o = ( C a γ α a + C b γ α 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:

do o = ( do a gamma + do b gamma ( 1 alfa a ) ) 1 / gamma {\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 sufrir corrección gamma, incluso cuando los canales de color sí lo hacen.

Otros métodos de transparencia

Aunque se utilizan para fines similares, los colores transparentes y las máscaras de imagen no permiten una combinación suave de los píxeles de la imagen superpuesta con los del fondo (solo se permiten píxeles de la imagen completa 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 de alta definición RGBA de 16 bits del formato de archivo de imagen Truevision TGA y el modo gráfico de color de alta definición 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 donde solo está disponible un alfa de 1 bit.

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

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

Véase también

Referencias

  1. ^ "Definición de mezcla alfa". PCMAG . Consultado el 7 de agosto de 2021 .
  2. ^ ab Wallace, Bruce A. (1981). "Fusión y transformación de imágenes rasterizadas para animación de dibujos animados" . Actas de la octava conferencia anual sobre gráficos por computadora y técnicas interactivas - SIGGRAPH '81 . Vol. 15. Nueva York, Nueva York: ACM Press. págs. 253–262. CiteSeerX 10.1.1.141.7875 . doi : 10.1145/800224.806813 . ISBN.  0-89791-045-1. Número de identificación del sujeto  1147910.
  3. ^ abcde Porter, Thomas ; Duff, Tom (julio de 1984). "Composición de imágenes digitales" (PDF) . Actas de la 11.ª conferencia anual sobre gráficos por ordenador y técnicas interactivas - SIGGRAPH '84 . Vol. 18. 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 de abril de 2011. Consultado el 11 de marzo de 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 desde el original (PDF) el 25 de octubre de 2021.
  5. ^ "Mezcla alfa: previsualizar o no previsualizar". NVIDIA Developer . 31 de enero de 2013. Sin embargo, sucede algo interesante cuando generamos el siguiente nivel de mapa MIP...
  6. ^ "Blog de tecnología de TomF: solo pretende ser una wiki". Blog de tecnología de TomF: solo pretende ser una wiki . Archivado desde el original el 12 de diciembre de 2017. Consultado el 8 de mayo de 2018 .
  7. ^ Trebilco, Damian. "Cerrar la llamada de dibujo (presentación sobre alfa premultiplicada)". GitHub . Al cambiar al modo de fusión premultiplicada para todos los efectos de partículas, se puede hacer toda la escena con una llamada de dibujo (suponiendo que se usa un atlas/matriz 2D para las texturas)... Otro truco interesante con alfa premultiplicada es que si tienes texturas superpuestas que están en posiciones conocidas, puedes preprocesarlas todas hasta obtener una sola textura.
  8. ^ "Alfa premultiplicada". Win2D para WinUI3 . Consultado el 30 de junio de 2023. Win2D utiliza alfa directo en su superficie 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 desde el 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 compatibles con canales alfa". Pixel Bakery Design Studio . Consultado el 25 de mayo de 2023 .
  12. ^ "Final Cut Pro 6 - Amplia compatibilidad de formatos". apple.com . Archivado desde el original el 8 de junio de 2011 . Consultado el 13 de agosto de 2024 .
  13. ^ Jie Dong (19 de junio de 2010). "La primera reunión del JCT-VC, Dresde, DE". H265.net . 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 . Consultado el 13 de agosto de 2024 .
  15. ^ Yu Liu (15 de abril de 2009). "Los requisitos preliminares para NGVC". H265.net . Consultado el 13 de agosto de 2024 .
  16. ^ "Formato de video AV1 | ¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." caniuse.com . Consultado el 25 de mayo de 2023 .
  17. ^ "Especificación de la aplicación de usuario (pdf) de presentación de diapositivas de MOT para transmisión de audio digital (DAB)" (PDF) . ETSI . Consultado el 13 de agosto de 2024 .
  18. ^ "Especificación SVG, "Color"". World Wide Web Consortium. 14 de enero de 2003. Archivado desde el original el 7 de septiembre de 2009. Consultado el 13 de agosto de 2024 .
  19. ^ @chromium.org, de... (2022-08-24). "Compatibilidad con decodificación JPEG XL (imagen/jxl) en parpadeo (error de seguimiento)". bugs.chromium.org . Consultado el 2024-08-13 .
  20. ^ Minute Physics (20 de marzo de 2015). "El color de la computadora está roto". YouTube . Archivado desde el 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 combinada". Revista de técnicas de gráficos por computadora . 2 (2): 122–141.
  • Composición de imágenes digitales: Thomas Porter y Tom Duff (artículo original)
  • Fundamentos de composición de imágenes
  • ¡Comprenda las extensiones de composición y color en SVG 1.2 en 30 minutos!
  • Matizado alfa y premultiplicación
Retrieved from "https://en.wikipedia.org/w/index.php?title=Alpha_compositing&oldid=1250842037"