En gráficos por computadora , una paleta es el conjunto de colores disponibles a partir de los cuales se puede crear una imagen. En algunos sistemas, la paleta está fijada por el diseño del hardware, y en otros es dinámica, implementada típicamente a través de una tabla de búsqueda de colores (CLUT), una tabla de correspondencia en la que se asigna un índice a los colores seleccionados de la gama de reproducción de color de un determinado espacio de color , mediante el cual se pueden referenciar. Al hacer referencia a los colores a través de un índice, que toma menos información de la necesaria para describir los colores reales en el espacio de color, esta técnica tiene como objetivo reducir el uso de datos, incluido el procesamiento, el ancho de banda de transferencia, el uso de RAM y el almacenamiento. Las imágenes en las que los colores se indican mediante referencias a una CLUT se denominan imágenes de color indexadas .
A partir de 2019, el espacio de color de imagen más común en las tarjetas gráficas es el modelo de color RGB con una profundidad de color de 8 bits por píxel . Con esta técnica, se utilizan 8 bits por píxel para describir el nivel de luminancia en cada uno de los canales RGB , por lo tanto, 24 bits describen completamente el color de cada píxel. Por lo tanto, la paleta completa del sistema para dicho hardware tiene 2 24 colores. El objetivo del uso de paletas más pequeñas a través de CLUT es reducir la cantidad de bits por píxel al reducir el conjunto de colores posibles que se deben manejar a la vez (a menudo utilizando métodos adaptativos). A cada color posible se le asigna un índice, lo que permite hacer referencia a cada color utilizando menos información de la necesaria para describir completamente el color. Un ejemplo es la paleta de 256 colores que se usa comúnmente en el formato de archivo GIF , en la que se seleccionan 256 colores que se usarán para representar una imagen de todo el espacio de color de 24 bits, a cada uno de los cuales se le asigna un índice de 8 bits. De esta manera, si bien el sistema puede reproducir potencialmente cualquier color en el espacio de color RGB (siempre que la restricción de 256 colores lo permita), el requisito de almacenamiento por píxel se reduce de 24 a 8 bits por píxel.
En una aplicación que muestra muchas miniaturas de imágenes diferentes en un mosaico en la pantalla, es posible que el programa no pueda cargar todas las paletas adaptables de cada miniatura de imagen mostrada al mismo tiempo en los registros de color del hardware. Una solución es utilizar una paleta maestra única y común o una paleta universal , que se pueda utilizar para mostrar con una 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 disposición a veces se denomina paleta uniforme . [1] El ojo humano normal tiene sensibilidad a los tres colores primarios en diferentes grados: más al verde, menos al azul. Por lo tanto, las disposiciones RGB pueden aprovechar esto asignando más niveles para el componente verde y menos al 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 los colores web ), 6R×8G×5B = 240 o 6R×7G×6B = 252 , lo que deja 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 valor más aproximado en la paleta maestra (después de volcar esto en los registros de color del hardware) y escribe el resultado en el búfer de video. Aquí hay una muestra de un mosaico simple de las cuatro miniaturas de imágenes utilizando una paleta maestra de 240 colores organizados en RGB más 16 tonos intermedios de gris adicionales; todas las imágenes se juntan sin una pérdida significativa de precisión de color:
Al utilizar técnicas de color indexado , las imágenes de la vida real se representan con mayor fidelidad al color original verdadero mediante el uso de paletas adaptativas (a veces denominadas paletas adaptativas ), en las que los colores se seleccionan o cuantifican a través de algún algoritmo directamente a partir de la imagen original (seleccionando los colores más frecuentes). De esta manera, y con un tramado adicional , la imagen de color indexado puede casi coincidir con el original.
Pero esto crea una fuerte dependencia entre los píxeles de la imagen y su paleta adaptativa. Suponiendo una pantalla gráfica de profundidad limitada de 8 bits, es necesario cargar la paleta adaptativa de una imagen dada en los registros de hardware de color antes de cargar la superficie de la imagen en sí en el búfer de fotogramas . Para mostrar diferentes imágenes con diferentes paletas adaptativas, deben cargarse una por una, como en una presentación de diapositivas . Aquí hay ejemplos de cuatro imágenes de color indexadas diferentes con parches de color para mostrar sus respectivas (y en gran medida incompatibles) paletas adaptativas:
Una única entrada de paleta en una imagen de color indexada se puede designar 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 superpuesta oculte el fondo y el resto no. La superposición de títulos y créditos de películas o programas de televisión es una aplicación típica de la superposición de video.
En la imagen que se va a superponer (se supone que el color está indexado), una entrada de paleta determinada desempeña el papel del color transparente. Normalmente, el número de índice es 0, pero se pueden elegir otros si la superposición se realiza mediante software . En el momento del diseño, la entrada de paleta de color transparente se asigna a un color arbitrario (normalmente distintivo). En el ejemplo siguiente, se diseña un puntero de flecha típico para un dispositivo señalador sobre un fondo naranja, por lo que aquí las áreas naranjas denotan las áreas transparentes (izquierda). En el momento de la ejecución , la imagen superpuesta se coloca en cualquier lugar sobre la imagen de fondo y se combina de tal manera que si el índice de color del píxel es el color transparente, se conserva el píxel de fondo; de lo contrario, se reemplaza.
Esta técnica se utiliza para punteros, en videojuegos 2-D típicos para personajes, viñetas, etc. (los sprites ), títulos de vídeo 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 a pantalla completa por hardware. En estos casos, el número de entrada de la paleta transparente lo define el hardware y solía ser el número 0.
Algunos formatos de archivos de imágenes en color indexados, como GIF, admiten de forma nativa la designación de una entrada de paleta determinada como transparente , que se puede seleccionar libremente entre cualquiera de las entradas de paleta utilizadas para una imagen determinada.
El formato de archivo BMP reserva espacio para los valores del canal alfa en su tabla de colores [2] , sin embargo, actualmente este espacio no se utiliza para almacenar ningún dato de translucidez y se establece en cero. Por el contrario, PNG admite canales alfa en las entradas de paleta, lo que permite la semitransparencia en imágenes con paleta.
Al trabajar con imágenes en 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 supernegro en este contexto) como color transparente. En el momento del diseño, se reemplaza por el llamado rosa mágico . De la misma manera, el software de autoedición típico puede asumir el blanco puro, el triplete RGB (255,255,255) de las fotos e ilustraciones que se deben excluir para permitir que los párrafos de texto invadan el cuadro delimitador de la imagen para la disposición irregular del texto 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 están relacionadas (debido a que se utilizan 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 de colores transparentes en absoluto, sino capas de datos binarios adicionales agregadas fuera de la imagen.
Las aplicaciones de Microsoft Windows gestionan la paleta de colores de los dispositivos de visualización indexados de 4 u 8 bits mediante funciones especializadas de la API Win32 . La aplicabilidad de las paletas en los modos de visualización Highcolor y Truecolor resulta cuestionable. Estas API se ocupan de la denominada "paleta del sistema" y de muchas "paletas lógicas".
La "paleta del sistema" es una copia en la memoria RAM de los registros de hardware de la pantalla a color, principalmente una paleta física, y es un recurso único y compartido del sistema. Al iniciar, se carga con la paleta del sistema predeterminada (principalmente una "paleta maestra" que funciona bastante bien con la mayoría de los programas).
Cuando una aplicación determinada pretende mostrar gráficos y/o imágenes coloreadas, puede configurar su propia "paleta lógica", es decir, su propia selección privada de colores (hasta 256). Se supone que cada elemento gráfico que la aplicación intenta mostrar en pantalla utiliza los colores de su paleta lógica. Cada programa puede gestionar libremente una o más paletas lógicas sin interferencias esperadas (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 un color deseado ya está presente en la paleta del sistema, el sistema asigna internamente el lógico a los índices de la paleta del sistema (porque rara vez coinciden). Si el color deseado aún no está presente, el sistema aplica un algoritmo interno para descartar el color menos utilizado en la paleta del sistema (generalmente, uno utilizado por otra ventana en segundo plano) 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 evitará la creación de colores redundantes.
El resultado final depende de cuántas aplicaciones estén intentando mostrar sus colores en la pantalla al mismo tiempo. La ventana en primer plano siempre es la preferida, por lo que las ventanas en segundo plano pueden comportarse de diferentes maneras: desde corromperse hasta redibujarse rápidamente. Cuando la paleta del sistema cambia, el sistema activa un evento específico para informar a cada aplicación. Cuando lo recibe, una ventana puede redibujarse rápidamente usando una única función de API Win32. Pero esto debe hacerse explícitamente en el código del programa; de ahí el hecho de que muchos programas no puedan manejar este evento y sus ventanas se corromperán en esta situación.
Una aplicación puede forzar la carga de colores específicos en la paleta del sistema (incluso en un orden específico), "engañando" al sistema diciéndole que son entradas de color destinadas a la animación (cambios rápidos de color de los colores en la paleta física en entradas específicas). El sistema asumirá entonces que esas entradas de la paleta de hardware ya no están libres para su algoritmo de gestión de colores de la paleta. El resultado final depende de las habilidades del programa que fuerza los colores y del comportamiento de los otros programas (aunque este problema es el mismo que en el caso normal), y del propio sistema operativo.