Articulo de referencia

Color indexado

Una imagen en color indexada de 2 bits. El color de cada píxel está representado por un número; cada número (el índice ) corresponde a un color en la tabla de colores (la paleta...

Una imagen en color indexada de 2 bits. El color de cada píxel está representado por un número; cada número (el índice ) corresponde a un color en la tabla de colores (la paleta ).

En informática, el color indexado es una técnica para gestionar los colores de las imágenes digitales de forma limitada, con el fin de ahorrar espacio de almacenamiento en el ordenador , al tiempo que se acelera la actualización de la pantalla y la transferencia de archivos. Se trata de una forma de compresión por cuantización vectorial .

Cuando una imagen se codifica de esta manera, la información de color no se transmite directamente a través de los datos de píxeles de la imagen , sino que se almacena en un dato independiente llamado tabla de búsqueda de color (CLUT) o paleta : una matriz de especificaciones de color. Cada elemento de la matriz representa un color, indexado por su posición dentro de la matriz. Para la información de color, cada píxel de la imagen especifica únicamente su índice en la paleta .

Esta técnica a veces se denomina pseudocolor [ 1 ] o color indirecto , [ 2 ] ya que los colores se abordan indirectamente.

Historia

Los primeros sistemas de visualización gráfica que utilizaban color indexado de 8 bits con búferes de fotogramas y CLUT incluyen SuperPaint de Shoup (1973) y el búfer de fotogramas de vídeo descrito en 1975 por Kajiya, Sutherland y Cheadle. [ 3 ] Estos admitían una paleta de 256 colores RGB. SuperPaint utilizaba un búfer de fotogramas con registro de desplazamiento , mientras que el sistema de Kajiya et al. utilizaba un búfer de fotogramas de acceso aleatorio .

Algunos sistemas anteriores utilizaban color de 3 bits, pero normalmente trataban los bits como bits independientes de encendido/apagado de rojo, verde y azul, en lugar de tratarlos conjuntamente como un índice en una tabla de búsqueda de color (CLUT).

Tamaño de la paleta

La paleta en sí almacena un número limitado de colores distintos; 4, 16 o 256 son los casos más comunes. Estos límites suelen ser impuestos por el hardware del adaptador de pantalla de la arquitectura de destino , por lo que no es una coincidencia que esos números sean potencias exactas de dos : 2² =  4, 2⁴ =  16 y 2⁸ =  256. Si bien 256 valores pueden caber en un solo byte de 8 bits (y entonces un solo píxel de color indexado también ocupa un solo byte), varios índices de píxeles con 16 (4 bits, un nibble ) o menos colores pueden empaquetarse juntos en un solo byte (dos nibbles por byte, si se emplean 16 colores, o cuatro píxeles de 2 bits por byte si se utilizan 4 colores). A veces, se pueden usar valores de 1 bit (2 colores), y entonces se pueden empaquetar hasta ocho píxeles en un solo byte; Estas imágenes se consideran imágenes binarias (a veces denominadas imágenes de mapa de bits o imágenes de dos niveles ) y no imágenes en color indexadas.

Si se pretende superponer un vídeo sencillo mediante un color transparente , se reserva una entrada de la paleta específicamente para este fin y se descarta como color disponible. Algunas máquinas, como la serie MSX , tenían el color transparente reservado por hardware. [ 4 ]

Las imágenes en color indexadas con paletas de más de 256 entradas son poco comunes. El límite práctico se sitúa en torno a los 12 bits por píxel, lo que equivale a 4096 índices diferentes. Se pueden utilizar modos de color RGB directos de alta resolución a partir de 15  bpp.

Si una imagen tiene muchos matices sutiles, es necesario seleccionar un repertorio limitado de colores para aproximarla mediante la cuantización de color . Esta paleta suele ser insuficiente para representar la imagen con precisión; las características difíciles de reproducir, como los degradados, aparecerán pixeladas o en franjas ( bandas de color ). En estos casos, se suele emplear el tramado , que mezcla píxeles de diferentes colores en patrones, aprovechando la tendencia de la visión humana a difuminar los píxeles cercanos, lo que da como resultado una imagen visualmente más cercana a la original.

Aquí se muestra una imagen típica indexada de 256 colores y su propia paleta (representada como un rectángulo de muestras):

Colores y paletas

La forma en que se codifican los colores dentro del mapa de paleta de colores de una imagen en color indexada determinada depende de la plataforma de destino.

Técnicas de color primitivas

Muchos de los primeros ordenadores personales y domésticos tenían paletas de hardware muy limitadas que podían producir un conjunto muy pequeño de colores. En estos casos, el valor de cada píxel se asignaba directamente a uno de estos colores. Ejemplos conocidos incluyen el Apple II , el Commodore 64 y el IBM PC CGA , todos los cuales incluyen hardware que puede producir un conjunto fijo de 16 colores. En estos casos, una imagen puede codificar cada píxel con 4 bits, seleccionando directamente el color a utilizar. Sin embargo, en la mayoría de los casos, el hardware de visualización admite modos adicionales donde solo se puede utilizar un subconjunto de esos colores en una sola imagen, una técnica útil para ahorrar memoria. Por ejemplo, el modo de resolución de 320 × 200 del CGA puede mostrar solo cuatro de los 16 colores a la vez. Como las paletas son completamente propietarias, una imagen generada en una plataforma no se puede visualizar correctamente en otra.

Otras máquinas de esta época tenían la capacidad de generar un conjunto de colores más amplio, pero generalmente solo permitían usar un subconjunto de ellos en cada imagen. Ejemplos de ello son la paleta de 256 colores de las computadoras Atari de 8 bits con su chip GITA o los 64 colores del terminal VT241 en modo gráfico ReGIS . [ 5 ] En estos casos, se podía mostrar un pequeño subconjunto del número total de colores a la vez, cuatro, por ejemplo, en el VT241. [ 5 ] Arquitectónicamente, estos sistemas funcionaban de forma similar a sus homólogos con menos colores, pero una diferencia clave era que había demasiados colores en la paleta para codificarlos directamente en los datos de píxeles, dada la cantidad limitada de memoria de vídeo . En su lugar, utilizaban una tabla de búsqueda de color (CLUT) donde los datos de cada píxel apuntaban a una entrada en la CLUT, y esta se configuraba mediante control programático. Esto significaba que los datos de la CLUT de la imagen debían almacenarse junto con los datos de la imagen sin procesar para poder reproducirla correctamente.

RGB

Las paletas de hardware basadas en colores de vídeo por componentes , como YPbPr o similares, fueron reemplazadas a mediados de la década de 1980 por el modelo de color RGB , más flexible , en el que un color determinado se obtiene mezclando diferentes cantidades de los tres colores primarios: rojo, verde y azul. Si bien el número total de colores diferentes depende del número de niveles por primario y de la implementación de hardware específica (un RGB de 9 bits proporciona 512 niveles, un RGB de 12 bits proporciona 4096, etc.), en este modelo los convertidores digital-analógico (DAC) pueden generar los colores, simplificando el diseño del hardware, mientras que el software puede gestionar los colores RGB de forma independiente del dispositivo. Al almacenarse los colores en formato RGB dentro de las paletas de archivos de imagen indexados, cualquier imagen puede visualizarse (mediante las transformaciones adecuadas) en cualquier sistema de este tipo, independientemente de la profundidad de color utilizada en la implementación de hardware.

Actualmente, el hardware de visualización y los formatos de archivo de imagen que manejan imágenes en color indexado gestionan casi exclusivamente los colores en formato RGB, siendo la codificación estándar de facto el color de 24 bits , con 16.777.216 colores posibles. Sin embargo, las imágenes en color indexado no están realmente limitadas a una codificación de color RGB de 24 bits; las paletas de imágenes pueden contener cualquier tipo de codificación de color. Por ejemplo, el formato de archivo PDF admite color indexado en otros espacios de color, en particular CMYK . Adobe Distiller, por defecto, convierte las imágenes a color indexado siempre que el número total de colores en una imagen sea igual o inferior a 256. Al usar RGB, los formatos de archivo TIFF y PNG pueden almacenar opcionalmente los tripletes RGB con una precisión de 16 bits (65.536 niveles por componente), lo que da como resultado un total de 48 bits por píxel. La tabla de asignación de colores del modo de color indexado del formato de archivo BMP almacena sus entradas en orden BGR en lugar de RGB, y tiene un byte adicional sin usar para relleno para ajustarse a la alineación de palabras de 32 bits durante el procesamiento, pero esencialmente sigue siendo una codificación de color RGB de 24 bits. Una versión anterior del formato BMP usaba tres bytes por entrada de la tabla de asignación de colores de 24 bits, y muchos archivos en ese formato todavía están en circulación, por lo que muchos programas modernos que leen archivos BMP admiten ambas variantes.

Disposiciones de bits de píxeles

Salvo en los modos gráficos de muy baja resolución, los primeros ordenadores domésticos y personales rara vez implementaban un diseño de "direccionamiento de todos los píxeles", es decir, la capacidad de cambiar un solo píxel a cualquiera de los colores disponibles de forma independiente. Sus limitaciones provenían del uso de áreas separadas de atributos de color o memoria RAM de color , lo que provocaba efectos de conflicto de atributos . Además, los bits de píxeles y/o las líneas de exploración de la memoria de vídeo solían estar dispuestos de formas extrañas, convenientes para el hardware del generador de vídeo (lo que ahorraba costes de hardware en un mercado competitivo), pero que a veces dificultaban el trabajo de quienes escribían programas gráficos. En las imágenes con color indexado y direccionamiento de todos los píxeles, los bits de un píxel no siempre son contiguos en la memoria de vídeo o en los archivos de imagen (es decir, no siempre se utiliza la organización en bloques ). Algunos dispositivos de vídeo, como los modos gráficos de 16 colores del Enhanced Graphics Adapter (EGA) y Video Graphics Array (VGA) para ordenadores compatibles con IBM PC [ 6 ] o el búfer de vídeo de Amiga [ 7 ], están organizados como una serie de planos de bits (en una configuración denominada planar ), en la que los bits relacionados de un solo píxel se dividen entre varios mapas de bits independientes . De este modo, los bits del píxel se alinean conceptualmente a lo largo del eje Z tridimensional. (El concepto de "profundidad" aquí no es el mismo que el de profundidad de píxel ).

Los primeros formatos de archivo de imagen, como PIC , almacenaban poco más que un simple volcado de memoria del búfer de vídeo de una máquina determinada.

Algunos formatos de archivo de imagen en color indexado, como el formato GIF ( Graphics Interchange Format ), permiten que las líneas de escaneo de la imagen se dispongan de forma intercalada (no lineal), lo que permite que aparezca en pantalla una versión de baja resolución mientras se descarga, de modo que el usuario pueda hacerse una idea de su contenido durante los segundos previos a la descarga completa. A continuación, se muestra un ejemplo de una descarga típica con entrelazado vertical en cuatro pasos:

Como se observa, la imagen se ha dividido en cuatro grupos de líneas: el grupo A contiene cada cuarta línea, el grupo B contiene las líneas que siguen inmediatamente a las del grupo A, el grupo C contiene igualmente las líneas que siguen inmediatamente a las del grupo B, y el grupo D contiene las líneas restantes, que se encuentran entre las líneas del grupo C (inmediatamente arriba) y las del grupo A (inmediatamente abajo). Estas se almacenan en el archivo en el orden A, C, B, D, de modo que cuando se transmite el archivo, el segundo grupo de líneas recibido (C) queda centrado entre las líneas del primer grupo, lo que produce la imagen más uniforme y reconocible espacialmente posible, compuesta por solo dos de los grupos de líneas. La misma técnica se puede aplicar con más grupos (por ejemplo, ocho), en cuyo caso, en cada paso, el siguiente grupo que se envía contiene líneas que se encuentran en o cerca del centro de las bandas restantes que aún no se han rellenado con datos de imagen. Este método, con cuatro u ocho grupos de líneas, se utilizaba comúnmente en los inicios de la World Wide Web durante la segunda mitad de la década de 1990. En lugar de dejar el fondo (negro) visible como en la ilustración anterior, la imagen parcial se presentaba a menudo en pantalla duplicando cada línea para rellenar el espacio inferior hasta la siguiente línea de imagen recibida. El resultado final era una imagen continua con una resolución vertical reducida que aumentaba hasta alcanzar la resolución completa en cuestión de segundos a medida que llegaban las últimas partes de los datos de la imagen.

Ventajas

El color indexado ahorra mucha memoria, espacio de almacenamiento y tiempo de transmisión: usando color verdadero , cada píxel necesita 24 bits, o 3 bytes. Una imagen típica sin comprimir en color verdadero con resolución VGA  de 640×480 necesita 640×480×3 =  921 600 bytes (900 KiB). Limitando los colores de la imagen a 256, cada píxel necesita solo 8 bits, o 1 byte cada uno, por lo que la imagen de ejemplo ahora necesita solo 640×480×1  =  307 200 bytes (300 KiB), más 256×3  =  768 bytes adicionales para almacenar el mapa de paleta en sí mismo (suponiendo RGB), aproximadamente un tercio del tamaño original. Las paletas más pequeñas (16 colores de 4 bits, 4 colores de 2 bits) pueden empaquetar los píxeles aún más (a un sexto o un doceavo), obviamente a costa de la precisión del color.

El color indexado se utilizó ampliamente en los primeros ordenadores personales y en el hardware de los adaptadores de pantalla para reducir costes (principalmente al requerir menos chips de RAM, que por aquel entonces eran caros ), pero también para una gestión de imágenes más cómoda con CPU de potencia limitada (del orden de 4 a 8 MHz ) y para el almacenamiento de archivos ( cintas de casete y disquetes de baja densidad ). Entre los sistemas de gráficos por ordenador que utilizaron extensamente (o incluso exclusivamente) paletas de pseudocolor en la década de 1980 destacan CGA , EGA y VGA (para ordenadores compatibles con IBM PC ), el Atari ST y los sistemas OCS y AGA de Amiga .

Los archivos de imagen que se intercambiaban a través de la red CompuServe a principios de la década de 1990 estaban encapsulados en el formato GIF . Posteriormente, las páginas web HTML utilizaron el GIF junto con otros formatos de archivo indexados que admitían color, como PNG , para intercambiar imágenes con colores limitados rápidamente y almacenarlas en un espacio de almacenamiento limitado.

La mayoría de los formatos de archivo de imagen que admiten imágenes en color indexadas también suelen admitir algún esquema de compresión , lo que mejora su capacidad para almacenar las imágenes en archivos más pequeños.

Se pueden lograr fácilmente efectos de color interesantes y artísticos alterando la paleta de colores de las imágenes indexadas, por ejemplo, para producir imágenes en tono sepia coloreadas . Debido a la naturaleza independiente del elemento de paleta asociado a las imágenes indexadas, estas son ideales para convertir imágenes en escala de grises a falso color mediante el uso de paletas de falso color .

Es posible lograr una superposición de vídeo sencilla mediante la técnica de color transparente .

Al manipular los registros de hardware de color ( tabla de búsqueda de color o CLUT) del adaptador de pantalla en los modos gráficos de color indexado, se pueden lograr efectos de animación de color a pantalla completa sin redibujar la imagen, es decir, con un bajo costo de tiempo de CPU; un solo cambio en los valores del registro afecta a toda la pantalla a la vez. La animación de mapa de color, también conocida como ciclo de color , se usa ampliamente en la demoscene . La pantalla del logotipo de inicio de Microsoft Windows en Windows 95, 98, ME y 2000 Professional (que usa el modo de visualización de color VGA 320x200x256 porque es el máximo común denominador en todas las PC) emplea esta técnica para la barra de degradado desplazable en la parte inferior de la pantalla; la imagen es una imagen estática sin píxeles reescritos después de su visualización inicial. Las imágenes de pantalla de inicio personalizadas podrían tocar los colores cíclicos para animar otras partes de las imágenes.

Desventajas

La principal desventaja del color indexado es la limitada cantidad de colores simultáneos por imagen. Si bien las paletas pequeñas de 4 o 16 colores son aceptables para imágenes pequeñas ( iconos ) o gráficos muy sencillos, resultan prácticamente inútiles para reproducir imágenes de la vida real. Algunas técnicas, como la cuantización de color , el suavizado de bordes y el tramado , pueden crear imágenes indexadas de 256 colores con una calidad aceptable respecto a la original.

Las imágenes en color indexadas dependen en gran medida de sus propias paletas de colores. Salvo algunas paletas de color fijas bien conocidas (como la del Adaptador de Gráficos en Color —CGA—), los datos de imagen sin procesar o las tablas de mapas de color no se pueden intercambiar de forma fiable entre diferentes archivos de imagen sin algún tipo de mapeo intermedio. Además, si se pierde la paleta de colores original de una imagen indexada, puede resultar casi imposible restaurarla. He aquí un ejemplo de lo que ocurre cuando una imagen en color indexada (el loro anterior) se ha asociado a una paleta de colores incorrecta:

Los modos gráficos de color indexado para adaptadores de pantalla tienen el límite de 16 o 256 colores impuesto por el hardware. Las imágenes de color indexado con paletas ricas pero incompatibles solo se pueden mostrar con precisión de una en una, como en una presentación de diapositivas . Cuando es necesario mostrar varias imágenes juntas, como en un mosaico de miniaturas , se suele utilizar una paleta común o maestra , que abarca la mayor cantidad posible de tonalidades diferentes en un solo conjunto, lo que limita la disponibilidad general de colores precisos.

La siguiente imagen es un mosaico de cuatro imágenes en color indexadas diferentes, renderizadas con una única paleta maestra compartida de 6-8-5 niveles RGB más 16 grises adicionales. Nótese la gama limitada de colores utilizada en cada imagen y la cantidad de entradas de la paleta que quedan sin usar.

Muchos dispositivos de visualización de color indexado no alcanzan el límite de 24 bits para la paleta RGB completa. Por ejemplo, la tarjeta gráfica VGA para PC compatibles con IBM solo ofrece una paleta RGB de 18 bits con 262.144 colores diferentes posibles en los modos gráficos de color indexado de 16 y 256 bits.

Algunos programas de edición de imágenes permiten aplicar la corrección gamma a la paleta de colores de los archivos de imagen indexados. En general, aplicar la corrección gamma directamente al mapa de color no es recomendable, ya que se pierden los valores RGB originales. Es preferible aplicarla mediante el hardware de visualización (la mayoría de los adaptadores de pantalla modernos admiten esta función) o como un paso intermedio activo del software de renderizado a través de la gestión del color , lo que preserva los valores originales. Solo cuando las imágenes indexadas están destinadas a sistemas que carecen de calibración de color y no están diseñadas para ser multiplataforma, se puede aplicar la corrección gamma a la tabla de colores.

Formatos de archivo de imagen que admiten color indexado

Estos son algunos de los formatos de archivo de imagen más representativos que admiten modos de color indexados. Algunos de ellos admiten otros modos (por ejemplo, color verdadero), pero aquí solo se enumeran los modos de color indexados.

NOTA: la mayoría de los formatos también admitirán una tabla de colores con menos colores que el máximo que puede ofrecer una profundidad de bits determinada.
* Los modos de 64 (verdaderos, no EHB), 128 y 256 colores solo están disponibles para el chipset AGA Amiga.
** Compatibilidad nativa con esquemas de compresión propietarios.
*** RLE con saltos Delta propietarios opcionales.

Notas

  1. Charles A. Poynton (2003). Vídeo digital y HDTV: algoritmos e interfaces . Morgan Kaufmann. ISBN 1-55860-792-7.
  2. Gráficos por computadora, Prof. R. Eckert, Lección n.° 5, febrero de 2001, Universidad de Binghamton, Nueva York
  3. Kajiya, James T.; Southerland, Ivan E.; Cheadle, Edward C. (mayo de 1975). "Un búfer de fotogramas de vídeo de acceso aleatorio". Actas de la Conferencia IEEE sobre Gráficos por Computadora, Reconocimiento de Patrones y Estructura de Datos . págs. 1–6 . 
    • Reimpreso en Kajiya, James T.; Southerland, Ivan E.; Cheadle, Edward C. (1998). «Un búfer de fotogramas de vídeo de acceso aleatorio». Gráficos fundamentales: esfuerzos pioneros que dieron forma al campo . págs. 315–320 . doi : 10.1145/280811.281022 . ISBN  1-58113-052-X.
  4. Hoja de datos en línea del chip de vídeo Texas Instruments TMS9918 utilizado en el MSX.
  5. 1 2 "VT240/VT241" (PDF) . Digital Equipment Corporation . Consultado el 1 de mayo de 2025 .
  6. Richard Wilton, Guía del programador para sistemas de vídeo PC y PS/2, 1987, Microsoft Press. ISBN 1-55615-103-9
  7. Inc. Commodore-Amiga, Manual de referencia de hardware de Amiga, 1991, Addison-Wesley. ISBN 0-201-56776-8

Véase también

Referencias

  • Julio Sánchez y María P. Cantón (2003). Manual de gráficos para PC. CRC Press. ISBN 0-8493-1678-2.
  • Introducción a las imágenes en color indexadas