Como o espaço de cores YCbCr é representado em uma imagem JPEG?

9

Eu sei que uma imagem de 24 bits dedica 8 bits cada para R, G e B. É apenas para o espaço de cores RGB. No espaço de cores YCbCr para uma imagem JPEG de 24 bits, como os bits são distribuídos?

Por favor, leia meu perfil
fonte

Respostas:

3

Existem alguns formatos para YCbCr. de um modo geral, o olho é mais sensível a mudanças na luminância (Y, brilho) do que a mudanças no croma (Cb, Cr, cor). Assim, é possível apagar algumas informações de croma, mantendo a qualidade da imagem.

Assim, o formato mais "caro" é 4: 4: 4, onde para cada componente luma (Y) há 1 diferença de vermelho (Cr) e um componente de diferença azul (Cb).

Então, aplicando o princípio que mencionei, há 4: 2: 2 onde para cada 2 componentes Y existem 1 Cb e 1 Cr. E vai ainda mais longe para 4: 1: 1 e 4: 2: 0, etc. Mais informações aqui .

ysap
fonte
Esses padrões parecem se referir à amostragem de frequência para vídeo, não à codificação JPEG.
whuber
@ whuber: Eles são freqüentemente usados ​​na discussão de codificação de vídeo, mas o JPEG também suporta luminância com o dobro da resolução de crominância. No entanto, no caso do JPEG, é opcional - o chroma pode ser em resolução total ou em meia resolução.
Jerry Coffin
11
O GIMP usará a subamostragem de croma por padrão ao salvar um JPEG, embora seja fácil substituí-lo. Não me lembro se isso se aplica ao Photoshop também.
thomasrutter
@thomasrutter, o Photoshop seleciona a subamostragem com base na configuração de qualidade escolhida. Não é uma opção independente.
Mark Ransom
A propósito, os números referem-se ao número de amostras por 4 pixels horizontais para Y, Pr e Pb. Então 4: 4: 4 significa que todos os três canais provam cada pixel; 4: 2: 2 significa que os canais Pr e Pb apenas amostram cada segundo pixel horizontalmente; 4: 1: 1 (acho que isso nunca é usado na fotografia, apenas no vídeo) significa que Pr e Pb apenas amostram cada quarto pixel horizontalmente. 4: 2: 0 é um desvio especial desta regra. NÃO significa que não há canal Pb. O que significa é que os canais Pr e Pb são reduzidos para metade em ambos os sentido horizontal e vertical, e não apenas horizontal.
thomasrutter
24

Um JPEG pode começar com 8 bits por canal R, G e B, mas quando armazenado no JPEG, ele é armazenado de maneira muito diferente, onde não há uma "profundidade de bits" real, mas os valores são armazenados como coeficientes de frequência de uma determinada precisão.

No JPEG, o mais relevante é a taxa de quantização , que afeta a quantidade de informações descartadas durante o estágio de quantização da compactação e, portanto, a precisão de cada coeficiente. Essa taxa de quantização é definida pela configuração "qualidade" quando você salva um JPEG no photoshop. No entanto, ela não está relacionada à profundidade de bits como em uma imagem rasterizada, e você pode até dizer que uma imagem JPEG não possui profundidade de bits no formato JPEG, embora os codificadores / decodificadores JPEG iniciem / terminem com 24 bits Rasterizar imagem.

O outro fator principal relevante para salvar um JPEG é o tipo de subamostragem de croma . Em um JPEG, você tem a opção de reduzir pela metade a resolução horizontal ou horizontal e vertical dos canais de cores (Pr e Pb) em relação ao canal de luminância (luminosidade). Ao descompactar, os canais de cores são interpolados e, na maioria dos assuntos fotográficos , não faz muita diferença.

