Qual é a diferença entre espaço de cores e profundidade de bits?


13

Sei que existem diferentes tipos de espaço de cores e que o sRGB é o mais comum. A profundidade de bits define as variações de um canal de cores, onde (acho) 8 e / ou 16 bits são os mais comuns.

Alguns podem dizer que são totalmente diferentes e outros podem dizer que não são mutuamente exclusivos.

Alguém pode explicar as diferenças? Se você aumenta a profundidade dos bits, por que não aumenta também o espaço de cores?

Respostas:


15

Basicamente, as informações sobre cores vivas são como uma caixa de giz de cera para chocolates ...

As informações de cores são armazenadas em números inteiros, e não em valores analógicos - há um número discreto e contável de cores que pode ser descrito em uma certa profundidade de bits.

Pense no espaço de cores como uma caixa de lápis de cor de cores diferentes. Um espaço de cores descreve os tipos de giz de cera disponíveis. Pense em "cores ousadas", "pastéis" ou algo parecido. A profundidade dos bits descreve o número de giz de cera.

Aqui está um exemplo de duas caixas diferentes de giz de cera:

crayonboxes

Ambos têm 16 giz de cera, mas eles têm uma gama diferente de cores - especificamente, o conjunto inferior não se estende até o vermelho. Como existem 16 cores, são 4 bits de profundidade de cor (2⁴ = 16).

Um espaço de cores "real" é tridimensional e isso possui apenas uma dimensão. (Ou seja, a tonalidade.) Mas cria um modelo que, espero, ajude. A "caixa" superior tem um espaço de cores com uma cor "primária" muito vermelha nas bordas extremas, enquanto a inferior se estende apenas para uma laranja avermelhada.

O espaço de cores superior parece, inicialmente, obviamente superior (você não pode nem desenhar algo vermelho com o inferior!), Mas considere a situação em que está desenhando uma paisagem com céu, água e árvores. O conjunto inferior de giz de cera pode realmente ser muito melhor, porque usa mais de seus "bits" para representar tons sutis de verde e azul.

Se sim. você comprou as mesmas faixas de cores em conjuntos de 64 giz de cera, haveria três novos giz de cera entre todos os existentes. O conjunto inferior ainda teria mais opções para azul e verde, mas por causa dos novos lápis de cera, o conjunto superior também teria muito mais opções nesse intervalo do que o conjunto de 16 lápis de cera. Como o conjunto superior também cobre vermelho, com giz de cera suficiente, seria objetivamente melhor.

No entanto, pode-se imaginar uma escolha em que ambas as caixas tenham algo faltando. É um pouco mais fácil ver como isso pode ser se formos uma visualização um pouco mais complicada, aqui de sRGB real (como uma TV ou monitor de computador no nível do consumidor) e tintas CMYK "SWOP" padrão:

CMYK SWOP vs RGB - imagem minha e linhas são aproximadas

Aqui, você pode ver que o espaço de cores CMYK SWOP¹ se estende ainda mais para os cianos, magenta / roxos e amarelos que podem ser representados no sRGB. Mesmo se adicionarmos mais bits para distinguir entre as etapas distinguíveis disponíveis, o espaço de cores determinará a borda . Da mesma forma, adicionar mais bits à representação CMYK não ajuda a representar os cantos distantes de vermelho, verde e azul cobertos pelo sRGB. (E, claro, todos eles são uma representação ruim da gama da visão humana, representada pela forma externa - se você já se perguntou por que é tão difícil fazer com que fotos digitais de vegetação pareçam naturais, isso faz parte da história !)

Na vida real, espaços de cores de 24 bits (8 bits por canal), você tem 16,8 milhões de cores para trabalhar. Isso geralmente é bom e amplamente considerado como mais cores do que o olho humano pode distinguir, mas se seu espaço de cores for realmente grande, você poderá realmente ter o mesmo efeito em que o salto entre cores individuais no meio seja maior que o ideal, e é possível que seria perceptível em certas situações.

