O sensor das máquinas fotográficas digitaisTopObjectivo, utilização, Cores e códigos hexadecimais

Cores e códigos hexadecimais

A selecção de uma cor pelo seu código aparece com alguma frequência no Gimp. Dois exemplos: seleccionar a cor de "foreground", especificar uma cor de uma palete (modo indexado).


Fundamentos
Clique duas vezes no rectângulo da cor "foreground" (na "Toolbox"). Aparece uma janela intitulada "Change foreground color" que lhe permite escolher uma cor. Uma dos modos de selecionar uma cor é introduzir um código de 6 caracteres na entrada "HTML notation", por exemplo

c7b048

e premir "return". (os caracteres podem ser 0, 1, 2,...9, a, b, c, d, e, f). A cor correspondente ao código c7b048 é um amarelo "torrado"...como podemos ver na seguinte janela de ajuste da cor de "foreground"

(...)

Nota. Também pode usar maiúsculas, A, B, C, D, E, e F.

Como interpretar aquele código, c7b048? Primeiro vamos decompô-lo em 3 grupos de 2 caracteres, correspondentes e 3 "bytes",

c7 b0 48

Os 3 grupos representam respectivamente a intensidade do vermelho (R), do verde (G) e do azul (B). Assim, temos

R: c7,     G: b0,     B: 48

Mas como é que a intensidade do vermelho é representada por c7? Ainda se fosse por um número, como 59...Acontece que c7 representa um número escrito na base 16. Como escrevemos um número na base 16? Primeiro precisamos dos algarismos:

Na base 16 (também se diz "em hexadecimal"), o "a" corresponde ao 10, o "b" ao 11, o "c" ao 12, o "d" ao 13, o "e" ao 14, e o "f" ao 15.

Então da mesma maneira que na base 10 escrevemos 192=1×100 + 9×10 + 2, podemos converter c7 (escrito na base 16) para a base 10

c7 -> 12×16 + 7 = 199

Convertendo também as intensidades de G e de B para a base 10, temos

R: 199,     G: 176,     B: 72

Que é que isto quer dizer? A cor mais escura que conseguimos definir com 2 algarismos na base 16 é 0 (00-> 0×16+0) e a cor mais clara é 255 (ff -> 15×16+15). Assim, o nosso "amarelo torrado" é formado por um vermelho forte, somado a um verde relativamente forte e a um azul fraco.

Na base 2, em 3 "bytes" (R, G, B) ficaria

c7 b0 48 -> 1100 0111    1010 0000    0100 1000

Nota. Para melhor compreensão colocamos espaços entre alguns algarismos. Mas, na realidade, esses espaços não deviam existir; por exemplo, a conversão anterior deveria ter sido escrita

c7b048 -> 110001111010000001001000

Já agora, como exemplo, vamos converter 11000111 (intensidade do R, escrita na base 2) para a base 10:

11000111 -> 1×27 + 1×26 + 0×25 + 0×24 + 0×23 + 1×22 + 1×21 + 1×20 = 128+64+4+2+1 = 199,

confirmando um resultado anterior.


Algumas observações

  1. A base 16 não tem nada a ver com cores, é apenas um modo conveniente de representar a sua intensidade, e de, mais geralmente, representar o conteúdo de um "byte" (através de 2 algarismos na base 16). É contudo utilizada extensivamente para representar cores, por exemplo, em HTML, CSS, e javascript e em muitas aplicações.
  2. Embora os 2 algarismos na base 16 permitam 256 níveis de intensidade (0 a 255) pode ser necessária mais qualidade e usar, por exemplo, 3 algarismos, que correspondem a 12 bits; neste caso podemos representar 4096 níveis de intensidade. Muitas máquinas fotográficas usam (no formato RAW) 12 ou 14 bits para representar uma intensidade de cor; resta saber se os sensores têm qualidade que corresponda a esta discriminação...
    Por comparação, nos CDs de música, cada amostra (de cada canal) utiliza 2 "bytes", podendo assim registar 65536 níveis de amplitude de som (ambos os canais, esquerdo e direito, são amostrados 44100 vezes por segundo).
  3. Os cinzentos têm igual quantidade de R, G, e B. Por exemplo, 080808 representa um cinzento escuro.
  4. O facto de, combinando aditivamente apenas 3 cores (RGB), conseguirmos obter praticamente todas as cores que o ser humano consegue ver, é um fenómeno acidental de origem biológica. Tem a ver com a nossa retina conter 3 tipos de células foto-receptoras "responsáveis" pela visão diurna; essas células chamam-se "cones". Os 3 tipos de cones são sensíveis essencialmente ao vermelho, ao verde e ao azul. Muitas espécies de outros vertebrados (não mamíferos) consegue distinguir cores pelo menos tão bem como nós e alguns peixes, pássaros e répteis têm até mais que 3 tipos de cones...e precisariam de outro hardware e software. Entre um sem número de referências bibliográficas sobre o mecanismo da visão a cores, recomendamos, por exemplo, uma discussão já antiquada, mas clara e interessante, no Capítulo 36 do Volume I das Feynman Lectures on Physics.


Alguns exercícios

  1. Na base 16: qual o número que se segue a ff? Qual o número que se antecede f0? Efectue a soma fa+bb. Pode pensar por analogia com a base 10.
  2. Indique um código para um azul esverdeado (ou verde azulado) bastante forte.
  3. Veja aqui os códigos hexadecimais de várias cores e com diferentes graus de "luminosidade" ("shades").


Em jeito de resumo


O sensor das máquinas fotográficas digitaisTopObjectivo, utilização, Cores e códigos hexadecimais