Top Qs
Linha do tempo
Chat
Contexto
Composição alfa
Da Wikipédia, a enciclopédia livre
Remove ads
Remove ads
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.[1] É 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 (também conhecida e chamada de "live-action"). A mesclagem alfa também é usada em gráficos 2D por computador para posicionar elementos de primeiro plano rasterizados sobre um fundo.

Para combinar corretamente os elementos das imagens, é necessário manter uma matte [en] associada para cada elemento, além de sua cor. Essa camada matte contém informações de cobertura — a forma da geometria desenhada — permitindo distinguir entre partes da imagem onde algo foi desenhado e partes que estão vazias.
Embora a operação mais básica de combinar duas imagens seja sobrepor uma à outra, há várias operações, ou modos de mesclagem [en], que são utilizadas.
Remove ads
História
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.[2] Um artigo de 1984 por Thomas Porter [en] e Tom Duff [en] apresentou o alfa premultiplicado usando uma abordagem geométrica.[3]
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 que usa a letra grega (alfa) para controlar a quantidade de interpolação entre, neste caso, duas imagens A e B".[4]
Ou seja, ao compor a imagem A sobre a imagem B, o valor de na fórmula é obtido diretamente do canal alfa de A.
Remove ads
Descrição
Resumir
Perspectiva
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[3] 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:
Como exemplo, o operador sobre pode ser realizado aplicando a seguinte fórmula a cada pixel:[2]
Aqui, , e representam os componentes de cor dos pixels no resultado da operação "sobre", imagem A e imagem B, respectivamente, aplicados a cada canal de cor (vermelho/verde/azul) individualmente, enquanto , e são os valores alfa dos respectivos pixels.
O operador sobre é, na prática, a operação de pintura normal (veja algoritmo do pintor). Os operadores dentro e fora são equivalentes à recorte [en] na composição alfa. Esses dois utilizam apenas o canal alfa da segunda imagem e ignoram os componentes de cor. Além disso, o operador mais define a mesclagem aditiva.[3]
Remove ads
Alfa direto versus premultiplicado
Resumir
Perspectiva
Se um canal alfa é usado em uma imagem, há duas representações comuns disponíveis: alfa direto (não associado) e alfa premultiplicado (associado).
- Com alfa direto, os componentes RGB representam a cor do objeto ou pixel, desconsiderando sua opacidade. Este é o método implícito pelo operador sobre na seção anterior.
- Com alfa premultiplicado, os componentes RGB representam a emissão do objeto ou pixel, e o alfa representa a oclusão. O operador sobre então se torna:[3]
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).[5]
O alfa premultiplicado também pode ser usado para permitir regiões de mesclagem alfa regular (por exemplo, fumaça) e regiões com modo de mesclagem aditivo [en] (por exemplo, efeitos de chama e brilho) codificados na mesma imagem.[6][7] Isso é representado por uma tupla RGBA que expressa emissão sem oclusão, como (0.4, 0.3, 0.2, 0.0).
Outra vantagem do alfa premultiplicado é o desempenho; em certas situações, ele pode reduzir o número de operações de multiplicação (por exemplo, se a imagem for usada várias vezes durante a composição posterior). As operações de Porter-Duff têm uma forma simples apenas em alfa premultiplicado.[3] Algumas pipelines de renderização expõem uma superfície de API de "alfa direto", mas as convertem em alfa premultiplicado para desempenho.[8]
Uma desvantagem do alfa premultiplicado é que ele pode reduzir a precisão relativa disponível nos valores RGB ao usar representação inteira ou de ponto fixo para os componentes de cor. Isso pode causar uma perda perceptível de qualidade se as informações de cor forem posteriormente clareadas ou se o canal alfa for removido. Na prática, isso geralmente não é perceptível porque, durante operações de composição típicas, como sobre, a influência das informações de cor de baixa precisão em áreas de baixo alfa na imagem final (após a composição) é correspondentemente reduzida. Essa perda de precisão também torna as imagens premultiplicadas mais fáceis de comprimir usando certos esquemas de compressão, pois não registram as variações de cor escondidas em regiões transparentes e podem alocar menos bits para codificar áreas de baixo alfa. As mesmas "limitações" de profundidades de bits de quantização mais baixas, como 8 bits por canal, também estão presentes em imagens sem alfa, e esse argumento é problemático como resultado.
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.
Emissão sem oclusão não pode ser representada em alfa direto. Não há conversão disponível nesse caso.
Remove ads
Formatos de imagem que suportam canais alfa
Resumir
Perspectiva
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[9] ou aplicações específicas;[10] programas específicos também foram criados para a criação desses BMPs.
Remove ads
Correção de gama
Resumir
Perspectiva


a correção de gama
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 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:[20][21]
Quando combinado com alfa premultiplicado, a premultiplicação é feita no espaço linear, antes da compressão de gama.[22] 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.
Remove ads
Outros métodos de transparência
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.
Alguns métodos de transparência independente de ordem [en] substituem o operador sobre por uma aproximação comutativa.[23]
Remove ads
Ver também
Referências
Ligações externas
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads