Codificação de cores de computador

As cores da codificação do computador são o conjunto de convenções para exibir ou imprimir um dispositivo de computação da cor da imagem , em vez de preto e branco . A codificação é baseada na síntese aditiva de cores tricrômicas .

No nível periférico, a imagem é sempre matricial , e definimos, para cada pixel , um trio de valores ( vermelho, verde, azul ). Os arquivos podem salvar a imagem na forma de um array desses valores, eventualmente compactados , ou então na forma vetorial , ou seja, na forma de instruções que permitem reconstituir uma imagem raster. No segundo caso, a cor também pode ser salva na forma vetorial, com parâmetros ( matiz, saturação, luz ).

Os módulos permitem, nos programas de edição de imagens, a determinação e modificação das cores pelo usuário com um ou outro desses conjuntos de parâmetros.

Princípios

Surge a questão de quantas informações são necessárias para exibir as cores. Na melhor das hipóteses, podemos distinguir algumas dezenas de níveis de cinza. A codificação de um byte permite 256 níveis; é prático e temos certeza de que será necessário mais do que um desvio de um para obter tons de cinza visualmente diferentes. Com meio byte, teríamos apenas 16 tons, o que não é suficiente; um número intermediário de bits entre 4 e 8 complica todas as operações.

Como os mesmos motivos se aplicam a cada canal de cor primária (vermelho, verde, azul), eles podem receber um byte cada. Com um byte para cada canal, mais de 16 milhões de códigos de cores são obtidos.

Uma estimativa aproximada da capacidade de distinguir cores fornece cerca de 15 a 20.000 tons identificáveis; tomando como referência o limiar de discriminação de cores, chega-se, nas melhores condições de exame, a meio milhão de cores. Entre essas cores, algumas estão fora da gama de telas e impressoras; mas a magnitude do limiar de discriminação, expressa em magnitude dos componentes (vermelho, verde, azul), não é distribuída uniformemente entre as cores, de modo que uma divisão da faixa de valores pelo número de cores que se pode distinguir não seria adequado. Por outro lado, entre o código e o display, os valores representativos da cor serão multiplicados por vários coeficientes, permitindo garantir que o branco do código produz o branco e que os cinzas são neutros e corretamente distribuídos. Esses ajustes de contraste e gama são feitos em segundo plano, no computador ou no periférico.

Ao codificar mais de trinta vezes mais cores do que o olho pode ver, podemos, no entanto, ter certeza de ter informações suficientes, de modo que dois códigos que diferem apenas por 1 ou 2 dos 256 valores possíveis de cada canal dão uma perfeita cor indistinta.

Número de bits por pixel

Os antigos modos gráficos VESA 10Eh, 111h, 114h, 117h e 11Ah usados ​​em particular no MS-DOS executam a codificação RGB de um pixel de 16 bits. Os bits 0 a 4 fornecem 32 valores de azul , os de 5 a 10 , 64 níveis de verde , o principal elemento de luminância, e os 11 a 15 codificam 32 valores de vermelho . A maioria dos computadores ainda permite que esse modo de exibição seja usado quando a placa gráfica permitir.

Esse número de bits resulta em 65.536 cores, não o suficiente para que a transição entre duas cores vizinhas seja sempre insensível, especialmente com configurações de tela contrastantes para facilitar a leitura do texto. Além disso, o sistema deve separar valores que não sejam bytes. Conforme o desempenho dos computadores e monitores melhorou, os fabricantes mudaram para um código de cores de um byte por canal ou 24 bits.

Paletes

Quando a potência dos (antigos) computadores ou a velocidade do canal de transmissão (Web) limita o tamanho dos arquivos, uma tabela de correspondência chamada, por analogia à dos pintores , paleta permite registrar as cores em 8 bits, que são os índices de uma matriz que lhes corresponde com 256 R , G , B valores . Este processo divide o tamanho do arquivo de uma imagem não compactada por 3. O software gráfico pode calcular a paleta ideal para uma imagem e anexá-la a essa imagem. O tamanho da paleta, 768 bytes (3 vezes 256), costuma ser insignificante. O software também calcula a renderização de cores intermediárias por triagem .

