Composição alfa
Na computação gráfica, a composição alfa ou mesclagem alfa é o processo de combinar uma imagem com um fundo para criar a aparência de transparência [en] parcial ou total. É frequentemente útil renderizar elementos de imagem (pixels) em passagens ou camadas separadas e, em seguida, combinar as imagens 2D resultantes em uma única imagem final chamada composição [en]. A composição é amplamente utilizada em cinema ao combinar elementos de imagens geradas por computador com filmagem ao vivo. A mesclagem alfa também é usada em gráficos 2D por computador para posicionar elementos de primeiro plano rasterizados sobre um fundo.
O conceito de canal alfa foi introduzido por Alvy Ray Smith e Ed Catmull no final dos anos 1970 no New York Institute of Technology Computer Graphics Lab [en]. Bruce A. Wallace derivou o mesmo operador sobreposição baseado em um modelo físico de reflectância/transmitância em 1981. Um artigo de 1984 por Thomas Porter [en] e Tom Duff [en] apresentou o alfa premultiplicado usando uma abordagem geométrica. O uso do termo alfa é explicado por Smith da seguinte forma: "Nós o chamamos assim por causa da fórmula clássica de interpolação linear α A + ( 1 − α ) B {\displaystyle \alpha A+(1-\alpha )B} que usa a letra grega α {\displaystyle \alpha } (alfa) para controlar a quantidade de interpolação entre, neste caso, duas imagens A e B". Ou seja, ao compor a imagem A sobre a imagem B, o valor de α {\displaystyle \alpha } na fórmula é obtido diretamente do canal alfa de A.
Imagem: Miura Gallery · BY-NC · Openverse
Em uma imagem 2D, uma combinação de cores é armazenada para cada pixel, geralmente uma combinação de vermelho, verde e azul (RGB). Quando a composição alfa é utilizada, cada pixel tem um valor numérico adicional armazenado em seu canal alfa, com um valor variando de 0 a 1. Um valor de 0 significa que o pixel é completamente transparente e a cor do pixel subjacente será exibida. Um valor de 1 indica que o pixel é totalmente opaco. Com a existência de um canal alfa, é possível expressar operações de composição de imagens usando uma álgebra de composição. Por exemplo, dadas duas imagens A e B, a operação de composição mais comum é combinar as imagens de modo que A apareça em primeiro plano e B no fundo. Isso pode ser expresso como A sobre B. Além de sobre, Porter e Duff definiram os operadores de composição dentro, excluído por (a expressão refere-se a mattes de exclusão [en] e é geralmente abreviada como fora), acima, e xor (e os operadores reversos rsobre, rdentro, rfora, e racima) a partir de uma consideração de escolhas na mesclagem das cores de dois pixels quando sua cobertura é, conceitualmente, sobreposta ortogonalmente:
Imagem: Miura Gallery · BY-NC · Openverse
Se um canal alfa é usado em uma imagem, há duas representações comuns disponíveis: alfa direto (não associado) e alfa premultiplicado (associado).
Comparação
A principal vantagem do alfa premultiplicado é que ele permite mesclagem, interpolação e filtragem [en] corretas. A interpolação comum sem alfa premultiplicado leva a vazamentos de informações RGB de regiões totalmente transparentes (A=0), embora essas informações RGB sejam idealmente invisíveis. Ao interpolar ou filtrar imagens com bordas abruptas entre regiões transparentes e opacas, isso pode resultar em bordas de cores que não eram visíveis na imagem original. Erros também ocorrem em áreas de semitransparência porque os componentes RGB não são corretamente ponderados, dando um peso incorretamente alto à cor dos pixels mais transparentes (com menor alfa).
Exemplos
Assumindo que a cor do pixel é expressa usando tuplas RGBA diretas (não premultiplicadas), um valor de pixel de (0, 0.7, 0, 0.5) implica um pixel com 70% da intensidade máxima de verde e 50% de opacidade. Se a cor fosse totalmente verde, sua RGBA seria (0, 1, 0, 0.5). No entanto, se esse pixel usar alfa premultiplicado, todos os valores RGB (0, 0.7, 0) são multiplicados, ou escalonados para oclusão, pelo valor alfa 0.5, que é anexado para produzir (0, 0.35, 0, 0.5). Nesse caso, o valor 0.35 para o canal G indica realmente 70% da intensidade de emissão verde (com 50% de oclusão). Uma emissão verde pura seria codificada como (0, 0.5, 0, 0.5). Saber se um arquivo usa alfa direto ou premultiplicado é essencial para processá-lo ou compô-lo corretamente, pois é necessário um cálculo diferente.
Os formatos de imagem mais populares que suportam o canal alfa são PNG e TIFF. O GIF suporta canais alfa, mas é considerado ineficiente em termos de tamanho de arquivo. O suporte a canais alfa está presente em alguns codecs de vídeo, como Animation e Apple ProRes 4444 do formato QuickTime, ou no codec multifuncional Techsmith. O formato de arquivo BMP geralmente não suporta esse canal; no entanto, em formatos diferentes, como 32-bit (888–8) ou 16-bit (444–4), é possível salvar o canal alfa, embora nem todos os sistemas ou programas consigam lê-lo: ele é explorado principalmente em alguns jogos ou aplicações específicas; programas específicos também foram criados para a criação desses BMPs.
Os valores RGB de imagens digitais típicas não correspondem diretamente às intensidades de luz física, mas são comprimidos por uma função de correção de gama [en]: Essa transformação utiliza melhor o número limitado de bits na imagem codificada, escolhendo γ {\displaystyle \gamma } que corresponde melhor à percepção humana não linear de luminância. Assim, programas de computador que lidam com tais imagens devem decodificar os valores RGB para um espaço linear (desfazendo a compressão de gama), mesclar as intensidades de luz linear e reaplicar a compressão de gama ao resultado: Quando combinado com alfa premultiplicado, a premultiplicação é feita no espaço linear, antes da compressão de gama. Isso resulta na seguinte fórmula: Note que o canal alfa pode ou não passar por correção de gama, mesmo quando os canais de cor passam.
Embora usados para propósitos semelhantes, cores transparentes e máscaras de imagem não permitem a mesclagem suave dos pixels da imagem sobreposta com os do fundo (apenas pixels inteiros da imagem ou do fundo são permitidos). Um efeito semelhante pode ser alcançado com um canal alfa de 1 bit, como encontrado no modo de Highcolor RGBA de 16 bits do formato de arquivo de imagem Truevision TGA e nos modos gráficos de alta cor dos adaptadores de exibição TARGA e AT-Vista/NU-Vista. Esse modo dedica 5 bits para cada cor primária RGB (RGB de 15 bits [en]) mais um bit restante como o "canal alfa". Pontilhamento pode ser usado para simular oclusão parcial onde apenas alfa de 1 bit está disponível. Para algumas aplicações, um único canal alfa não é suficiente: uma janela de vitral, por exemplo, requer um canal de transparência separado para cada canal RGB para modelar a transparência de vermelho, verde e azul separadamente. Mais canais alfa podem ser adicionados para aplicações de filtragem espectral de cores precisas.