Aqui está um resumo aproximado de como uma imagem é transformada em JPEG.

  1. Os valores RGB são convertidos nos valores Y, Pb, Pr. O espaço de cores YPbPr é mais adequado para compactação eficiente, pois mantém as informações de luminância, que trazem mais detalhes, em apenas um canal. Essa conversão é uma operação aritmética simples que é perfeitamente reversível, exceto se houver algum erro de arredondamento.

  2. Se estiver usando qualquer subamostragem de croma (em outras palavras, usando algo diferente do modo 4: 4: 4), a resolução vertical e / ou horizontal dos canais Pb e Pr somente será reduzida pela metade. Assim, esses canais terão dimensões de pixel diferentes do canal de luminância. Isso leva à perda permanente de resolução nos canais de cores.

  3. Para cada canal, a imagem é dividida em blocos de 8 pixels por 8 pixels, o que fornece 64 valores lineares para cada bloco em cada canal. Se um canal não for múltiplo de 8 pixels em qualquer dimensão, os pixels da borda serão repetidos (e serão jogados fora ao descompactar - portanto, a compactação JPEG é sempre mais eficiente com dimensões que são múltiplos de 8 pixels ou 16 se você levar em consideração na subamostragem de croma).

  4. Os 64 valores em cada bloco passam por uma transformação do domínio espacial para o domínio da frequência, neste caso chamado de transformação discreta de cosseno. Você acaba com 64 coeficientes, cada um representando a amplitude de um mapa de frequência específico sobre a área ocupada por esse bloco. O primeiro valor é a frequência mais baixa, que é efetivamente o valor médio de todos os pixels, até os últimos valores que descrevem o componente de frequência mais alta do bloco. Todos os valores anteriores divergem muito mais e são mais importantes para a aparência da imagem final do que os valores posteriores em um bloco. Esta operação é perfeitamente reversível, desde que você use precisão suficiente.

  5. Depois, há a etapa de quantização, na qual cada um dos 64 coeficientes obtidos na etapa anterior é dividido por algum número (chamado fator de quantização), e o restante é descartado. É aqui que a precisão das amostras é mais afetada, mas é onde você obtém a enorme economia de espaço do JPEG em comparação à compactação sem perdas. Como tudo está no domínio da frequência desde a transformação anterior, essa perda de precisão faz o melhor trabalho possível para preservar a qualidade perceptiva da imagem do que simplesmente reduzir a profundidade / precisão dos pixels antes da transformação. O inverso desse procedimento é simplesmente multiplicar pelo mesmo número pelo qual você dividiu os coeficientes, mas é claro que desde que você jogou os demais fora, você acaba com menos precisão dos coeficientes. Isso resulta em perda permanente de qualidade,

  6. Após essa quantização, é típico que muitos dos coeficientes posteriores, menos significativos, sejam zero, portanto são descartados. Então, uma rotina de codificação (sem perdas) de comprimento variável codifica todos os coeficientes restantes de maneira eficiente, mesmo que cada um possa usar um número diferente de bits.

É impossível dizer que um determinado fator de quantização é equivalente a uma certa profundidade de bits, pois a quantização não fornece faixas como quando você reduz a profundidade de bits, mas sim uma perda perceptiva geral em detalhes, começando nas partes em que você notaria. menos porque é de baixa amplitude para sua frequência.

thomasrutter
fonte
2
Eu acho que meu cérebro simplesmente explodiu.
Nick Bedford
A subamostragem de croma não resulta apenas em "perda de resolução". Introduz artefatos muito visíveis, especialmente no canal vermelho.
Mark Ransom
@ Mark Ransom esses artefatos nada mais são do que o resultado de reduzir pela metade a resolução nos canais de cores e da interpolação necessária para explicar isso após a descompressão. Ele nunca deve produzir "artefatos perceptíveis" além daqueles causados ​​pelo desfoque da resolução, embora possam existir alguns decodificadores que estragam essa interpolação ou fazem uma interpolação muito simples do vizinho mais próximo, resultando em um bloqueio bastante perceptível para o vermelho. detalhes em preto (ou magenta em azul, etc). Este era um problema comum em alguns reprodutores de DVD antigos, por exemplo.
thomasrutter
5
Acho que nunca vi uma explicação melhor e mais fácil de entender sobre a compressão de imagem jpeg - ou realmente com perdas -. + 1 definitivo
jay.lee
Desculpe, não tive a intenção de sugerir que a subamostragem causa os artefatos. Só que os erros existentes da quantização são ampliados 2X, tornando-os muito mais visíveis. Eu acho que é importante saber que o efeito visível da subamostragem é mais do que apenas um pouco de imprecisão.
Mark Ransom
1

Representar o croma (CbCr) em canais separados da luma (Y) tem outro efeito positivo na compressão. A maioria das informações visíveis está no canal luma. Os olhos humanos toleram menor resolução espacial e quantização mais agressiva nos canais de croma. Portanto, uma imagem compactada agressivamente pode acabar consumindo cerca de 10% do espaço no arquivo para o chroma e o restante para o luma, e ainda parecer decente.

No final do dia, ainda há compressão com perdas.

O. Jones
fonte
-1

Aproximadamente 8 bits para cada canal, mas existem várias maneiras ligeiramente diferentes de fazer isso. Os detalhes são dados no artigo da Wikipedia sobre YCbCr .

whuber
fonte
Isto foi afirmado na pergunta. Forneça uma resposta mais detalhada.
Nick Bedford
@ Nick Onde foi "isso" indicado na pergunta, exatamente? A pergunta, como está agora, diz: "No espaço de cores YCbCr para uma imagem JPEG de 24 bits, como os bits são distribuídos?" Eu disse como eles são distribuídos, assumindo - como qualquer um que entenda a pergunta - que os canais são Y, Cb e Cr. Minha resposta é um resumo correto do artigo da Wikipedia. A política da SE é fornecer resumos em vez de copiar material por atacado (embora seja fácil, admito, fornecer alguns exemplos limítrofes de longas citações em outras partes deste site).
whuber
Eu acho que esse tipo de resposta, embora não seja tão bom quanto uma explicação completa, é muito melhor do que uma que apenas corta e cola da Wikipedia, ou mesmo que parafraseia um artigo inteiro da Wikipedia. Se a Wikipedia for boa, é útil contar às pessoas. E se isso é tudo o que sua resposta está contribuindo, ser franco e apenas fornecer um resumo rápido e um link é exatamente a coisa certa a fazer.
Por favor, leia meu perfil