Partilhar via


Sobre o YUV Video

O vídeo digital é frequentemente codificado em um formato YUV. Este artigo explica os conceitos gerais de vídeo YUV, juntamente com alguma terminologia, sem se aprofundar na matemática do processamento de vídeo YUV.

Se você já trabalhou com computação gráfica, você provavelmente está familiarizado com a cor RGB. Uma cor RGB é codificada usando três valores: vermelho, verde e azul. Estes valores correspondem diretamente a porções do espectro visível. Os três valores RGB formam um sistema de coordenadas matemáticas, chamado de espaço de cores . O componente vermelho define um eixo desse sistema de coordenadas, o azul define o segundo e o verde define o terceiro, como mostra a ilustração a seguir. Qualquer cor RGB válida cai em algum lugar dentro deste espaço de cores. Por exemplo, magenta puro é 100% azul, 100% vermelho e 0% verde.

diagrama mostrando o espaço de cores RGB

Embora RGB seja uma maneira comum de representar cores, outros sistemas de coordenadas são possíveis. O termo YUV refere-se a uma família de espaços de cores, todos os quais codificam informações de brilho separadamente das informações de cor. Como RGB, YUV usa três valores para representar qualquer cor. Esses valores são denominados Y', U e V. (Na verdade, este uso do termo "YUV" é tecnicamente impreciso. Em vídeo de computador, o termo YUV quase sempre se refere a um espaço de cor particular chamado Y'CbCr, discutido mais tarde. No entanto, YUV é frequentemente usado como um termo geral para qualquer espaço de cor que funciona de acordo com os mesmos princípios que Y'CbCr.)

O componente Y', também chamado de luma, representa o valor de brilho da cor. O símbolo primo (') é usado para diferenciar luma de um valor estreitamente relacionado, luminância, que é designado Y. A luminância é derivada de valores RGB lineares, enquanto luma é derivada de valores RGB não lineares (corrigidos por gama). A luminância é uma medida mais próxima do brilho verdadeiro, mas o luma é mais prático de usar por razões técnicas. O símbolo principal é frequentemente omitido, mas os espaços de cor YUV sempre usam luma, não luminosidade.

Luma é derivado de uma cor RGB tomando uma média ponderada dos componentes vermelho, verde e azul. Para a televisão de definição normalizada, utiliza-se a seguinte fórmula:

Y' = 0.299R + 0.587G + 0.114B

Esta fórmula reflete o fato de que o olho humano é mais sensível a certos comprimentos de onda de luz do que outros, o que afeta o brilho percebido de uma cor. A luz azul parece mais fraca, o verde parece mais brilhante e o vermelho está em algum lugar no meio. Esta fórmula também reflete as características físicas dos fósforos usados nos primeiros televisores. Uma fórmula mais recente, tendo em conta a tecnologia de televisão moderna, é usada para televisão de alta definição:

Y' = 0.2125R + 0.7154G + 0.0721B

A equação de luma para televisão de definição padrão é definida em uma especificação chamada ITU-R BT.601. Para televisão de alta definição, a especificação relevante é ITU-R BT.709.

Os componentes U e V, também chamados de valores cromáticos ou valores de diferença de cor , são derivados subtraindo o valor Y dos componentes vermelho e azul da cor original RGB.

U = B - Y'

V = R - Y'

Juntos, esses valores contêm informações suficientes para recuperar o valor RGB original.

Benefícios do YUV

Televisão analógica usa YUV em parte por razões históricas. Os sinais analógicos de televisão a cores foram projetados para serem retrocompatíveis com televisores em preto e branco. O sinal de televisão a cores transporta a informação de "chroma" (U e V) sobreposta ao sinal de "luma". Televisores em preto e branco ignoram o chroma e exibem o sinal combinado como uma imagem em escala de cinza. (O sinal é projetado para que o croma não interfira significativamente com o sinal de luma.) Os televisores a cores podem extrair o croma e converter o sinal de volta para RGB.

