Composição alfa

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Operação em gráficos de computador
O canal alfa desta imagem de espectro de cores cai para zero em sua base, onde é misturado com a cor de fundo.

Na computação gráfica, composição alfa ou mistura alfa é o processo de combinar uma imagem com um plano de fundo para criar a aparência de transparência parcial ou total. Muitas vezes, é ú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. A composição é amplamente usada em filmes ao combinar elementos de imagem renderizados por computador com filmagens ao vivo. A mistura alfa também é usada em gráficos de computador 2D para colocar elementos de primeiro plano rasterizados sobre um plano de fundo.

Para combinar corretamente os elementos de imagem das imagens, é necessário manter um matte associado a cada elemento, além de sua cor. Essa camada fosca contém as informações de cobertura - a forma da geometria que está sendo desenhada - tornando possível distinguir entre as partes da imagem onde algo foi desenhado e as partes que estão vazias.

Embora a operação mais básica de combinar duas imagens seja colocar uma sobre a outra, existem muitas operações, ou modos de mesclagem, que são usados.

Descrição

Em uma imagem 2D, uma combinação de cores é armazenada para cada elemento da imagem (pixel), geralmente uma combinação de vermelho, verde e azul (RGB). Quando a composição alfa está em uso, 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 é totalmente transparente e a cor no pixel abaixo será exibido. Um valor de 1 significa que o pixel é totalmente opaco.

Com a existência de um canal alfa, é possível expressar operações de composição de imagem 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 aparece em segundo plano. Isso pode ser expresso como A sobre B. Além de over, Porter e Duff definiram os operadores de composição in, holded out by (a frase refere-se a holdout matting e geralmente é abreviada como out), atop e xor (e os operadores reversos rover, rin, rout e ratop) a partir de uma consideração de escolhas na mistura das cores de dois pixels quando sua cobertura é, conceitualmente, sobreposta ortogonalmente:

Alpha compositing.svg

Como exemplo, o operador over pode ser realizado aplicando a seguinte fórmula a cada pixel:

α α o= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =α α um+α α b)(1- Sim. - Sim. α α um){displaystyle alpha _{o}=alpha _{a}+alpha _{b}(1-alpha _{a})}
Co= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =Cumα α um+Cb)α α b)(1- Sim. - Sim. α α um)α α oNão. C_{o={frac {C_{a}alpha _{a}+C_{b}alpha _{b}(1-alpha _{a})}{alpha _{o}}}}

Aqui. CoNão. C_{o}}, CumNão. C_{a}} e Cb)Não. C_{b}} stand para os componentes de cor dos pixels no resultado, imagem A e imagem B respectivamente, aplicados a cada canal de cor (vermelho/verde/azul) individualmente, enquanto α α o{displaystyle alpha _{o}}, α α um{displaystyle alpha _{a}} e α α b){displaystyle alpha _{b}} são os valores alfa dos respectivos pixels.

O operador over é, na verdade, a operação de pintura normal (consulte o algoritmo do Painter). Bruce A. Wallace derivou o operador sobre com base em um modelo físico de refletância/transmitância, em oposição à abordagem geométrica de Duff. Os operadores in e out são o equivalente de composição alfa do recorte. Os dois usam apenas o canal alfa da segunda imagem e ignoram os componentes de cor.

Direto versus pré-multiplicado

Se um canal alfa for usado em uma imagem, há duas representações comuns disponíveis: alfa direto (não associado) e alfa pré-multiplicado (associado).

  • Com em linha reta, os componentes RGB representam a cor do objeto ou pixel, desconsiderando sua opacidade.
  • Com alfa pré-multiplicado, os componentes RGB representam a emissão do objeto ou pixel, e o alfa representa a oclusão. O sobre operador então se torna:
    Co= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =Cum+Cb)(1- Sim. - Sim. α α um)Não. C_{o}=C_{a}+C_{b}(1-alpha _{a})}
    α α o= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =α α um+α α b)(1- Sim. - Sim. α α um){displaystyle alpha _{o}=alpha _{a}+alpha _{b}(1-alpha _{a})}

Uma vantagem mais óbvia disso é que, em certas situações, pode salvar uma multiplicação subsequente (por exemplo, se a imagem for usada muitas vezes durante a composição posterior). No entanto, as vantagens mais significativas de usar o alfa pré-multiplicado são a correção e a simplicidade, e não o desempenho: o alfa pré-multiplicado permite filtragem e combinação corretas. Além disso, o alfa pré-multiplicado permite que regiões de mesclagem alfa regular e regiões com modo de mesclagem aditivo sejam codificadas na mesma imagem.

Assumindo que a cor do pixel é expressa usando tuplas RGBA retas (não pré-multiplicadas), um valor de pixel de (0, 0,7, 0, 0,5) implica um pixel que tem 70% do máximo intensidade verde e 50% de opacidade. Se a cor fosse totalmente verde, seu RGBA seria (0, 1, 0, 0,5).

No entanto, se este pixel usar alfa pré-multiplicado, todos os valores RGB (0, 0,7, 0) serão multiplicados ou dimensionados para oclusão pelo valor alfa 0,5, que é anexado para produzir (0, 0,35, 0, 0,5). Nesse caso, o valor de 0,35 para o canal G na verdade indica 70% de 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 pré-multiplicado é essencial para processá-lo ou compô-lo corretamente, pois é necessário um cálculo diferente. Também é totalmente aceitável ter uma emissão expressa de tripleto RGBA sem oclusão, como (0,4, 0,3, 0,2, 0,0). Incêndios e chamas, brilhos, labaredas e outros fenômenos semelhantes só podem ser representados usando alfa associado/pré-multiplicado.

