stringtranslate.com

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 ).

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 memoria de la computadora y almacenamiento de archivos , al tiempo que acelera la actualización de la pantalla y las transferencias de archivos. Es una forma de compresión de cuantificación vectorial .

Cuando una imagen se codifica de esta manera, la información de color no es transportada directamente por los datos de píxeles de la imagen , sino que se almacena en un dato separado llamado tabla de búsqueda de colores (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. Cada píxel de la imagen no contiene la especificación completa de su color, sino sólo su índice en la paleta . Esta técnica a veces se denomina pseudocolor [1] o color indirecto , [2] ya que los colores se abordan de forma indirecta.

Historia

Los primeros sistemas de visualización de gráficos que utilizaban colores indexados de 8 bits con buffers de cuadros y tablas de búsqueda de colores incluyen SuperPaint de Shoup (1973) y el buffer de cuadros de video descrito en 1975 por Kajiya, Sutherland y Cheadle. [3] [4] Estos admitían una paleta de 256 colores RGB. SuperPaint utilizó un búfer de cuadros de registro de desplazamiento , mientras que Kajiya et al. El sistema utilizaba un buffer de tramas de acceso aleatorio .

Algunos sistemas anteriores usaban color de 3 bits, pero normalmente trataban los bits como bits de encendido/apagado rojos, verdes y azules independientes en lugar de hacerlo conjuntamente como un índice en un 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 a menudo los impone 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 (el código binario ): 2 2  = 4, 2 4  = 16 y 2 8  = 256. Mientras que 256 los valores se pueden colocar en un solo byte de 8 bits (y luego un solo píxel de color indexado también ocupa un solo byte), los índices de píxeles con 16 (4 bits, un nibble ) o menos colores se pueden empaquetar 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 utilizar valores de 1 bit (2 colores) y luego se pueden empaquetar hasta ocho píxeles en un solo byte; Estas imágenes se consideran imágenes binarias (a veces denominadas mapa de bits o imagen de dos niveles ) y no una imagen en color indexada.

Si se pretende una superposición de vídeo simple a través de un color transparente , se reserva específicamente una entrada de la paleta para este propósito y se descuenta como color disponible. Algunas máquinas, como la serie MSX , tenían el color transparente reservado por hardware. [5]

Las imágenes en color indexadas con tamaños de paleta superiores a 256 entradas son raras. El límite práctico es de unos 12 bits por píxel, 4.096 índices diferentes. El uso de 16 bpp indexados o más no proporciona los beneficios de la naturaleza de las imágenes en color indexadas, debido a que el tamaño de la paleta de colores en bytes es mayor que los datos de la imagen sin procesar en sí. Además, se pueden utilizar útiles modos RGB Highcolor directos desde 15 bpp en adelante.

Si una imagen tiene muchos matices de color sutiles, es necesario seleccionar un repertorio limitado de colores para aproximarse a la imagen mediante la cuantificació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 en bloques o en forma de franjas ( bandas de color ). En esos casos, se suele emplear dithering , que mezcla píxeles de diferentes colores en patrones, aprovechando la tendencia de la visión humana a difuminar los píxeles cercanos, dando un resultado visualmente más cercano al original.

A continuación se muestra una imagen típica indexada de 256 colores y su propia paleta (que se muestra 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 de color indexada determinada depende de la plataforma de destino.

Técnicas de color tempranas

Muchas de las primeras computadoras personales y domésticas 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 asigna directamente a uno de estos colores. Ejemplos bien conocidos incluyen Apple II , Commodore 64 e IBM PC CGA , todos los cuales incluían hardware que podía 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 la pantalla admite modos adicionales en los que sólo 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 320×200 del CGA podía mostrar sólo cuatro de los 16 colores a la vez. Como las paletas eran totalmente patentadas, una imagen generada en una plataforma no se puede ver correctamente directamente en otra.

Otras máquinas de esta época tenían la capacidad de generar un conjunto más grande de colores, pero generalmente solo permitían usar un subconjunto de ellos en una sola imagen. Los ejemplos incluyen la paleta de 256 colores en las máquinas Atari de 8 bits o los 4.096 colores del terminal VT241 en modo gráfico ReGIS . En estos casos, era común que la imagen solo permitiera mostrar un pequeño subconjunto del número total de colores a la vez, hasta 16 a la vez en Atari y VT241. En general, estos sistemas funcionaban de manera idéntica a sus hermanos menos coloridos, 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 video . En su lugar, utilizaron una tabla de búsqueda de colores (CLUT) donde los datos de cada píxel apuntaban a una entrada en la CLUT, y la CLUT se configuró bajo el control del programa. Esto significaba que los datos CLUT de la imagen debían almacenarse junto con los datos de la imagen sin procesar para poder reproducir la imagen correctamente.

RGB

Las paletas de hardware basadas en colores de vídeo componente como YPbPr o similares fueron reemplazadas generalmente a mediados de la década de 1980 por el modelo de color RGB más flexible , en el que se puede obtener un color determinado mezclando diferentes cantidades de los tres colores primarios rojo, verde y azul. Aunque el número total de colores diferentes depende del número de niveles por primario y de una implementación de hardware determinada (un RGB de 9 bits proporciona 512 combinaciones, un RGB de 12 bits proporciona 4.096, etc.), en este modelo digital- Los convertidores analógicos (DAC) pueden generar los colores, simplificando el diseño del hardware, mientras que el software puede tratar el número por niveles utilizados de forma abstracta y gestionar los colores RGB de forma independiente del dispositivo. Con los colores almacenados en formato RGB dentro de las paletas de archivos de imágenes indexadas, cualquier imagen se puede mostrar (mediante transformaciones apropiadas) en cualquier sistema de este tipo, independientemente de la profundidad de color utilizada en la implementación del hardware.

Hoy en día, el hardware de visualización y los formatos de archivos de imágenes que tratan con imágenes en color indexadas gestionan casi exclusivamente los colores en formato RGB, siendo la codificación estándar de facto la llamada truecolor o RGB de 24 bits , con 16.777.216 colores diferentes posibles . Sin embargo, las imágenes en color indexadas 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 colores indexados en otros espacios de color, en particular CMYK , y Adobe Distiller de forma predeterminada convertirá imágenes a colores indexados siempre que el número total de colores de una imagen sea igual o inferior a 256. Cuando se utiliza RGB, Los formatos de archivos TIFF y PNG pueden almacenar opcionalmente los tripletes RGB con una precisión de 16 bits (65.536 niveles por componente), lo que arroja un total de 48 bits por píxel. Una extensión propuesta al estándar TIFF permite [6] paletas de colores que no son RGB, pero esto nunca se implementó en el software por razones técnicas. La tabla de mapas de colores del modo de color indexado del formato de archivo BMP almacena sus entradas en orden BGR en lugar de RGB, y tiene (en la versión actual) un byte adicional no utilizado para el relleno para ajustarse a la alineación de palabras de 32 bits durante el procesamiento, pero es Básicamente sigue siendo una codificación de color RGB de 24 bits. (Una versión anterior del formato BMP utilizaba tres bytes por entrada de la tabla de mapas 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 variaciones).

Disposiciones de bits de píxeles

Excepto por los modos gráficos de muy baja resolución, las primeras computadoras personales y domésticas rara vez implementaban un diseño de "todos los píxeles direccionables", es decir, la capacidad de cambiar un solo píxel a cualquiera de los colores disponibles de forma independiente. Sus limitaciones provenían del empleo de atributos de color separados o áreas de RAM de color , lo que generaba efectos de choque de atributos . Además, los bits de píxeles y/o las líneas de escaneo de la memoria de video estaban comúnmente dispuestos de maneras extrañas y convenientes para el hardware del generador de video (ahorrando así costos de hardware en un mercado competitivo en costos), pero que a veces creaban dificultades para las personas que escribían programas gráficos. . Los bits de un píxel en imágenes de color indexado y direccionables por todos los píxeles no siempre son contiguos en la memoria de video o en los archivos de imagen (es decir, no siempre se utiliza una organización fragmentada ). Algunos hardware de video, como los modos gráficos de 16 colores del modo mejorado El Adaptador de gráficos (EGA) y el Video Graphics Array (VGA) para IBM PC compatibles [7] o el búfer de video Amiga [8] están organizados como una serie de planos de bits (en una configuración llamada planar ), en la que los bits relacionados de un Un solo píxel se divide en varios mapas de bits independientes . Por tanto, los bits de píxeles están conceptualmente alineados a lo largo del eje Z 3D. (El concepto de "profundidad" aquí no es el mismo que el de profundidad de píxeles ).

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

Algunos formatos de archivos de imágenes en color indexados, como el formato de intercambio de gráficos (GIF), permiten que las líneas de escaneo de la imagen se organicen de forma intercalada (no en orden lineal), lo que permite que aparezca una versión de baja resolución de la imagen en la pantalla mientras aún se está descargando. , para que el usuario del ordenador pueda hacerse una idea de su contenido durante los segundos previos a que llegue la imagen completa. A continuación se muestra un ejemplo de una descarga típica intercalada verticalmente en cuatro pasos:

Como se ve aquí, 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 también contiene 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 líneas del grupo A (inmediatamente debajo). Estos 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) quede centrado entre las líneas del primer grupo, lo que produce el espacio más uniforme y reconocible. imagen posible, compuesta por sólo 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 a enviar contiene líneas situadas en o cerca de los centros de las bandas restantes que aún no están llenas de datos de imagen. Este método, con cuatro u ocho grupos de líneas, se utilizó 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) como en la ilustración anterior, la imagen parcial a menudo se presentaba en la pantalla duplicando cada línea para llenar el espacio debajo hasta la siguiente línea de imagen recibida. El resultado final fue una imagen continua con una resolución vertical reducida que aumentaría a resolución completa en unos pocos 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: al usar truecolor , 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). Al limitar 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 (asumiendo 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 (hasta un sexto o un duodécimo), obviamente a costa de la precisión del color.

El color indexado se utilizó ampliamente en las primeras computadoras personales y en el hardware de adaptadores de pantalla para reducir costos (principalmente al requerir menos chips de RAM , entonces costosos ), pero también para una gestión conveniente de imágenes con CPU de potencia limitada (del orden de 4 a 8 MHz). ), almacenamiento de archivos ( cintas de casete y disquetes de baja densidad ). Los sistemas de gráficos por computadora notables que utilizaron extensamente (o incluso exclusivamente) paletas de pseudocolor en la década de 1980 incluyen CGA , EGA y VGA (para IBM PC compatibles ), el Atari ST y OCS y AGA de Amiga .

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

