Os sistemas para produção de imagens coloridas trabalham sempre a partir de um grupo de cores ditas primárias ou componentes. As outras cores são obtidas pela mistura das dessas primárias. Para poder mistura-las é preciso poder variar a quantidade com que cada uma entra na composição de uma cor final.
O grupo de cores primárias varia muito e depende em primeiro lugar das possibilidades físicas do suporte que irá apresentar as cores. Se for papel branco, sobre o qual se queira mostrar uma fotografia, temos uma situação completamente diferente de uma tela de telefone celular na qual se queira mostrar a mesma imagem.
Mas em todas as situações há uma coisa em comum: existe uma quantidade mínima e uma máxima com que se pode incluir uma determinada cor primária na receita de uma cor “composta”. Se for papel impresso com uma ink-jet o mínimo será obtido pelas menores gotículas que a cabeça de impressão consiga jogar no papel com a menor densidade possível mas que, aos nossos olhos, colocados a uma distância determinada, se apresente como uma cor contínua, uniforme e não formada por pequenos pontos. É por isso que impressoras mais sofisticadas possuem dois tons de magenta, dois de ciano e dois ou até mais de preto: quando um tom escuro chegou à menor gotícula e a retícula não pode ser mais aberta sem perda de continuidade, passa-se ao tom mais claro.
Já a quantidade máxima será quando a cabeça de impressão jogar tanta tinta que cobrirá o papel por completo. O limite será a necessidade de secagem e cuidados para não enrugar o papel e não escorrer ou borrar as peças da impressora.
Um monitor de LEDs, uma tela de celular ou tablet, segue um princípio semelhante. A cor mínima é quando o LED correspondente está aceso com o mínimo de intensidade que o hardware possibilita. Obviamente a cor máxima é quando estiver acesso e emitindo o máximo de energia luminosa naquela cor pelas possibilidades daquele hardware. O máximo de brilho.
Nos casos de imagens digitais, quando estão gravadas na forma de arquivo, elas precisam poder ativar esses máximos e mínimos para cada cor primária. Para cada pixel haverá uma receita com as quantidades de cada cor variando entre esses limites. Se você não tem certeza sobre o que é um pixel leia antes este artigo. Quando o arquivo for lido para que a imagem correspondente seja apresentada por uma impressora, ou uma tela de um computador, o controlador destes dispositivos irá render os máximos e mínimos que ele for capaz e, proporcionalmente, os valores intermediários. O arquivo é apenas uma receita. A cor física que enxergamos é feita pelo hardware/software que interpretam essa receita.
A profundidade de cor aparece justamente quando se coloca a questão de quantas cores intermediárias o arquivo deve guardar entre a máxima e a mínima. A questão faz sentido pois um arquivo digital só guarda números inteiros (zeros e uns, para ser mais exato). Então é preciso se decidir quantos tons de vermelho, por exemplo, o arquivo será capaz de guardar. Se alguém disser que para cada cor do sistema RGB (red, blue, green) teremos 10 tons diferentes indo do mínimo ao máximo (que efetivamente irá depender do sistema que irá de fato gerar as cores), não haverá uma tonalidade entre o vermelho 2 e o 3. Será sempre ou 2 ou 3. Haverá um “salto” de uma cor para a seguinte em uma escada de intensidades.
Agora a questão dos bits. Por que a profundidade de cor é expressa em número de bits? É que os arquivos são feitos de uma sequência enorme de bits, os tais do zeros e uns. Imagine que as gradações de cores primarias fossem guardadas em vidrinhos em uma grande prateleira. Imagine que você precisaria rotular esses vidrinhos para diferenciar essas variações usando apenas zeros e uns. Se você usar 2 dígitos poderá criar apenas 4 rótulos diferentes: (0,0), (1,1),(0,1),(1,0). Se acrescentar um terceiro dígito irá dobrar esse número pois poderá fazer os mesmos 4 pares começando uma vez com 0 e outra vez com 1. Terá assim o dobro de 4 que é 8. Cada dígito que você acrescentar irá, pelo mesmo motivo, dobrar o número de rótulos e sua paleta de cores irá crescendo exponencialmente (na base 2).
Um arquivo RGB de 8 bits por canal, com profundidade de cor total de 24 bits (3×8), é um arquivo que pode guardar para cada uma das cores primárias 28 = 256 gradações diferentes. É como se ele tivesse 3 prateleiras com vidrinhos de cores com 256 variações da mais fraquinha até a mais forte para cada uma. Cada cor composta seria feita com uma combinação qualquer de três vidrinhos. Mas note mais uma vez que isso é apenas informação, se o sistema a reproduzir essa cor fisicamente é ou não capaz de render tantas variações e dentro de que limites de intensidade, isso é uma outra história.
As cores compostas podem combinar 256 x 256 x 256 e formar um total de 16.777.216 de cores diferentes. Cada pixel desse arquivo utiliza 24=8+8+8 bits. Como um byte é um conjunto de 8 bits, ele gasta 3 bytes por pixel se estiver sem nenhum tipo de compressão (caso que raramente acontece).
Com essa quantidade de cores nossos olhos e cérebro já não conseguem mas distinguir dois tons vizinhos em qualquer direção, seja escurecendo ou clareando uma, duas ou as três cores do padrão RGB. Uma variação mínima, de um passo, entre uma dada cor e a seguinte, não é percebida pela nossa visão.
Acima está uma figura que teoricamente deveria mostrar um resumo do que significa 16 milhões de cores. Digo um resumo pois como essa figura tem 480 x 480 pixels elas só pode justapor 480 x 480 = 230.400 pixels cada um com uma cor. Além disso, seu driver de tela talvez tenha achado por bem encurtar mais esse range para poupar memória. Ele não sabe que o assunto é justamente mostrar o máximo de cores. Talvez você esteja até vendo um padrão meio quadriculado mas isso é novamente por que os sistemas são orientados a economizar memória por conta de render as imagens mais rapidamente.
Uma imagem de 24 bit já é portanto considerada true color pois reproduz mais cores do que conseguimos distinguir. Significa que a natureza digital que varia em degraus e não em uma rampa contínua não pode mais ser percebida pois os degraus ficaram desprezivelmente pequenos.
Importante frisar novamente que uma coisa é o que o arquivo guarda e outra coisa é o que o binômio hardware/software mostra. Os fabricantes e desenvolvedores adequam as informações contidas nos arquivos de imagem às suas limitações e opiniões a respeito do que é possível e suficiente para render bem um arquivo de imagens.
Mesmo a questão do padrão true color em 24 bits e 16 milhões de cores é quase sempre interpretado e modificado de acordo com gostos e tecnologias. Tanto na leitura como na gravação. Por exemplo, nossos olhos são menos sensíveis a variações no azul do que no vermelho ou verde, então alguns sistemas roubam alguns bits de uma gama a outra. Isso reduz as possibilidade para o azul e aumenta para as outras cores. O objetivo é render a imagem mais realista. Há também um quarto canal alpha que define a transparência do pixel caso haja alguma coisa “por baixo” dele e esse canal também consome alguns bits a mais.
O objetivo desse resumo rápido foi mais o de introduzir o conceito básico do que é profundidade de cor. Porém, colorimetria é um campo muito vasto e muita coisa pode ser otimizada de modo a se economizar memória e aumentar a velocidade de transmissão de imagens sem perder a impressão de veracidade. Tenha certeza de que os desenvolvedores dessas tecnologias são muito criativos e conseguem verdadeiros milagres.
Também não se engane achando que com 24 bits já entramos no true color e então esse é o limite. Na verdade existem arquivos de até 48 bits. Qual é o sentido de se guardar variações tão sutis se elas não são percebidas pelo olho humano? Sobre isso é melhor você ler o artigo que fala sobre arquivos RAW pois estes são um bom exemplo de quando mais bits podem ajudar e muito.