Articulo de referencia

Paleta (informática)

Imagen de muestra La paleta utilizada en la imagen, mostrada girando alrededor del espacio de color RGB. En gráficos por computadora , una paleta es el conjunto de colores dispo...

Imagen de muestra
La paleta utilizada en la imagen, mostrada girando alrededor del espacio de color RGB.

En gráficos por computadora , una paleta es el conjunto de colores disponibles a partir del cual se puede crear una imagen. En algunos sistemas, la paleta está definida por el diseño del hardware, mientras que en otros es dinámica y se implementa típicamente mediante una tabla de búsqueda de color (CLUT), una tabla de correspondencia en la que a los colores seleccionados del rango de reproducción cromática de un espacio de color determinado se les asigna un índice que permite referenciarlos. Al referenciar los colores mediante un índice, que requiere menos información que la necesaria para describir los colores reales en el espacio de color, esta técnica busca reducir el uso de datos, incluyendo 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 en color indexadas .

Descripción

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 . Mediante 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 que 24 bits describen completamente el color de cada píxel. La paleta completa del sistema para este hardware tiene, por lo tanto, 2²⁴ colores . El objetivo del uso de paletas más pequeñas mediante CLUT es reducir el número de bits por píxel al disminuir 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 referenciar cada color utilizando menos información de la necesaria para describirlo completamente. Un ejemplo es la paleta de 256 colores comúnmente utilizada en el formato de archivo GIF , en la que se seleccionan 256 colores para representar una imagen de todo el espacio de color de 24 bits, asignándose a cada uno un índice de 8 bits. De esta forma, si bien el sistema puede reproducir potencialmente cualquier color en el espacio de color RGB (siempre que lo permita la restricción de 256 colores), el requisito de almacenamiento por píxel se reduce de 24 a 8 bits por píxel.

Paleta maestra

Una paleta de colores adaptativa que se expande de 2 a 256 colores, mostrando cómo cambia la imagen (haz clic para ver la animación).

En una aplicación que muestra varias miniaturas de imágenes en mosaico en pantalla, es posible que el programa no pueda cargar simultáneamente todas las paletas adaptativas de cada miniatura en los registros de color del hardware. Una solución consiste en utilizar una paleta maestra común o universal , que permite visualizar cualquier tipo de imagen con una precisión razonable.

Esto se logra seleccionando colores de tal manera que la paleta maestra abarque un espacio de color RGB completo "en miniatura", limitando los posibles niveles 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: mayor sensibilidad al verde y menor sensibilidad al azul. Por lo tanto, las disposiciones RGB pueden aprovechar esto asignando más niveles al 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 fines 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 equivalente más aproximado en la paleta maestra (después de volcarlo en los registros de color del hardware) y escribe el resultado en el búfer de video. Aquí se muestra un ejemplo de un mosaico simple de las cuatro miniaturas de imágenes utilizando una paleta maestra de 240 colores RGB organizados más 16 tonos intermedios de gris adicionales; todas las imágenes se combinan sin una pérdida significativa de precisión de color:

Paleta adaptativa

Al utilizar técnicas de color indexado , las imágenes de la vida real se representan con mayor fidelidad a la imagen original en color verdadero mediante paletas adaptativas (a veces denominadas paletas adaptativas ), en las que los colores se seleccionan o cuantifican mediante algún algoritmo directamente de la imagen original (eligiendo los colores más frecuentes). De esta forma, y ​​con un tramado adicional , la imagen en color indexado puede ser prácticamente idéntica a la original.

Pero esto crea una fuerte dependencia entre los píxeles de la imagen y su paleta adaptativa. Suponiendo una pantalla gráfica con una profundidad de color limitada a 8 bits, es necesario cargar la paleta adaptativa de una imagen determinada en los registros de hardware de color antes de cargar la superficie de la imagen 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í se muestran ejemplos de cuatro imágenes en color indexadas diferentes con parches de color para mostrar sus respectivas (y en gran medida incompatibles) paletas adaptativas:

Transparencia en las paletas de colores

En una imagen en color indexada , se puede designar un color transparente para realizar una superposición de vídeo sencilla : superponer una imagen sobre un fondo de forma que 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 series de televisión es una aplicación típica de la superposición de vídeo.

