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?
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?
Respostas:
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 .
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.
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.
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.
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).
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.
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,
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.
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.
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 .