Espaços de cores YCbCr

YCbCr, Y′CbCr , ou Y Pb / Cb Pr / Cr , também escrito como YC B C R ou Y’C B C R , é uma família de espaços de cores usada como parte do pipeline de imagens coloridas em vídeo e fotografia digital sistemas. Y ′ é o componente luma e CB e CR são os componentes cromados de diferença azul e vermelho. Y ′ (com primo) é distinguido de Y, que é a luminância, o que significa que a intensidade da luz é codificada de forma não linear com base nas primárias RGB corrigidas por gama.

Espaços de cores Y′CbCr são definidos por uma transformação de coordenadas matemáticas de um espaço de cores RGB associado. Se o espaço de cores RGB subjacente for absoluto, o espaço de cores Y′CbCr também será um espaço de cores absoluto; Inversamente, se o espaço RGB estiver mal definido, o mesmo acontece com o Y′CbCr.

Fundamentação
Os displays de tubos de raios catódicos são acionados por sinais de tensão vermelhos, verdes e azuis, mas esses sinais RGB não são eficientes como uma representação para armazenamento e transmissão, uma vez que eles têm muita redundância.

YCbCr e Y′CbCr são uma aproximação prática ao processamento de cores e uniformidade perceptual, onde as cores primárias correspondentes aproximadamente ao vermelho, verde e azul são processadas em informações perceptivamente significativas. Ao fazer isso, o processamento, a transmissão e o armazenamento subsequentes de imagens / vídeos podem realizar operações e introduzir erros de maneiras perceptivas. Y′CbCr é usado para separar um sinal de luma (Y ′) que pode ser armazenado com alta resolução ou transmitido em alta largura de banda, e dois componentes de crominância (CB e CR) que podem ser reduzidos, subamostrados, compactados ou de outra forma tratado separadamente para melhorar a eficiência do sistema.

Um exemplo prático seria diminuir a largura de banda ou a resolução alocada para “cor” em comparação com “preto e branco”, já que os humanos são mais sensíveis à informação em preto e branco (veja o exemplo da imagem à direita). Isso é chamado de subamostragem de croma.

YCbCr
O YCbCr é por vezes abreviado para YCC. Y′CbCr é frequentemente chamado de YPbPr quando usado para vídeo componente analógico, embora o termo Y′CbCr seja comumente usado para ambos os sistemas, com ou sem o primo.

Y′CbCr é frequentemente confundido com o espaço de cores YUV, e tipicamente os termos YCbCr e YUV são usados ​​de forma intercambiável, levando a alguma confusão. A principal diferença é que o YUV é analógico e o YCbCr é digital.

Sinais Y′CbCr (antes da escala e deslocamentos para colocar os sinais em formato digital) são chamados de YPbPr e são criados a partir da fonte RGB (vermelha, verde e azul) ajustada por gama correspondente usando três constantes definidas KR, KG e KB do seguinte modo:


onde K R , K G e K B são ordinariamente derivados da definição do espaço RGB correspondente e são requeridos para satisfazer  . (A manipulação de matriz equivalente é muitas vezes referida como a “matriz de cores”.)

Aqui, os símbolos primos significam que a correção gama está sendo usada; assim, R ′, G ′ e B ′ nominalmente variam de 0 a 1, com 0 representando a intensidade mínima (por exemplo, para exibição da cor preta) e 1 o máximo (por exemplo, para exibição da cor branca). O valor de luma (Y) resultante terá então uma faixa nominal de 0 a 1, e os valores de chroma (PB e PR) terão uma faixa nominal de -0,5 a +0,5. O processo de conversão inversa pode ser prontamente derivado invertendo as equações acima.

Ao representar os sinais em formato digital, os resultados são dimensionados e arredondados e os deslocamentos são normalmente adicionados. Por exemplo, o dimensionamento e o deslocamento aplicados ao componente Y per por especificação (por exemplo, MPEG-2) resultam no valor de 16 para preto e o valor de 235 para branco ao usar uma representação de 8 bits. O padrão tem versões digitalizadas de 8 bits de CB e CR dimensionadas para um intervalo diferente de 16 a 240. Consequentemente, o reescalonamento pela fração (235-16) / (240-16) = 219/224 às vezes é necessário ao fazer a matriz de cores ou processamento em espaço YCbCr, resultando em distorções de quantização quando o processamento subseqüente não é executado usando profundidades de bit mais altas.

O escalonamento que resulta no uso de uma gama menor de valores digitais do que pode parecer desejável para a representação do intervalo nominal dos dados de entrada permite algum “overshoot” e “undershoot” durante o processamento, sem necessitar de um recorte indesejável. Este “head-room” e o “toe-room” também podem ser usados ​​para extensão da gama de cores nominal, conforme especificado pelo xvYCC.

O valor 235 acomoda um overshoot máximo de preto-branco de 255 – 235 = 20, ou 20 / (235 – 16) = 9,1%, que é ligeiramente maior que o máximo overshoot teórico (fenômeno de Gibbs) de cerca de 8,9% do o passo máximo. O toe-room é menor, permitindo apenas 16/219 = 7,3% overshoot, que é menor que o máximo teórico de 8,9%.