En la imagen que se va a superponer (se asume un color indexado), una entrada de la paleta determinada actúa como el color transparente. Normalmente es el índice 0, pero se puede elegir otro si la superposición se realiza mediante software . En tiempo de diseño, la entrada de la paleta de color transparente se asigna a un color arbitrario (generalmente 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 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 del píxel es el color transparente, el píxel de fondo se mantiene; de ​​lo contrario, se reemplaza.

Esta técnica se utiliza para punteros, en videojuegos típicos en 2D para personajes, balas, etc. (los sprites ), títulos de vídeo y otras aplicaciones de mezcla de imágenes.

Algunos ordenadores antiguos, como el Commodore 64 , el MSX y el Amiga, admiten sprites y/o superposición de vídeo a pantalla completa mediante 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 archivo de imagen 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 dada. 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 real , algunos equipos de mezcla de vídeo pueden emplear el triplete RGB (0,0,0) (sin rojo, sin verde, sin azul: el negro más oscuro, a veces denominado supernegro en este contexto) como color transparente. En la fase de diseño, se sustituye por el llamado rosa mágico . Del mismo modo, el software típico de autoedición puede asumir que el blanco puro, el triplete RGB (255,255,255) de las fotos e ilustraciones debe excluirse para permitir que los párrafos de texto invadan el cuadro delimitador de la imagen , lo que genera una disposición irregular del texto alrededor de los sujetos de la imagen.

Los programas de pintura 2D , como Microsoft Paint y Deluxe Paint , pueden utilizar 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 color transparente en absoluto, sino que añaden capas de datos binarios adicionales fuera de la imagen.

paletas de software

Microsoft Windows

Las aplicaciones de Microsoft Windows gestionan la paleta de colores de los dispositivos de visualización de color indexado 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 trabajan con la denominada "paleta del sistema" y con numerosas "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 común único y compartido del sistema. Al arrancar, 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 pretende generar gráficos o imágenes en color, 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 necesidad de intervención previa.

Antes de que se genere la salida, el programa debe definir su paleta lógica: el sistema intenta hacer coincidir los colores lógicos con los físicos. Si el color deseado ya está presente en la paleta del sistema, este asigna internamente los índices de la paleta lógica a los de la paleta del sistema (ya que 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 al espacio limitado para los colores en la paleta del sistema, el algoritmo también intenta agrupar los colores similares y siempre evitará crear colores redundantes.

El resultado final depende de cuántas aplicaciones intenten mostrar sus colores en pantalla simultáneamente. La ventana en primer plano siempre tiene prioridad, por lo que las ventanas en segundo plano pueden comportarse de diversas maneras: desde corromperse hasta redibujarse rápidamente. Cuando cambia la paleta del sistema, este activa un evento específico para informar a todas las aplicaciones. Al recibirlo, una ventana puede redibujarse rápidamente mediante una función de la API de Win32. Sin embargo, esto debe hacerse explícitamente en el código del programa; de ahí que muchos programas no gestionen este evento y sus ventanas se corrompan en esta situación.

Una aplicación puede forzar la carga de la paleta del sistema con colores específicos (incluso en un orden determinado), "engañando" al sistema al indicarle que se trata de entradas de color destinadas a la animación (cambios rápidos de color en la paleta física en puntos específicos). El sistema asumirá entonces que esas entradas de la paleta de hardware ya no están disponibles para su algoritmo de gestión de color. El resultado final depende de las capacidades del programa que fuerza la carga de colores, del comportamiento de los demás programas (aunque este problema es el mismo que en el caso habitual) y del propio sistema operativo.

Véase también

Notas

  1. Manual de usuario de Image Alchemy de Handmade Software .
  2. MSDN. "Entrada de la tabla de colores RGBQUAD"

Referencias

  • Julio Sánchez y María P. Cantón (2003). Manual de gráficos para PC. CRC Press. ISBN 0-8493-1678-2.
  • Paletas de colores en Microsoft Developer Network (MSDN)
  • La entrada de la tabla de colores RGBQUAD en la estructura BITMAPINFO en Microsoft Developer Network (MSDN).