Composição com transparência

Quando a transparência está envolvida em ambos os quadros processados ​​por uma das transições de composição dinâmica do Kdenlive, o resultado pode surpreender alguns usuários. Felizmente, as coisas não são tão inexplicáveis ​​quanto parecem, então vamos direto ao assunto: transparência e transições.

Transparência e transições dinâmicas

No que diz respeito ao tratamento da transparência, as transições do Kdenlive dividem-se em duas categorias:

  1. Afim utiliza o operador de composição denominado acima

  2. Composição, Composição e transformação, Mistura Cairo (Afim) utilizam o operador de composição sobre

Então, o que acima e sobre realmente significam? Vamos descobrir o que esses operadores de composição fazem usando um exemplo típico de título e fundo semitransparente. Para simplificar, primeiro ignoraremos o parâmetro de opacidade das transições mencionadas para facilitar a compreensão. Depois de dominarmos essa etapa, finalmente veremos como o parâmetro de opacidade se encaixa no contexto geral.

Afim: Composição acima

../../_images/affine-transition-atop.png

O resultado da composição acima é melhor explicado inicialmente mostrando seu efeito: o texto do clipe de título superior (parcialmente) desaparece nas regiões onde o clipe subjacente na faixa do meio é (semi)transparente.

O clipe quadriculado na parte inferior da faixa serve apenas para fins ilustrativos, para que possamos ver melhor as regiões transparentes.

Observe como as duas transições Afim estão encadeadas: primeiro, a transição Afim superior compõe o clipe do título sobre o fundo gradiente. Em seguida, a transição Afim inferior compõe o resultado sobre o fundo quadriculado.

../../_images/Alpha-Compositing-1.jpg

Mas como exatamente a transição Afim lida com a transparência? Vejamos esta ilustração feita à mão, onde temos dois pixels com algum grau de transparência cada (os valores alfa, αA e αB). É importante não confundir a transparência do pixel com o parâmetro de opacidade das transições.

Nosso pixel vermelho vem do quadro de rastreamento superior (B), enquanto o pixel verde vem do quadro de rastreamento inferior (A). Um valor alfa de 0 significa um pixel completamente transparente, enquanto um valor alfa de 1,0 (ou 255) significa um pixel totalmente opaco.

A transição Afim agora simplesmente ignora as informações de transparência do pixel do quadro superior (o vermelho).

Utiliza exclusivamente a informação de transparência (verde) contida nos fotogramas inferiores! Ou, de forma mais matemática: α = αA

E essa é a explicação de por que, no exemplo acima, o texto do título desaparece nas regiões onde o clipe do meio é transparente.

Composição & Co: Sobreposição de composições

../../_images/composite-transition-over.png

Novamente, basicamente usamos a mesma configuração de antes, mas desta vez usamos Composição e transformação em vez de transições Afim. Encadeamos as transições como antes, de modo que a transição inferior atue no resultado da transição superior.

Mas veja só: o resultado é diferente! O resultado do operador sobre provavelmente está mais de acordo com as expectativas da maioria dos usuários. Agora, o clipe de título superior não é mais cortado.

../../_images/Alpha-Compositing-2.jpg

Uma vez que a operação sobre produz resultados mais próximos das expectativas de muitos de nós, como ela lida exatamente com a transparência?

Em termos simples: se você pintar um pixel semitransparente sobre outro pixel semitransparente, o resultado será menos transparente. Será ainda menos transparente do que a transparência do pixel do quadro inferior. Isso é o que provavelmente esperaríamos ao pintar com tinta semitransparente.

Calcular a transparência resultante para dois pixels dados de um quadro superior e (B) e um quadro inferior (A) é, portanto, mais complexo desta vez.

Novamente, começamos com a transparência do pixel do quadro inferior (verde) como base. Mas desta vez, não podemos ignorar a transparência do pixel do quadro superior (vermelho). Mas simplesmente somar as duas transparências não produziria resultados sensatos; o que significa uma transparência de 2,0 ou 511?

Portanto, a transparência do pixel vermelho é escalonada - você pode pensar em reduzir a escala original de 0 a 1,0 para o espaço disponível acima do valor de transparência verde. A transparência resultante é então a soma do valor alfa base verde, mais o valor alfa vermelho reescalonado. Lembre-se, nós meio que pintamos sobre o quadro inferior. Para a fórmula afim: α = αA + αB (1-αA)

Opacidade do parâmetro de transição

As transições de composição dinâmica também apresentam um parâmetro chamado Opacidade. É fácil confundi-lo com a transparência de pixels, mas é algo diferente. O parâmetro de opacidade se aplica apenas aos quadros superiores (B). É uma espécie de controle mestre, mas como funciona?

../../_images/Alpha-Compositing-3.jpg

Vamos começar novamente com a transição Afim. Acima, vimos que a transição Afim ignora a transparência dos pixels (vermelhos) da parte superior do quadro. E a transição Afim também ignora o parâmetro de opacidade ao calcular a transparência de pixel resultante.

Em vez disso, o parâmetro de opacidade influencia como a cor do pixel resultante é calculada: trata-se de uma interpolação linear entre a cor do pixel do quadro superior e (B) e o pixel do quadro inferior (A). A opacidade agora controla o ponto de mistura exato. Uma opacidade de 0,0 resulta apenas na cor do pixel do quadro inferior (B), enquanto 1,0 produz exclusivamente a cor do pixel do quadro superior (A). 0,5 seria um valor intermediário entre as duas cores de pixel.

Resumindo: no caso da transição Afim, o parâmetro de opacidade apenas afeta a mistura de cores entre os pixels do quadro superior (B) e do quadro inferior (A).

../../_images/Alpha-Compositing-4.jpg

Em seguida, vamos analisar as outras transições: Composição e Co.

Quanto à mistura de cores, aplica-se o mesmo procedimento que acabamos de ver com a transição Afim: o parâmetro de opacidade controla a quantidade de cor do pixel do quadro superior (B) que entra na mistura.

Mas quando observamos como a transparência do pixel resultante é calculada, as coisas começam a parecer diferentes. Vimos que a transparência do pixel do quadro superior (B) é reduzida em proporção inversa à transparência do pixel do quadro inferior (A). O parâmetro de opacidade leva isso ainda mais longe: ele também reduz a transparência do pixel do quadro superior (B). Veja também a ilustração.

Consequentemente, o parâmetro de opacidade controla a quantidade de opacidade aplicada a um pixel do quadro superior (B). Dessa forma, você pode aumentar ou diminuir o brilho do quadro superior.

Resumindo: no caso das transições Compostas (e Co), o parâmetro de opacidade afeta a mistura de cores dos pixels do quadro superior (B) e do quadro inferior (A), bem como a transparência do quadro superior (B).

Notas

Leitura complementar
  • Artigo da Wikipédia sobre Alpha Compositing, com referência ao artigo original de Porter Duff na SIGGRAPH’84 sobre «Composição de Imagens Digitais».

  • O SVG Open 2015 paper de Craig Northway sobre “Entendendo a composição e as extensões de cor no SVG 1.2 em 30 minutos!” - especialmente a tabela do operador Porter Duff no capítulo 6 com a coluna de cálculo alfa resultante.

Fontes

O texto original foi enviado pelo usuário TheDiveO para o blog kdenlive.org, agora extinto. Para esta documentação, ele foi extraído do kdenlive.org, atualizado e adaptado para corresponder ao estilo geral.