Paleta en informática

En gráficos por computadora, una paleta es un conjunto finito de colores. Las paletas se pueden optimizar para mejorar la precisión de la imagen en presencia de restricciones de software o hardware.

Terminología
Una paleta de colores adaptativa que se expande de 2 colores a 256 colores, lo que demuestra cómo cambia la imagen (haga clic para ver la animación).
Dependiendo del contexto, el término paleta y términos relacionados como la paleta Web y la paleta RGB pueden tener significados algo diferentes. Los siguientes son algunos de los significados ampliamente utilizados para la paleta en gráficos de computadora:

El número total de colores que un sistema determinado puede generar o administrar (aunque, debido a las limitaciones de la memoria de video, es posible que no pueda mostrarlos todos simultáneamente):
paleta completa: por ejemplo, se dice que las pantallas Highcolor tienen una paleta RGB de 16 bits.

La selección limitada de colores que se pueden mostrar simultáneamente:
En toda la pantalla:
selección de paleta fija: un adaptador de pantalla determinado puede ofrecer una selección de color fija cuando sus registros de hardware están configurados adecuadamente. Por ejemplo, el Color Graphics Adapter (CGA), en uno de los modos gráficos estándar, se puede configurar para mostrar la llamada paleta n.º 1 o la paleta n.º 2: dos combinaciones de 3 colores fijos y un color de fondo definido por el usuario. cada.
colores seleccionados o colores elegidos: en este caso, la selección del color, generalmente de una paleta completa explícitamente disponible más amplia, siempre se elige por software, tanto por el usuario como por un programa. Por ejemplo, se dice que el adaptador de pantalla VGA estándar proporciona una paleta de 256 colores simultáneos de un total de 262.144 colores diferentes.
Paleta predeterminada o paleta del sistema: los colores seleccionados han sido oficialmente estandarizados por algún organismo o corporación. Por ejemplo, los conocidos colores seguros para la Web para usar con navegadores de Internet o la paleta predeterminada de Microsoft Windows.

En una imagen individual:
mapa de color o tabla de colores: la selección de color limitada se almacena dentro del archivo de imagen de color indexado dado. Por ejemplo, GIF.
Paleta de imagen o colores de imagen: se supone que la selección de color limitada es la lista completa de los colores que tiene la imagen digital dada, incluso cuando el archivo de imagen no emplea codificación de píxeles de color indexados.
El hardware subyacente que se puede usar para mantener esos colores simultáneos:
paleta de hardware o tabla de búsqueda de color (CLUT): para mostrarlos, los valores de los colores seleccionados deben cargarse en los registros de hardware de color del subsistema de visualización. Por ejemplo, los registros de hardware del Commodore Amiga se conocen como su paleta de colores y su CLUT, dependiendo de las fuentes.

Paletas GUI
Una disposición de un conjunto limitado de colores de usuario o sistema que se pueden elegir. En tales casos, la paleta de colores de expresión o la paleta de colores del usuario son equivalentes comunes. Este uso se asemeja a la paleta de un verdadero artista.
Una paleta de herramientas, un área rectangular, llamada ventana de paleta, de la pantalla de la aplicación con botones, iconos u otros controles de GUI disponibles para un comando rápido o acceso a símbolos; si el usuario puede colocarlo en cualquier lugar moviéndolo a través de un mouse o dispositivo señalador similar, se lo conoce como una paleta flotante. Una paleta para elegir colores también puede ser una paleta flotante.

Paleta maestra
Una aplicación puede, a su vez, mostrar muchas miniaturas de imágenes diferentes en un mosaico en pantalla. Es obvio que el programa no puede cargar todas las paletas de adaptación de cada miniatura de imagen mostrada al mismo tiempo en los registros de color de hardware. Una solución es usar una paleta maestra única común o una paleta universal, que se puede usar para mostrar con precisión razonable cualquier tipo de imagen.

Esto se hace seleccionando colores de tal manera que la paleta maestra comprenda un espacio de color RGB completo «en miniatura», lo que limita los niveles posibles que pueden tener los componentes rojo, verde y azul. Este tipo de arreglo a veces se denomina una paleta uniforme. El ojo humano normal tiene sensibilidad a los tres colores primarios en diferentes grados: cuanto más al verde, menos al azul. Entonces, los arreglos RGB pueden aprovechar esto asignando más niveles para el componente verde y menos para el azul.