De fato, alguns espaços de cores "amplos", como o ProPhoto RGB, possuem cores na borda do espaço que não correspondem a nada na visão humana . São teóricas, cores "imaginárias" que fazem o espaço de cores funcionar, mas são efetivamente desperdiçadas. Ao usar um espaço de cores como esse com um pequeno número de lápis de cor (baixa profundidade de bits), você tem menos opções para cores realmente úteis, tornando a possibilidade de perder etapas mais um problema. Algo como o sRGB não pode cobrir cyans e verdes distantes (como o vermelho ausente no conjunto acima), mas, em troca, você obtém uma distinção mais fina entre os azuis, os roxos e os vermelhos (e os verdes que estão lá).

Se formos para 16 bits por canal (total de 48 bits), existem 16,8 milhões de "giz de cera" adicionais entre todas as tonalidades da caixa. Isso é um exagero total (tanto no que os humanos podem distinguir quanto na realidade prática de representar essa diferença sutil na tela ou impressa), mas esse exagero garante que as transições suaves estejam sempre disponíveis. E uma vez que na vida real, espaços de cor são todos mais ou menos desenhado para visão cobertura humano (mesmo que não se alinham exatamente), você realmente não correr para a situação onde seu espaço de cor não tem vermelho em tudo - ele só poderia não seja tão profundo ou sutil.