A única diferença importante está na faixa dinâmica da representação de cores em cálculos numéricos de precisão finita (que está em todos os aplicativos): alfa pré-multiplicado tem uma representação única para pixels transparentes, evitando a necessidade de escolher um "claro cor" ou artefatos resultantes, como bordas de borda (consulte os próximos parágrafos). Em uma imagem alfa associada/pré-multiplicada, o RGB representa a quantidade de emissão, enquanto o alfa é a oclusão. O alfa pré-multiplicado tem algumas vantagens práticas sobre a combinação de alfa normal porque a interpolação e a filtragem fornecem resultados corretos.

A interpolação comum sem alfa pré-multiplicado leva ao vazamento de informações RGB de regiões totalmente transparentes (A=0), mesmo que 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 ponderados corretamente, dando um peso incorretamente alto à cor dos pixels mais transparentes (alfa inferior).

A pré-multiplicação pode reduzir a precisão relativa disponível nos valores RGB ao usar a representação inteira ou de ponto fixo para os componentes de cor, o que pode causar uma perda perceptível de qualidade se a informação de cor for posteriormente iluminada ou se o canal alfa for removido. Na prática, isso geralmente não é perceptível porque durante operações típicas de composição, como OVER, a influência das informações de cores de baixa precisão em áreas de baixo alfa na imagem de saída final (após a composição) é reduzida de forma correspondente. Essa perda de precisão também facilita a compactação de imagens pré-multiplicadas usando certos esquemas de compactação, pois elas não registram as variações de cores ocultas 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, como resultado, esse argumento é problemático.

Correção gama

Combinação alfa, não tendo em conta correção gama.
Combinação alfa, tomando
em conta correção gama.

Os valores RGB de imagens digitais típicas não correspondem diretamente às intensidades de luz físicas, mas são compactados por uma função de correção gama:

Ccodificado= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =Clinear linear linear1/γ γ {displaystyle C_{text{encoded}}=C_{text{linear}}^{1/gamma)

Esta transformação utiliza melhor o número limitado de bits na imagem codificada, escolhendo γ γ - Sim. que melhor corresponde à percepção humana não linear da luminância.

Assim, os programas de computador que lidam com tais imagens devem decodificar os valores RGB em um espaço linear (desfazendo a compressão gama), misturar as intensidades de luz linear e reaplicar a compressão gama ao resultado:

Co= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =(Cumγ γ α α um+Cb)γ γ α α b)(1- Sim. - Sim. α α um)α α o)1/γ γ Não. C_{o}=left({frac {C_{a}^{gamma }alpha _{a}+C_{b}^{gamma }alpha _{b}(1-alpha _{a})}{alpha _{o}}}right)^{1/gamma)

Quando combinado com alfa pré-multiplicado, a pré-multiplicação é feita no espaço linear, antes da compressão gama. Isso resulta na seguinte fórmula:

Co= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =(Cumγ γ +Cb)γ γ (1- Sim. - Sim. α α um))1/γ γ Não. C_{o}=left(C_{a}^{gamma }+C_{b}^{gamma }(1-alpha _{a})right

Observe que apenas os componentes de cor sofrem correção gama; o canal alfa é sempre linear.

Outros métodos de transparência

Embora usadas para fins semelhantes, as cores transparentes e as máscaras de imagem não permitem a mistura suave dos pixels da imagem sobreposta com os do fundo (somente são permitidos pixels inteiros da imagem ou pixels inteiros do fundo).

Um efeito semelhante pode ser alcançado com um canal alfa de 1 bit, como encontrado no modo de alta cor RGBA de 16 bits do formato de arquivo de imagem Truevision TGA e adaptadores de vídeo TARGA e AT-Vista/NU-Vista relacionados' modo gráfico de alta cor. Este modo dedica 5 bits para cada cor RGB primária (RGB de 15 bits) mais um bit restante como o "canal alfa".

A transparência do Screenendoor pode ser usada 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: um vitral, por exemplo, requer um canal de transparência separado para cada canal RGB para modelar a transparência vermelha, verde e azul separadamente. Mais canais alfa podem ser adicionados para aplicações precisas de filtragem de cores espectrais.

Alguns métodos de transparência independentes de ordem substituem o operador over por uma aproximação comutativa.

História

O conceito de um canal alfa foi introduzido por Alvy Ray Smith e Ed Catmull no final dos anos 1970 no Laboratório de Computação Gráfica do Instituto de Tecnologia de Nova York e totalmente desenvolvido em um artigo de 1984 por Thomas Porter e Tom Duff.

O uso do termo alfa é explicado por Smith da seguinte forma: "Nós chamamos isso por causa da fórmula de interpolação linear clássica α α A+(1- Sim. - Sim. α α )B{displaystyle alpha A+(1-alpha)B} que usa a letra grega α α - Sim. (alfa) para controlar a quantidade de interpolação entre, neste caso, duas imagens A e B". Ou seja, ao compor a imagem Uma imagem superior B, o valor de α α - Sim. na fórmula é tomado diretamente do canal alfa de A.

Contenido relacionado

AIM-120 AMRAAM

O Míssil ar-ar avançado de médio alcance AIM-120, ou AMRAAM é um míssil aéreo americano além do alcance visual -Míssil para o ar capaz de operações...

Transporte em Cabo Verde

A maioria dos transportes em Cabo Verde é feita por via aérea. Existem voos regulares entre as ilhas principais com voos menos frequentes para as outras...

Blizzard Entertainment

Blizzard Entertainment, Inc. é uma desenvolvedora e editora de videogames americana com sede em Irvine, Califórnia. Subsidiária da Activision Blizzard, a...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save