Paleta na computação

Em computação gráfica, uma paleta é um conjunto finito de cores. As paletas podem ser otimizadas para melhorar a precisão da imagem na presença de restrições de software ou hardware.

Terminologia
Uma paleta de cores adaptativas expandindo de 2 cores para 256 cores, demonstrando como a imagem muda (clique para ver animação).
Dependendo do contexto, o termo paleta e termos relacionados, como paleta da Web e paleta RGB, podem ter significados um tanto diferentes. Os seguintes são alguns dos significados amplamente utilizados para paleta em gráficos de computador:

O número total de cores que um determinado sistema é capaz de gerar ou gerenciar (embora, devido às limitações da memória de vídeo, talvez não seja possível exibi-los todos simultaneamente):
paleta completa: por exemplo, as telas Highcolor são ditas para ter uma paleta RGB de 16 bits.

A seleção limitada de cores que podem ser exibidas simultaneamente:
Em toda a tela:
Seleção de paleta fixa: um adaptador de tela determinado pode oferecer uma seleção de cor fixa quando seus registros de hardware estão adequadamente configurados. Por exemplo, o Color Graphics Adapter (CGA), em um dos modos gráficos padrão, pode ser configurado para mostrar a chamada paleta # 1 ou a paleta # 2: duas combinações de 3 cores fixas e uma cor de fundo definida pelo usuário cada.
cores selecionadas ou cores escolhidas: neste caso, a seleção de cores, geralmente a partir de uma paleta completa mais ampla explicitamente disponível, é sempre escolhida por software, tanto pelo usuário quanto por um programa. Por exemplo, o adaptador de exibição VGA padrão é dito fornecer uma paleta de 256 cores simultâneas de um total de 262.144 cores diferentes.
paleta padrão ou paleta do sistema: as cores selecionadas foram oficialmente padronizadas por algum corpo ou corporação. Por exemplo, as cores bem conhecidas da Web para usar com navegadores da Internet ou a paleta padrão do Microsoft Windows.

Em uma imagem individual:
mapa de cores ou tabela de cores: a seleção de cores limitada é armazenada dentro do arquivo de imagem de cor indexado fornecido. Por exemplo, GIF.
paleta de imagem ou cores de imagem: a seleção de cores limitada é assumida como a lista completa das cores que a imagem digital possui, mesmo quando o arquivo de imagem não emprega codificação de pixels de cor indexada.
O hardware subjacente que pode ser usado para manter essas cores simultâneas:
paleta de hardware ou tabela de pesquisa de cores (CLUT): para mostrá-los, os valores das cores selecionadas devem ser carregados nos registradores de hardware de cores do subsistema de exibição. Por exemplo, os registros de hardware do Commodore Amiga são conhecidos como sua paleta de cores e seu CLUT, dependendo das fontes.

Paletas GUI
Um arranjo de um conjunto limitado de cores de usuário ou sistema que podem ser escolhidas. Nesses casos, a paleta de cores da expressão ou a paleta de cores do usuário são equivalentes comuns. Este uso se assemelha a uma verdadeira paleta de artistas.
Uma paleta de ferramentas, uma área retangular, chamada janela de paleta, da tela da aplicação com botões, ícones ou outros controles GUI disponíveis para acesso rápido ou acesso a um símbolo; se o usuário puder colocá-lo em qualquer lugar, movendo-o através de um mouse ou dispositivo apontador semelhante, é conhecido como uma paleta flutuante. Uma paleta para escolher cores também pode ser uma paleta flutuante.

Paleta mestre
Um aplicativo pode, por sua vez, mostrar muitas miniaturas de imagens diferentes em um mosaico na tela. É óbvio que o programa não pode carregar todas as paletas adaptativas de todas as imagens exibidas na miniatura ao mesmo tempo nos registros de cores de hardware. Uma solução é usar uma paleta mestre única ou comum ou paleta universal, que pode ser usada para exibir com precisão razoável qualquer tipo de imagem.

Isso é feito selecionando cores de tal forma que a paleta mestre compreende um espaço de cores RGB completo “em miniatura”, limitando os níveis possíveis que os componentes vermelho, verde e azul podem ter. Esse tipo de arranjo às vezes é referido como uma paleta uniforme. O olho humano normal tem sensibilidade para as três cores primárias em diferentes graus: quanto mais para o verde, menos para o azul. Portanto, arranjos RGB podem aproveitar isso atribuindo mais níveis para o componente verde e menos para o azul.