Os computadores também oferecem uma paleta padrão . Essa paleta não foi padronizada. Houve, no entanto, um certo consenso ligado à existência de uma espécie de padrão HTML que exige que uma determinada paleta chamada "  paleta web  " (em inglês paleta web segura  " ou paleta de segurança  " ) deve ser favorecida: no fatos, quase todos os navegadores da web respeitaram esta paleta cujos três componentes RGB podem ser um dos seguintes 6 múltiplos de 51: 0, 51, 102, 153, 204 ou 255, resultando em 6 × 6 × 6 ou 216 cores. Os arquivos HTML podem chamar as cores nesta paleta por um nome convencional, em inglês.

A paleta, seja ela qual for, é geralmente apresentada ao usuário na forma de um mosaico de cores.

Compressão de cor

Os processos que visam reduzir, com o mínimo de perda de qualidade, o tamanho dos arquivos, obviamente não preservam os 24 bits por pixel, enquanto 18 bits bastam para codificar o meio milhão de cores que um observador pode distinguir da melhor forma. condições. Para conseguir essa redução, o software procede como é feito na televisão em cores . Eles convertem o tripleto (vermelho, verde, azul) em um tripleto (luminância, diferença de azul, diferença de vermelho), com o espaço de cores YCbCr . Oito bits codificam a luminância; com mais oito bits para o croma, quatro para cada canal, chegamos a 65.536 cores, mais do que o número estimado de cores identificáveis. Matrizes de transformação e tabelas de correspondência ajudam a refinar a correspondência entre as cores e a sensibilidade visual às diferenças de cores.

Para compactação JPEG, o valor de luminância é transmitido inteiramente aos módulos de compactação; a crominância , que aglomera os dois valores de diferença de cor, é subamostrada; também pode ser quantizado, reduzindo o número de cores codificadas.

Codificação perceptual

No software de edição de imagens raster ou vetoriais , o usuário deve escolher e modificar as cores. Ele pode apontar para uma sombra em um gradiente, mudar a posição de um cursor, introduzir um valor numérico. Em todos os casos, a tela, uma superfície plana, tem duas dimensões, enquanto a cor tem três parâmetros.

Desde o início da exibição de cores, reconheceu-se que a escolha das cores era feita mais facilmente em um espaço de cores organizado pelas magnitudes de percepção de cores, matiz, saturação e luminosidade, do que no cubo de valores (vermelho, verde Azul ) Existem basicamente duas variantes, TSV e TSL . Os valores de matiz, saturação e luminosidade ou valor são dados em números decimais, o que permite uma conversão exata e reversível com os valores (vermelho, verde, azul) em números inteiros em um byte.

Arquivos de imagem vetorial, como Scalable Vector Graphics (SVG), oferecem suporte a essas definições de cores, assim como outros objetos gráficos. É o mesmo para Cascading Style Sheets ( (en) Cascading Style Sheets , CSS), layout das páginas HTML e documentos escritos.

Transparência

O interesse em codificar cores em 24 bits é bastante moderado quando os computadores processam bytes de 16 bits. Resta um byte não utilizado.

Em software de edição de imagens, muitas vezes é interessante trabalhar separadamente de imagens e planos de fundo, como celulose de desenho animado. Para que isso seja possível, a transparência deve ser indicada em cada pixel. Poderíamos indicar, com apenas um bit, se a camada (ou camada ) era transparente ou opaca. Atribuir um valor de transparência, em um byte, permite todas as misturas. Este valor é geralmente referido como α ( alfa ). A renderização de um pixel é obtida multiplicando e adicionando, recursivamente , os valores das camadas. Para cada componente (vermelho, verde, azul), o valor renderizado é igual ao valor da camada superior, multiplicado por (1 - α) mais o valor de renderização das camadas inferiores, multiplicado por α.

O aumento do poder de computação dos computadores tornou possível combinar várias imagens, transmitidas separadamente. Desta forma, um fundo pode ser transmitido apenas uma vez, então uma parte móvel pode ser adicionada a ele. O canal alfa está incluído nas imagens de vídeo HTML 4 e MPEG 4