A outra coisa que vale a pena considerar é que o sRGB foi projetado não apenas para ser uma combinação decente para a visão humana, mas para ser representável na maioria dos dispositivos de consumo , e é o pressuposto padrão para telas não gerenciadas por cores. Isso significa que, ao usar o sRGB, você tem a melhor chance de que os "giz de cera" que você está usando correspondam aos "giz de cera" usados ​​pelos dispositivos dos seus telespectadores. É por isso que recomendo salvar em sRGB para visualização e compartilhamento na web- profundidades de bits mais altas não são uma opção generalizada e a maioria das pessoas não tem a capacidade de trocar por um conjunto de lápis de cor de sua escolha. (Esperamos que isso melhore no futuro, mas não parece realmente uma prioridade para os fabricantes de dispositivos de consumo. Talvez quando a confusão 3D e 4K se acalmar, possamos dar mais ênfase à "cor profunda" - profundidades de bit mais altas para displays de consumidor.

(Parte disso foi emprestada da minha resposta anterior para Como espaços de cores como sRGB e Adobe RGB se sobrepõem? )


Nota de rodapé

1. Este exemplo em particular é uma simplificação excessiva e encobre a representação real de imagens CMYK e alguns outros detalhes; é um bom exemplo, porém, porque a maioria dos espaços de cores reais é projetada para se sobrepor o máximo possível e isso mostra algo que tem uma incompatibilidade.


ESTÁ BEM. Então, digamos que o espaço de cores superior (linha superior de giz de cera) tenha o dobro da profundidade de bits do inferior, teoricamente poderia cobrir todas as cores / tonalidades como o inferior? No entanto, se os dois são os mesmos em profundidade de bits, então não. Não pode cobrir as mesmas cores / tons. Portanto, mesmo que você não esteja alterando o espaço de cores, aumentar a profundidade de bits (de um espaço de cores) tem o potencial de cobrir as mesmas cores que um espaço de cores diferente?
BBking

@BBking Bem, é tridimensional e não a linha unidimensional que o exemplo do giz de cera fornece, mas em ambos os casos a questão da cobertura basicamente tem a ver com os extremos. Veja a segunda linha - adicionar mais bits não adicionará extremos vermelhos. Mas, pelo contrário, sim, por causa da maneira como eu a construí, mais bits no topo o cobrirão com mais cores - não será exatamente o mesmo, mas ainda será um gradiente mais suave. Se você ultrapassar 2 ×, a linha superior será um superconjunto da linha inferior.
Por favor, leia o perfil

1
No entanto, eu poderia ter construído a linha inferior para que ela se estenda em uma direção que a linha superior não cobre - pode ser que os extremos não se sobreponham e nenhuma quantidade de adição de bits mudará isso. (Veja a [questão de sobreposição para saber mais.]
Leia o perfil

Entendo. Agora eu não sei se devo alterar o seu para a resposta ...: /
BBking

@BBking Bem, deixe-me saber o que mais poderia ser mais claro! :)
Por favor, leia o perfil

11

Profundidade de bits e espaço de cores não são a mesma coisa, nem são mutuamente exclusivos. São coisas diferentes que existem simultaneamente. Para uma explicação particularmente simples:

  • A profundidade de bits determina a finura com que cada cor distinta é classificada .

  • O espaço de cores determina a extensão na qual essas cores são distribuídas .

Vamos considerar sRGB e AdobeRGB como espaços de cores e cores de 8 e 16 bits como profundidade de bits. O sRGB é um espaço de cores pequeno, enquanto o AdobeRGB é um espaço de cores maior. Os espaços de cores, ou gamas, definem até que ponto as cores podem ser escolhidas em toda a gama de cores visíveis ao olho humano (ou até mesmo além dessa faixa, como seria o caso do ProPhotoRGB ou de alguns dos novos 10 bpc Gamas de TV). Se você mapear a cor "Verde puro" no sRGB, essa cor será realmente um verde numericamente puro ... no entanto, pode não ser o verde puro com a percepção mais precisa. Mapeie a mesma cor "Verde puro" é o AdobeRGB e, numericamente, é o mesmo verde, quando mapeado no AdobeRGB é mais saturado e vibrante. (Além disso, mapeie a mesma cor no ProPhotoRGB e novamente será ainda mais saturada do que no AdobeRGB ... assumindo, é claro,

Agora, vem em profundidade. A diferença entre o verde puro em 8 e 16 bits é 0,255,0 vs. 0,65535,0. Um número muito maior é usado para descrever o canal verde em verde puro na cor de 16 bits do que na cor de 8 bits. Se trouxermos um verde médio, o valor em 8 bits pode ser 0,128,0, enquanto em 16 bits seria 0,32768,0. Mesma cor, mas o número de cores distintas no grau entre Verde Puro e Verde Médio é muito maior com cores de 16 bits. Você tem um total de 32768 níveis distintos de verde entre esses dois níveis em 16 bits, contra meros 128 níveis distintos em 8 bits. Digamos que escolhemos um verde mais claro, digamos 0,192,0 em 8 bits. Essa mesma cor seria 0,49152,0 em 16 bits. Esse aumento em cores distintas em potencial significa que os gradientes se tornam consideravelmente mais suaves e mais delineados ao usar uma profundidade de bits mais alta.

Finalmente, como as profundidades de bits e os espaços de cores funcionam juntos? Com uma gama estreita, como sRGB, você tem um espaço de cores restrito para mapear cores distintas. Com sRGB e cores de 8 bits, cada cor será verdadeiramente distinta conforme você passar por todos os greens, de 0,1,0 a 0,128,0 a 0,255,0. O que acontece se você tiver uma imagem de 16 bits no espaço sRGB? Numericamente, sua imagem tem a capacidade de representar mais de 280 trilhões de cores distintas (16 + 16 + 16 bits são 48 bits no total, 2 ^ 48 é 281,5 trilhões). Perceptivamente ... quando os valores numéricos de RGB são mapeados para cores restritas à gama, uma quantidade significativa desses 280 trilhões de cores acabará sendo mapeada exatamente para a mesma "coordenada de cores" no espaço de cores. Seu arquivo de imagem ainda contém dados de cores com precisão total; no entanto, quando é renderizado na tela (ou renderizado para impressão),

Se mudarmos para o AdobeRGB, a gama aumenta, é um espaço de cores maior e, portanto, pode abranger um número maior de mapeamentos de cores distintos. Com uma profundidade de cor de 8 bits, você efetivamente mapeará escassamente essa gama maior. Tecnicamente falando, a gama é capaz de descrever mais cores do que a profundidade de bits permite que você faça referência. Seus fatores limitantes foram trocados ... em vez de a gama ser restritiva, a profundidade de bits está sendo restritiva. Se optarmos por cores de 16 bits no espaço de cores do AdobeRGB, haverá mais espaço para que nossos 280 trilhões de cores em potencial façam referência a cores distintas. É provável que várias cores ainda sejam mapeadas para as mesmas coordenadas reais no espaço AdobeRGB; no entanto, haverá muito menos colisões nesse espaço maior do que no sRGB.

Portanto, enquanto espaço de cores / gama e profundidade de bits são coisas distintas, elas estão inter-relacionadas. Não é necessário usar uma gama maior ao usar uma profundidade de bits mais alta para armazenar os dados da imagem, no entanto, é aconselhável tirar o máximo proveito dessa profundidade de bits mais alta. Por outro lado, se você estiver salvando imagens com uma profundidade de bits menor, geralmente haverá menos valor em renderizar essas imagens com algo mais que sRGB.

Para tirar o máximo proveito das informações de cores com alta profundidade de bits em um arquivo de imagem, gamas maiores e telas simultaneamente melhores que podem realmente exibir essas gamas tornam-se valiosas. Para renderizar cores de 10, 12 e 16 bits em TVs ou telas de computador, são geralmente necessárias gamas maiores que o AdobeRGB e ainda maiores que o ProPhotoRGB para aproveitar ao máximo a percepção visual humana. Nossos olhos são dispositivos incríveis e capazes de incrível faixa dinâmica e sensibilidade de cores extremamente ampla. As telas modernas de 10 bits com LUTs de hardware de 12, 14 e 16 bits (Tabelas de consulta de cores em 3D) são capazes de exibir 1,07 bilhão de cores simultâneas, selecionadas de um total de 68,7 bilhões (12 bits), 4,4 trilhões (14 bits) ou 281,5 trilhões (16 bits) de cores descritas com muita precisão pelo LUT.


2
"A diferença entre o verde puro em 8 e 16 bits é de 0,255,0 vs. 0,65535,0." Perfeito! Isso me fez entender muito melhor.
BBking

1
O espaço de cores não é apenas "extensão" (gama); abrange toda a topologia das cores no espaço. Considere espaços de cores não-RGB tais como YUV, HSL (muitas vezes representada como um cilindro, em vez de um cubo), CMYK (um espaço 4-dimensional), etc
Jason C

@ Jason: O termo "extensão" funciona para objetos espaciais tridimensionais. Isso não significa apenas uma extensão bidimensional, como um triângulo sobreposto ao gráfico total de brilho / saturação do espaço do laboratório. Extensão significa toda a extensão do espaço de cores, nas três dimensões, independentemente da forma real que a extensão assume. Eu também indicaria que sRGB, AdobeRGB etc. são espaços de cores, enquanto RGB, YUV, HSL, CMYK etc. são modelos de cores, não espaços de cores. Os espaços de cores são 3D, mas geralmente têm formas de diamante esfarrapadas, nunca são cilíndricos ou cúbicos.
jrista

1
Do ponto de vista numérico, sim. Do ponto de vista da renderização, isso depende do espaço de cores. ;)
jrista

1
Usando as cores de exemplo de Matt, provavelmente terminaria em amarelo brilhante (255.255,0), pois essa é a opção viável mais próxima. Se você quer dizer (255,0,0), ele acabaria laranja. Existem várias intenções de renderização que podem ser usadas ao mapear valores numéricos de cores para as coordenadas do espaço de cores: Absoluto, Relativo, Saturação, Perceptual. Dependendo da intenção, o resultado exato da cor (a cor "renderizada") será ligeiramente (ou talvez muito, realmente depende do espaço de cores e do perfil ICC) diferente.
jrista

3

Estas são coisas independentes. O espaço de cores representa todas as cores possíveis e é um espaço contínuo. Os dispositivos digitais requerem uma discretização do espaço. Isso significa que as etapas em cada uma delas podem representar cores que estão dentro do espaço de cores.

Aqui está uma analogia simples: coisa sobre a altura entre dois andares como um espaço de cores. Esse é o espaço entre os andares. Agora, quantos passos você precisa para construir uma escada do andar inferior ao andar superior? A resposta depende do tamanho da etapa. Essa é a profundidade de bits.

Agora, quando você fala sobre profundidades de bits usadas em formatos de arquivo, a situação é mais complexa, porque nem todas as etapas têm o tamanho que ocorre porque a profundidade de bits não é distribuída uniformemente no sentido linear. Às vezes, as etapas seguem uma curva preceptual, uma curva gama ou uma curva logarítmica.

Geralmente, se você aumenta a profundidade de bits, obtém mais gradação em um espaço de cores, mas seus limites permanecem os mesmos. No entanto, existem formatos de arquivo HDR que usam valores de ponto flutuante ou ponto fixo que podem até ser negativos para representar cores fora do espaço de cores especial.


Acho que ainda estou no mesmo nível de entendimento. Sua analogia de construção me confundiu ainda mais. Se você dissesse que o Espaço de cores é como a quantidade de níveis em um edifício (cada nível representa uma cor), enquanto as etapas no edifício podem ter a profundidade de bits. Portanto, dentro do mesmo espaço de cores, você pode ter diferentes profundidades de bits. Se um edifício for sRGB com etapas de 8 bits, isso terá menos detalhes de cores que um edifício sRGB de 16 bits. No entanto, aumentar a profundidade dos bits aumenta o tamanho do edifício. Portanto, alterando (mas não muito) o espaço de cores?
BBking

2
@BBking: Isso não está correto. Os dois não estão ligados dessa maneira. O tamanho do edifício não precisa ser alterado se você passar para 16 etapas, porque você pode aproximar as etapas mais do que quando você tem apenas 8 etapas. A profundidade dos bits é a proximidade das etapas, enquanto o espaço de cores é do tamanho do edifício. Eu adicionei uma resposta que pode ajudar.
jrista

1
Observe que um espaço de cores não representa intrinsecamente todas as cores possíveis, a maioria não. Ou você quis dizer algo como "o espaço de cores de X descreve o conjunto de cores possíveis em X"?
Phresnel

2

Vamos tentar um exemplo simples. Vamos dizer que temos um espaço de cores chamado "arco-íris". Ele contém as cores de um arco-íris, por isso é composto de vermelho, laranja, amarelo, verde, azul e violeta. O espaço de cores descreve um intervalo de cores cobertas pela gama.

A profundidade dos bits, por outro lado, define quantas cores distintas podemos criar nesse espaço. Se tivéssemos apenas alguns bits, poderíamos representar apenas as cores básicas do arco-íris, mas se tivéssemos vários bits, poderíamos produzir vermelhos escuros e vermelhos brilhantes e vermelhos médios etc. Com mais bits, podemos definir valores mais exclusivos e, portanto, ter mais cores, mas eles ainda são todos os tons de vermelho, laranja, amarelo, verde, azul e violeta.

É por isso que é realmente possível que uma profundidade de bits mais alta represente uma faixa menor de cores; você acaba com muito mais precisão nas cores cobertas.

Mais tecnicamente, a taxa de bits define a granularidade das cores no espaço de cores e o espaço de cores define os valores mínimo e máximo da cor (e possivelmente outras coisas também, dependendo do espaço), mas você pode ter qualquer número de etapas entre esses valores.

Os bits extras para expandir o espaço de cores que você cobre, dão um controle mais preciso das cores dentro do espaço de cores ou fazem alguma combinação dos dois.


1

Uma maneira fácil de pensar sobre essas coisas é que os espaços de cores são recipientes. Eles contêm os valores de cores do espaço para o qual foram criados. Se eles são espaços de cores RGB, os valores são RGB-0-255 em cada canal. Se valores CMYK 0-100.

Esses valores não mudam se o volume do espaço de cores mudar. O que altera o volume de um espaço de cores são os valores CIEXYZ que definem esse espaço. Um espaço de cor de volume maior geralmente pode conter cores mais saturadas. Um exemplo disso é o sRGB, um pequeno espaço de cores em volume e o ProPhoto, um grande espaço de cores em volume. Abrir uma imagem sRGB no Photoshop produz um resultado esperado, mas atribuir o perfil ProPhoto ICC altera drasticamente a cor da imagem e a torna mais saturada, mas os valores RGB não foram alterados. Apenas o relacionamento deles com o CIELab. Esses valores CIEXYZ que definem o volume do espaço de cores são convertidos em CIELab e depois no espaço de destino.

Profundidade de bits é a quantidade de informações de cores disponíveis em um pixel. Isso é explicado muito bem aquiMaior profundidade de bits aplicada à fotografia e às imagens digitais permite mais informações de imagem em cada pixel. Essa profundidade de bits mais alta fornece maior ajuste ao abrir sombras ou recuperar detalhes de realce. Lembre-se de que a profundidade de bits do pixel é renderizada e não a profundidade de bits capturada. Lembre-se de que, quando os bits ou o espaço de cores são reduzidos, eles não podem ser expandidos. Levar uma imagem de 8 bits para 16 bits não cria mais bits por pixel, simplesmente dobra os bits no pixel de 8 bits. A mesma coisa com espaços de cores. Se a imagem foi renderizada em sRGB e agora você deseja que todas essas cores brilhantes sejam impressas na sua impressora de gama grande, lamentamos que essas cores não existam mais nessa imagem sRGB. Comece de novo e renderize esses pixels no espaço de cores maior.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.