Como as equações que definem YCbCr são formadas de forma a rotacionar todo o cubo de cor RGB nominal e dimensioná-lo para caber em um cubo de cores YCbCr (maior), há alguns pontos no cubo de cores YCbCr que não podem ser representados no domínio RGB correspondente (pelo menos não dentro da faixa nominal RGB). Isso causa alguma dificuldade em determinar como interpretar corretamente e exibir alguns sinais YCbCr. Esses valores YCbCr fora do intervalo são usados ​​pelo xvYCC para codificar cores fora da gama BT.709.

Conversão de RGB para YCbCr

Conversão ITU-R BT.601
A forma de Y′CbCr que foi definida para uso de televisão de definição padrão no padrão ITU-R BT.601 (anteriormente CCIR 601) para uso com vídeo componente digital é derivada do espaço RGB correspondente da seguinte forma:


A partir das constantes e fórmulas acima, o seguinte pode ser derivado para o ITU-R BT.601.

O YPbPr analógico do R’G’B ‘analógico é derivado da seguinte forma:


O Y′CbCr digital (8 bits por amostra) é derivado do análogo R’G’B ‘como segue:


ou simplesmente componentwise


Os sinais resultantes variam de 16 a 235 para Y (Cb e Cr variam de 16 a 240); os valores de 0 a 15 são chamados de footroom, enquanto os valores de 236 a 255 são chamados de headroom.

Alternativamente, Y′CbCr digital pode derivar de R’dG’dB’d digital (8 bits por amostra, cada um usando toda a faixa com zero representando preto e 255 representando branco) de acordo com as seguintes equações:


Na fórmula acima, os fatores de escala são multiplicados por  . Isso permite o valor 256 no denominador, que pode ser calculado por um único desvio de bits.

Se a fonte digital R’d G’d B’d incluir o espaço para os pés e a altura livre, o deslocamento de espaço para pés 16 precisa ser subtraído primeiro de cada sinal, e um fator de escala de  precisa ser incluído nas equações.

A transformação inversa é:


A transformação inversa sem arredondamentos (usando valores provenientes diretamente da recomendação ITU-R BT.601) é:


Essa forma de Y′CbCr é usada principalmente para sistemas de televisão de definição padrão mais antigos, já que usa um modelo RGB que se ajusta às características de emissão de fósforo de CRTs mais antigos.

Conversão ITU-R BT.709
Uma forma diferente de Y′CbCr é especificada no padrão ITU-R BT.709, principalmente para uso em HDTV. O formulário mais recente também é usado em alguns aplicativos orientados para exibição de computador. Nesse caso, os valores de Kb e Kr diferem, mas as fórmulas para usá-los são as mesmas. Para o ITU-R BT.709, as constantes são:


Essa forma de Y′CbCr é baseada em um modelo RGB que se ajusta melhor às características de emissão de fósforo dos novos CRTs e outros equipamentos de exibição modernos.

As definições dos sinais R ‘, G’ e B ‘também diferem entre BT.709 e BT.601, e diferem dentro de BT.601 dependendo do tipo de sistema de TV em uso (625 linhas como PAL e SECAM ou 525-line como no NTSC), e diferem ainda mais em outras especificações. Em diferentes modelos, há diferenças nas definições das coordenadas de cromaticidade R, G e B, o ponto branco de referência, o intervalo de gama suportado, as funções exatas de pré-compensação gama para derivar R ‘, G’ e B ‘de R, G e B, e no escalonamento e offsets a serem aplicados durante a conversão de R’G’B ‘para Y′CbCr. Assim, a conversão adequada de Y′CbCr de uma forma para outra não é apenas uma questão de inverter uma matriz e aplicar a outra. De fato, quando o Y′CbCr é projetado idealmente, os valores de KB e KR são derivados da especificação precisa dos sinais primários de cor RGB, de modo que o sinal de luma (Y ′) corresponda o mais próximo possível a uma medição ajustada por gama. de luminância (tipicamente baseado nas medidas CIE 1931 da resposta do sistema visual humano aos estímulos de cor).

Conversão ITU-R BT.2020
O padrão ITU-R BT.2020 define Y′CbCr corrigido por gama e uma versão codificada linearmente de YCbCr chamada YcCbcCrc. YcCbcCrc pode ser usado quando a prioridade máxima é a retenção mais precisa das informações de luminância. Para YcCbcCrc, os coeficientes são:


Conversão de JPEG
O uso de JPEG por JFIF suporta Y′CbCr, onde Y ′, CB e CR têm o intervalo total de 8 bits de [0… 255]. Abaixo estão as equações de conversão expressas em seis dígitos decimais de precisão. (Para equações ideais, consulte ITU-T T.871.) Observe que, para as seguintes fórmulas, o intervalo de cada entrada (R, G, B) também é o intervalo total de 8 bits de [0… 255].


E volta:

Plano CbCr em Y = 0,5

Y = 0,5

Nota: quando Y = 0, R, G e B devem ser todos zero, assim, Cb e Cr só podem ser zero. Da mesma forma, quando Y = 1, R, G e B devem ser todos 1, assim, Cb e Cr só podem ser zero.

Ao contrário de R, G e B, os valores de Y, Cb e Cr não são independentes; escolher valores YCbCr arbitrariamente pode levar a um ou mais dos valores RGB que estão fora da gama, ou seja, maior que 1,0 ou menor que 0,0.