La mayoría de los formatos de archivos de imágenes 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 artísticos y coloreados interesantes alterando la paleta de colores de las imágenes en color indexadas, por ejemplo para producir imágenes coloreadas en tonos sepia . Debido a la naturaleza separada del elemento de paleta asociado de las imágenes en color indexadas, son ideales para reasignar imágenes en escala de grises a imágenes de colores falsos mediante el uso de paletas de colores falsos .

La superposición de vídeo simple se puede lograr fácilmente mediante la técnica de color transparente .

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

Desventajas

La principal desventaja de utilizar colores indexados es el conjunto limitado de colores simultáneos por imagen. Las paletas pequeñas de 4 o 16 colores siguen siendo aceptables para imágenes pequeñas ( iconos ) o gráficos muy simples, pero para reproducir imágenes de la vida real se vuelven casi inútiles. Algunas técnicas, como la cuantificación del color , el suavizado y el tramado, combinadas, pueden crear imágenes indexadas de 256 colores comparables al original hasta un nivel aceptable.

Las imágenes en color indexadas dependen en gran medida de sus propias paletas de colores. Excepto por unas pocas paletas de colores fijos bien conocidas (como la del Adaptador de gráficos en color (CGA), los datos de imágenes sin procesar y/o las tablas de mapas de colores no se pueden intercambiar de manera confiable entre diferentes archivos de imágenes sin algún tipo de mapeo intermedio. Además, si se pierde la paleta de colores original de una imagen indexada determinada, puede resultar casi imposible restaurarla. A continuación se muestra un ejemplo de lo que sucede cuando una imagen en color indexada (el loro anterior) se ha asociado con una paleta de colores incorrecta:

Los modos de gráficos en color indexados para adaptadores de pantalla tienen el límite de 16 o 256 colores impuesto por el hardware. Las imágenes en color indexadas con paletas ricas pero incompatibles solo se pueden mostrar con precisión una a la vez, 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 tantos tonos diferentes como sea posible en un solo conjunto, lo que limita la disponibilidad general de colores precisos.

La siguiente imagen es un mosaico de cuatro imágenes de colores indexados diferentes renderizadas con una única paleta maestra compartida de 6-8-5 niveles RGB más 16 grises adicionales. Tenga en cuenta la gama limitada de colores utilizados para cada imagen y cuántas entradas de paleta quedan sin usar.

Muchos dispositivos de visualización en color indexados no alcanzan el límite de 24 bits para la paleta RGB completa. El VGA para PC compatibles con IBM, por ejemplo, sólo proporciona una paleta RGB de 18 bits con 262.144 colores posibles diferentes en modos gráficos de colores indexados de 16 y 256.

Algunos programas de edición de imágenes permiten aplicar la corrección gamma a una paleta para archivos de imágenes en color indexados. En general, aplicar una corrección gamma directamente al mapa de color es una mala práctica, debido a que se pierden los valores de color RGB originales. Es mejor aplicar la corrección gamma con el hardware de la pantalla (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 , que conserva los valores de color originales. Sólo cuando las imágenes en color indexadas estén destinadas a sistemas que carezcan de algún tipo de calibración de color , y no estén destinadas a ser multiplataforma, se podrá aplicar la corrección gamma a la propia tabla de colores.

Formatos de archivos de imagen que admiten colores indexados

Estos son algunos de los formatos de archivos de imágenes más representativos que admiten modos de color indexados. Algunos de ellos admiten otros modos (por ejemplo, color verdadero), pero aquí sólo 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 colores (verdadero, no EHB), 128 y 256 colores solo están disponibles para el chipset AGA Amiga.
** Soporte nativo para esquemas de compresión propietarios.
*** RLE con saltos Delta patentados opcionales.

Notas

  1. ^ Charles A. Poynton (2003). Vídeo digital y HDTV: algoritmos e interfaces. Morgan Kaufman. ISBN 1-55860-792-7.
  2. ^ Gráficos por computadora, Prof. R. Eckert, Lect. #5, febrero de 2001, Binghamton U., Nueva York
  3. ^ "Un búfer de fotogramas de vídeo de acceso aleatorio". Gráficos fundamentales: esfuerzos pioneros que dieron forma al campo. vol. 1. Asociación de Maquinaria de Computación. Julio de 1998. págs. 315–320. ISBN 9781581130522.
  4. ^ James Kajiya; Iván Sutherland; Edward Cheadle (1975), "Un búfer de fotogramas de vídeo de acceso aleatorio", Conferencia IEEE sobre gráficos por computadora, reconocimiento de patrones y estructuras de datos : 1–6
  5. ^ Hoja de datos en línea del chip de vídeo Texas Instruments TMS9918 utilizado en MSX.
  6. ^ "La especificación del formato de archivo de imagen TIFF" (PDF) . Archivado desde el original (PDF) el 17 de octubre de 2006 . Consultado el 16 de octubre de 2006 .
  7. ^ Richard Wilton, Guía del programador de sistemas de vídeo PC y PS/2, 1987, Microsoft Press. ISBN 1-55615-103-9 
  8. ^ Inc. Commodore-Amiga, Manual de referencia de hardware de Amiga, 1991, Addison-Wesley. ISBN 0-201-56776-8 

Ver también

Referencias

enlaces externos