Una paleta maestra construida de esta manera puede llenarse con hasta 8R × 8G × 4B = 256 colores, pero esto no deja espacio en la paleta para colores reservados, índices de color que el programa podría usar para propósitos especiales. Es más general usar solo 6R × 6G × 6B = 216 (como en el caso de colores web), 6R × 8G × 5B = 240 o 6R × 7G × 6B = 252, que dejan espacio para algunos colores reservados.

Luego, al cargar el mosaico de miniaturas de imágenes (u otras imágenes heterogéneas), el programa simplemente asigna cada píxel de color indexado original a su forma más aproximada en la paleta maestra (después de verter esto en los registros de color de hardware) y escribe el resultado en buffer de video Aquí hay una muestra de un mosaico simple de las cuatro miniaturas de imágenes usando una paleta maestra de 240 colores RGB dispuestos más 16 tonos intermedios de gris adicionales; todas las imágenes se combinan sin una pérdida significativa de precisión del color:

Paleta adaptativa
Al utilizar técnicas de color indexado, las imágenes de la vida real se representan con mayor fidelidad al color original original mediante el uso de paletas adaptativas (a veces paletas adaptativas deletreadas), en las que los colores se seleccionan o cuantifican mediante algún algoritmo directamente de la imagen original (seleccionando colores más frecuentes). De esta manera, y con mayor difuminado, la imagen de color indexada casi puede coincidir con el original.

Pero esto crea una gran dependencia entre los píxeles de la imagen y su paleta de adaptación. Suponiendo una pantalla gráfica de 8 bits de profundidad limitada, es necesario cargar la paleta de adaptación de una imagen determinada en los registros de hardware de color antes de cargar la superficie de la imagen en el búfer de cuadros. Para mostrar diferentes imágenes con diferentes paletas de adaptación, deben cargarse una a una, como en una presentación de diapositivas. Aquí hay muestras de cuatro imágenes de color indexadas diferentes con parches de color para mostrar sus respectivas paletas de adaptación (y en gran medida incompatibles):

Transparencia en las paletas
Una sola entrada de paleta en una imagen de color indexada puede designarse como un color transparente, para realizar una superposición de video simple: superponer una imagen dada sobre un fondo de tal manera que una parte de la imagen solapada oscurezca el fondo y el resto no . La superposición de títulos de películas / televisión y créditos es una aplicación típica de la superposición de videos.

En la imagen que se va a superponer (se supone el color indexado), una entrada de paleta determinada desempeña el papel del color transparente. Por lo general, el número de índice 0, pero se puede elegir otro si la superposición se realiza por software. En el momento del diseño, la entrada de la paleta de colores transparentes se asigna a un color arbitrario (generalmente distintivo). En el siguiente ejemplo, un puntero de flecha típico para un dispositivo señalador está diseñado sobre un fondo naranja, por lo que aquí las áreas naranja denotan las áreas transparentes (izquierda). En tiempo de ejecución, la imagen superpuesta se coloca en cualquier lugar sobre la imagen de fondo, y se mezcla de tal manera que si el índice de color de píxel es el color transparente, el píxel de fondo se conserva; de lo contrario, se reemplaza.

Esta técnica se usa para punteros, en videojuegos típicos en 2-D para personajes, viñetas, etc. (los sprites), títulos de video y otras aplicaciones de mezcla de imágenes.

Algunas computadoras antiguas, como Commodore 64, MSX y Amiga, admiten sprites y / o superposición de video de pantalla completa por hardware. En estos casos, el número de entrada de la paleta transparente está definido por el hardware, y solía ser el número 0.

Algunos formatos de archivos de imágenes en color indexados como GIF y PNG admiten nativamente la designación de una entrada de paleta determinada como transparente, libremente seleccionable entre cualquiera de las entradas de paleta usadas para una imagen dada.
El formato de archivo BMP reserva espacio para valores de canal alfa en su tabla de colores, sin embargo actualmente este espacio no se usa para contener datos de translucidez y se establece en cero.