Detalhes

A codificação de um pixel pode ser feita em 32 bits, dos quais 24 bits são usados ​​para codificar a cor, sendo os 8 bits restantes:

Na primeira parte do artigo, estaremos interessados ​​apenas na codificação de cores de 24 bits . As explicações fornecidas corresponderão, portanto, não apenas à representação de cores de 32 bits, mas também à representação de 24 bits.

Os 24 bits de uma cor são divididos em 3 vezes 8 bits:

Uma sequência de 8 bits permite codificar um inteiro entre 0 e V max = 255  : na verdade, 2 8 é igual a 256. Consequentemente, o valor do componente vermelho de um pixel pode ser representado de acordo com 256 níveis diferentes (variando de 0, sem vermelho, a 255, intensidade máxima do vermelho). E é o mesmo para os outros 2 componentes primários, verde e azul.

Exemplo: O quadrado oposto Carnation.pngé composto de pixels de uma cor uniforme, cujas características RGB são as seguintes:A codificação binária de 24 bits dessa cor é, portanto, a seguinte:

11111011 11010000 10010111 .

Existem duas famílias principais de representação de cores, como podem aparecer em uma imagem apresentada em uma tela de computador: a codificação tricrômica RGB (ou RGB em inglês), cujos princípios acabamos de descrever, e a codificação perceptiva da saturação de luz Hue (ou HSL em Inglês) com base em classificações artísticas e psicofísicas de percepção de cores.

A codificação RGB corresponde aos meios físicos de produção de cor em periféricos de computador  : na entrada (scanner colorido, câmera digital, filmadora, etc.), bem como na saída (tela colorida, impressora, processo de quatro cores, copiadora colorida, etc.) .

A codificação STL , destinada a operadores humanos, é adequada para as características de sua visão.

Os modelos de descrição HSL apresentam parâmetros simplificados, adequados para codificação de cores de computador e permitem a conversão rápida de RGB para HSL e vice-versa.

Exemplo:

Portanto, vamos ver agora quais são os valores dos 3 componentes da codificação HSL (HSL) , uma das codificações do grupo perceptivo, da cor escolhida anteriormente, expressa (como costuma ser o caso ) De acordo com uma escala que varia de 0 a 240:

Ferramentas de seleção de cores

Uma ferramenta de seleção de cores geralmente tem pelo menos 4 partes:

Para entender como funciona um seletor de cores, é conveniente visualizar todas as cores disponíveis da seguinte forma:

A escolha de uma cor consiste, portanto, em definir um ponto localizado dentro (ou sobre) este cone de cores .

Em todos os casos, a definição de uma cor por seus componentes, luminosidade de saturação de matiz requer uma escolha tripla que deve necessariamente ser realizada pelo operador em 2 etapas:

Gradiente de tons

No cálculo dos gradientes de cores, a escolha das quantidades que serão interpoladas para o cálculo das cores intermediárias altera consideravelmente a renderização, pois as cores possuem tonalidades diferentes. A variação mais óbvia é vista no gradiente entre as cores complementares:

Veja também

Bibliografia

Artigos relacionados

links externos

Notas e referências

  1. Robert Sève , Ciência da cor: Aspectos físicos e perceptivos , Marselha, Chalagam,2009, p.  229.
  2. (em) "  Video Electronics Standards Association  " , em http://www.petesqbsite.com/ ,22 de outubro de 1991(acessado em 3 de março de 2017 )
  3. "  VESA 1.2 functions under DOS  " , em www-evasion.imag.fr (acessado em 3 de março de 2017 )
  4. O termo luminância não tem significado aqui na colorimetria , uma vez que os componentes vermelho, verde e azul não estão linearmente relacionados aos valores colorimétricos.
  5. Ver composição Alpha
  6. (em) John Watkinson , The MPEG Handbook: MPEG-1, MPEG-2, MPEG-4 , Focal Press,2004, 2 nd  ed. , 435  p. ( ISBN  978-0-240-80578-8 , leitura online ) , p.  24sq et.al.
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">