Uma paleta mestre construída dessa maneira pode ser preenchida com até 8R × 8G × 4B = 256 cores, mas isso não deixa espaço na paleta para cores reservadas, índices de cores que o programa poderia usar para fins especiais. É mais geral usar apenas 6R × 6G × 6B = 216 (como no caso de cores da Web), 6R × 8G × 5B = 240 ou 6R × 7G × 6B = 252, o que deixa espaço para algumas cores reservadas.

Então, ao carregar o mosaico de miniaturas de imagens (ou outras imagens heterogêneas), o programa simplesmente mapeia cada pixel de cor indexado original para o mais aproximado na paleta mestre (depois de despejar isso nos registradores de cores de hardware) e grava o resultado no buffer de vídeo. Aqui está uma amostra de um mosaico simples das quatro miniaturas de imagens usando uma paleta mestre de 240 cores dispostas RGB mais 16 tons intermediários adicionais de cinza; Todas as imagens são juntas sem perda significativa de precisão de cores:

Paleta adaptativa
Ao usar técnicas de cores indexadas, as imagens da vida real são representadas com melhor fidelidade ao original truecolor usando paletas adaptativas (paletas adaptativas às vezes espelgadas), nas quais as cores são selecionadas ou quantificadas através de algum algoritmo diretamente da imagem original (escolhendo o cores mais frequentes). Desta forma, e com mais distorções, a imagem de cor indexada pode quase coincidir com o original.

Mas isso cria uma forte dependência entre os pixels da imagem e sua paleta adaptativa. Supondo uma exibição gráfica de profundidade de 8 bits limitada, é necessário carregar a paleta adaptativa de uma imagem dada nos registradores de hardware de cores antes de carregar a própria superfície da imagem no buffer de quadros. Para exibir imagens diferentes com diferentes paletas adaptativas, elas devem ser carregadas uma a uma, como em uma apresentação de slides. Aqui estão amostras de quatro imagens de cores indexadas diferentes com manchas de cores para mostrar suas respectivas paletas adaptativas (e em grande parte incompatíveis):

Transparência em paletas
Uma única entrada de paleta em uma imagem de cor indexada pode ser designada como uma cor transparente, para realizar uma sobreposição de vídeo simples: sobrepondo uma imagem dada em um plano de fundo de maneira que alguma parte da imagem sobreposta ocultasse o fundo e o restante não . A sobreposição de títulos e créditos de filmes / TV é uma aplicação típica de sobreposição de vídeo.

Na imagem a ser sobreposta (a cor indexada é assumida), uma determinada entrada de paleta desempenha o papel da cor transparente. Normalmente, o índice número 0, mas outro pode ser escolhido se a sobreposição for realizada por software. Em tempo de design, a entrada da paleta de cores transparente é atribuída a uma cor arbitrária (geralmente distintiva). No exemplo abaixo, um ponteiro de seta típico para um dispositivo apontador é projetado sobre um fundo laranja, então aqui as áreas laranja indicam as áreas transparentes (esquerda). Em tempo de execução, a imagem sobreposta é colocada em qualquer lugar ao longo da imagem de fundo, e é combinada de tal forma que, se o índice de cores de pixels for a cor transparente, o pixel de fundo será mantido, caso contrário, ele será substituído.

Esta técnica é usada para ponteiros, em videogames bidimensionais típicos para personagens, marcadores e assim por diante (os sprites), títulos de vídeo e outras aplicações de mistura de imagens.

Alguns primeiros computadores, como o Commodore 64, o MSX e o Amiga suportam sprites e / ou a sobreposição de vídeo em tela cheia por hardware. Nesses casos, o número de entrada da paleta transparente é definido pelo hardware, e costumava ser o número 0.

Alguns formatos de arquivo de imagem em cores indexados como GIF e PNG suportivamente suportam a designação de uma determinada entrada de paleta como transparente, selecionável livremente entre qualquer uma das entradas de paleta usadas para uma determinada imagem.
O formato de arquivo BMP reserva espaço para valores de canais Alpha na sua Tabela de cores, no entanto, este espaço não está sendo utilizado para armazenar dados de translucidez e é definido como zero.