Cuando se trata de imágenes de color verdadero, algunos equipos de mezcla de video pueden emplear el triplete RGB (0,0,0) (sin rojo, sin verde, sin azul: el tono más oscuro del negro, a veces denominado superblack en este contexto) como el color transparente . En el momento del diseño, es reemplazado por el llamado rosa mágico. De la misma manera, el software de autoedición típico puede suponer blanco puro, triplete RGB (255,255,255) de fotos e ilustraciones que se excluirán para permitir que los párrafos de texto invadan el cuadro delimitador de la imagen para la disposición de texto irregular alrededor de los sujetos de la imagen.

Los programas de pintura 2-D, como Microsoft Paint y Deluxe Paint, pueden emplear el color de fondo designado por el usuario como color transparente al realizar operaciones de cortar, copiar y pegar.

Aunque relacionados (debido a que se usan para los mismos fines), las máscaras de bits de imagen y los canales alfa son técnicas que no implican el uso de paletas ni color transparente en absoluto, pero capas de datos binarios adicionales sin imagen añadida.

Paletas de software

Microsoft Windows
Las aplicaciones de Microsoft Windows administran la paleta de dispositivos de visualización en color indexados de 4 u 8 bits a través de funciones especializadas de la API Win32 (para modos de visualización Highcolor y Truecolor, tales funciones carecen de cualquier funcionalidad interesante). Estas API tratan con la llamada paleta de sistema y con muchas paletas lógicas.

La paleta del sistema es una copia en la RAM de los registros de hardware de la pantalla a color, principalmente una paleta física, y es un recurso único común compartido del sistema. En el arranque, se carga con la paleta predeterminada del sistema (principalmente una paleta maestra que funciona lo suficientemente bien con la mayoría de los programas).

Cuando una aplicación determinada tiene la intención de generar gráficos y / o imágenes en color, puede establecer su propia paleta lógica, es decir, su propia selección de colores privada (hasta 256). Se supone que cada elemento gráfico que la aplicación intenta mostrar en la pantalla emplea los colores de su paleta lógica. Todos los programas pueden gestionar libremente una o más paletas lógicas sin más interferencias previstas (de antemano).

Antes de que la salida se realice efectivamente, el programa debe realizar su paleta lógica: el sistema intenta hacer coincidir los colores lógicos con los físicos. Si ya hay un color previsto en la paleta del sistema, el sistema correlaciona internamente los índices de la paleta lógica y del sistema (debido a que rara vez coinciden). Si el color deseado no está presente aún, el sistema aplica un algoritmo interno para descartar el color menos utilizado en la paleta del sistema (generalmente, algunos utilizados por otra ventana en el fondo) y lo sustituye por el nuevo color. Debido a que hay espacio limitado para los colores en la paleta del sistema, el algoritmo también intenta reasignar colores similares, y siempre evitando los colores redundantes.

El resultado final depende de cuántas aplicaciones estén trabajando con los colores de la pantalla. La ventana de primer plano siempre se ve favorecida, por lo que las ventanas en segundo plano pueden comportarse de diferentes maneras: se corrompen y se vuelven a dibujar rápidamente. Cuando la paleta del sistema cambia, el sistema activa un evento específico para informar a cada aplicación. Cuando se recibe, una ventana se puede volver a dibujar rápidamente usando una sola función API de Win32. Pero esto debe estar haciendo explícitamente en el código del programa; de ahí el hecho de que muchos programas carecen de administración para este evento, y sus ventanas se corrompen en esta situación.

Una aplicación puede forzar que la paleta del sistema se cargue con colores específicos e incluso en un orden específico, engañando al sistema diciendo que son entradas de color destinadas a la animación (cambios de color rápidos de los colores en la paleta física en entradas específicas). El sistema no puede suponer entonces que cada entrada de la paleta de hardware es gratuita para sus gestiones de color de paleta, y esas entradas están excluidas de su algoritmo. El resultado final depende de las habilidades del programa de forzamiento de color y del comportamiento de los otros programas (el mismo dura exactamente como en el caso regular) y el del sistema operativo en sí mismo.