YUV tem outra vantagem que é mais relevante hoje. O olho humano é menos sensível a mudanças na tonalidade do que mudanças no brilho. Como resultado, uma imagem pode ter menos informações cromadas do que informações luma sem sacrificar a qualidade percebida da imagem. Por exemplo, é comum a amostragem dos valores de chroma na metade da resolução horizontal das amostras de luma. Em outras palavras, para cada duas amostras de luma em uma linha de pixels, há uma amostra U e uma amostra V. Supondo que 8 bits são usados para codificar cada valor, um total de 4 bytes são necessários para cada dois pixels (dois Y', um U e um V), para uma média de 16 bits por pixel, ou 30% menos do que a codificação RGB equivalente de 24 bits.

YUV não é inerentemente mais compacto do que RGB. A menos que o chroma seja reduzido, um pixel YUV tem o mesmo tamanho que um pixel RGB. Além disso, a conversão de RGB para YUV não tem perdas. Se não houver redução da amostragem, um pixel YUV pode ser convertido de volta para RGB sem perda de informações. A redução da resolução torna uma imagem YUV menor e também perde algumas das informações de cor. Se realizada corretamente, no entanto, a perda não é percetivamente significativa.

YUV em Vídeo de Computador

As fórmulas listadas anteriormente para YUV não são as conversões exatas usadas em vídeo digital. O vídeo digital geralmente usa uma forma de YUV chamada Y'CbCr. Essencialmente, o Y'CbCr funciona adaptando os componentes YUV para os seguintes intervalos.

Componente Gama
Y' 16–235
Cb/Cr 16-240, com 128 representando zero

 

Estes intervalos pressupõem 8 bits de precisão para os componentes Y'CbCr. Aqui está a derivação exata de Y'CbCr, usando a definição BT.601 de luma:

  1. Comece com valores RGB no intervalo [0...1]. Em outras palavras, preto puro é 0 e branco puro é 1. É importante ressaltar que estes são valores RGB não lineares (corrigidos por gama).

  2. Calcule a luminância. Para BT.601, Y' = 0,299R + 0,587G + 0,114B, conforme descrito anteriormente.

  3. Calcular os valores intermédios da diferença cromática (B - Y') e (R - Y'). Estes valores têm um intervalo de +/- 0,886 para (B - Y') e +/- 0,701 para (R - Y').

  4. Dimensione os valores da diferença de cromo da seguinte forma:

    Pb = (0,5 / (1 - 0,114)) × (B - Y')

    Pr = (0,5 / (1 - 0,299)) × (R - Y')

    Esses fatores de escala são projetados para dar a ambos os valores o mesmo intervalo numérico, +/- 0,5. Juntos, eles definem um espaço de cores YUV chamado Y'PbPr. Este espaço de cor é usado em vídeo componente analógico.

  5. Dimensione os valores de Y'PbPr para obter os valores finais de Y'CbCr:

    Y' = 16 + 219 × Y'

    Cb = 128 + 224 × Pb

    Cr = 128 + 224 × Pr

Esses últimos fatores de escala produzem o intervalo de valores listados na tabela anterior. Claro, você pode converter RGB diretamente para Y'CbCr sem armazenar os resultados intermediários. As etapas são listadas separadamente aqui para mostrar como Y'CbCr deriva das equações YUV originais dadas no início deste artigo.

A tabela a seguir mostra valores RGB e YCbCr para várias cores, novamente usando a definição BT.601 de luma.

Cor R G B Y' Cb Cr
Preto 0 0 0 16 128 128
Vermelho 255 0 0 81 90 240
Verde 0 255 0 145 54 34
Azul 0 0 255 41 240 110
Ciano 0 255 255 170 166 16
Magenta 255 0 255 106 202 222
Amarelo 255 255 0 210 16 146
Branco 255 255 255 235 128 128

 

Como mostra esta tabela, Cb e Cr não correspondem a ideias intuitivas sobre cor. Por exemplo, o branco puro e o preto puro contêm níveis neutros de Cb e Cr (128). Os valores mais alto e mais baixo para Cb são azul e amarelo, respectivamente. Para Cr, os valores mais altos e mais baixos são vermelho e ciano.

Para mais informações

Tipos de Media de Vídeo

Tipos de Meios de Comunicação