Ao lidar com imagens truecolor, algum equipamento de mistura de vídeo pode empregar o tripleto RGB (0,0,0) (sem vermelho, sem verde, sem azul: o som mais escuro de preto, às vezes referido como super-preto neste contexto) como a cor transparente . Em tempo de design, é substituído pelo chamado rosa mágico. Da mesma forma, o software típico de editoração eletrônica pode assumir branco puro, objectiva RGB (255,255,255) de fotos e ilustrações a serem excluídas para permitir que os parágrafos de texto invadam a caixa delimitadora da imagem para um arranjo de texto irregular em torno dos assuntos da imagem.

Os programas de pintura em 2-D, como o Microsoft Paint e Deluxe Paint, podem empregar a cor de fundo designada pelo usuário como a cor transparente ao realizar operações de corte, cópia e colar.

Embora relacionados (devido à sua utilização para os mesmos fins), as máscaras de bit de imagem e os canais alfa são técnicas que não envolvem o uso de paletas nem cores transparentes, mas a imagem fora de imagem adicionou camadas extras de dados binários.

Paletas de software

Microsoft Windows
Os aplicativos Microsoft Windows gerenciam a paleta de dispositivos de exibição de cores indexados de 4 bits ou 8 bits através de funções especializadas da API Win32 (para modos de exibição Highcolor e Truecolor, tais funções não possuem nenhuma funcionalidade interessante). Essas APIs lidam com a chamada paleta do sistema e com muitas paletas lógicas.

A paleta do sistema é uma cópia na RAM dos registradores de hardware da tela colorida, principalmente uma paleta física, e é um recurso comum compartilhado exclusivo do sistema. Na inicialização, ele é carregado com a paleta padrão do sistema (principalmente uma paleta mestre que funciona bem o suficiente com a maioria dos programas).

Quando um determinado aplicativo pretende produzir gráficos e / ou imagens coloridos, ele pode definir sua própria paleta lógica, ou seja, sua própria seleção privada de cores (até 256). Supõe-se que cada elemento gráfico que o aplicativo tenta mostrar na tela empregue as cores de sua paleta lógica. Todo programa pode gerenciar livremente uma ou mais paletas lógicas sem interferência esperada (antecipadamente).

Antes que a saída seja efetivamente feita, o programa deve perceber sua paleta lógica: o sistema tenta combinar as cores lógicas com as físicas. Se uma cor pretendida já estiver presente na paleta do sistema, o sistema mapeia internamente os índices lógico e de paleta do sistema (devido a que raramente coincidem). Se a cor pretendida ainda não estiver presente, o sistema aplica um algoritmo interno para descartar a cor menos usada na paleta do sistema (em geral, alguns usados ​​por outra janela em segundo plano) e substitui-a pela nova cor. Devido a um espaço limitado para cores na paleta do sistema, o algoritmo tenta também remapear cores semelhantes e sempre evitando cores redundantes.

O resultado final depende do número de aplicativos que estão trabalhando com cores na tela. A janela de primeiro plano sempre é favorecida, então as janelas no fundo podem se comportar de maneiras diferentes: de se tornarem corrompidas para se redesenhar rapidamente. Quando a paleta do sistema muda, o sistema desencadeia um evento específico para informar cada aplicativo. Quando recebida, uma janela pode redata-se rapidamente usando uma única função de API Win32. Mas isso deve ser feito explicitamente no código do programa; daí o fato de que muitos programas faltam em gerenciar esse evento e suas janelas se corromperam nesta situação.

Um aplicativo pode forçar a paleta do sistema a ser carregada com cores específicas e até mesmo em uma ordem específica, enganando o sistema dizendo que são entradas de cores destinadas a animação (mudanças de cores rápidas das cores na paleta física em entradas específicas). O sistema não pode assumir, então, que cada entrada da paleta de hardware é gratuita para as suas mapeamentos de cores de paleta e essas entradas são excluídas do seu algoritmo. O resultado final depende das habilidades do programa de forçamento de cores e do comportamento dos outros programas (dura exatamente como no caso regular) e do sistema operacional em si.