Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


9.4  Representación numérica del color

§1  Preámbulo

A lo largo del tiempo, especialmente en el ámbito de las artes gráficas e industrias afines, se han hecho importantes esfuerzos para establecer un sistema de clasificación y parametrización de la casi infinita cantidad de colores que pueden existir.  Esta necesidad se volvió imperativa con la aparición de la informática, dado que la digitalización de imágenes ( H9.3) precisa de su codificación numérica.

En realidad, la representación matemáticamente exacta de un color implicaría la especificación de su distribución espectral SPD ( H9.1.1), pero habida cuenta de las característica de la percepción humana, el color también puede ser representado mediante una terna de valores que son las coordenadas matemáticas del espacio del color.  Puede pensarse en él como un espacio tridimensional en el que cada punto color puede representarse por sus coordenadas ( H9.2).  Existen diversos métodos para establecer la correspondencia entre un SPD y una terna de valores.  Los más usuales en los estudios colorimétricos de física son CIE XYZCIE xyY, CIE L*u*v* y CIE L*a*b*.

§2  Sistema XYZ

En 1986 el CIE ( H9.1) estableció un sistema, denominado XYZ, en el que el color puede ser establecido por tres magnitudes:  La luminancia Y, y dos componentes adicionales X y Z.   Estos tres componentes son proporcionales a la energía de la radiación, pero su valor se basa en curvas-patrón establecidas en base a estudios estadísticos de observadores humanos.

§3  Sistema Munsell

A principios del siglo XX, el estadounidense Albert Henry Munsell ideó un sistema de clasificación decimal partiendo de los cinco colores principales del espectro:  Rojo, Amarillo, Verde, Azul y Púrpura (morado), a los que añadió otros cinco intermedios que nombró mediante la composición con los nombres adyacentes: amarillo-rojo, verde-amarillo, azul-verde, morado-azul y rojo-morado (se supone que los colores se distribuyen en un círculo).

Además de la propiedad "color", Munsell añadió otros dos atributos: luminosidad y cromaticidad ("Luma" y "Chroma").  El primero indica lo que hemos denominado brillo (una medida de la luminosidad 9.1), que depende de la cantidad de luz reflejada por el color.  El segundo señala la intensidad del color, lo que generalmente conocemos como saturación o limpieza ("Cleanliness") del color.

Nota:  El modelo de color basado en color luminosidad y saturación se conoce también como modelo HLS por su acrónimo inglés ("Hue", "Lightness" y "Saturation"), HSV ("Hue", "Saturation" y "Value" -luminosidad-) y HSB ("Hue, Saturation, Brightness").

Es frecuente encontrar cartas de colores que siguen éste sistema en multitud de libros y cursos de pintura.  En tiempo fue utilizado en artes gráficas para comprobar la veracidad de los colores, pero en este sector ha sido casi completamente desplazado por el sistema Pantone.

Nota:  Observe que los sistemas basados en algún tipo de codificación de los atributos color, saturación y luminosidad, son bastante "Naturales" e intuitivos, ya que se basan en las tres características que podemos considerar básicas en la percepción humana de la luz (sin embargo son poco adecuados para aplicaciones científicas).  El color es la propiedad que nos permite distinguir un rojo de un verde o un amarillo.  La saturación permite distinguir la pureza o intensidad de un color.  Por ejemplo, permite distinguir un color rojo intenso de otro más desvaído.  Finalmente la luminosidad es la propiedad que nos permite asegurar que el Sol es más luminoso que la Luna o que el foco de una linterna tiene más potencia que el de un farol.  Todos los programas de edición gráfica disponen de recursos para controlar estos tres parámetros básicos de los colores.

§4  Representación informática

En informática se han utilizado históricamente diversos sistemas de representación.  Aunque los detalles de la codificación de gráficos de ordenador son en sí mismos un mundo extraordinariamente complejo, repasaremos brevemente sus características principales, empezando por un repaso a las profundidades de color ( H9.3) utilizadas.

§4.1  Profundidad de color 1 y 2

El sistema monocromo es el más simple de todos.  Si un sistema utilizara 1 bit de profundidad de color, se permitirían solo dos posibilidades 0 y 1 (activo/inactivo) para cada píxel.  Los primitivos sistemas de video utilizaban éste sistema en el que cada píxel de pantalla solo puede estar encendido o apagado.  En esta época los monitores tenían un  solo color e intensidad, el correspondiente al color del fósforo de la pantalla y carecían de capacidades  gráficas, de modo que los píxeles solo podían corresponder caracteres alfanuméricos.

Nota:  Inicialmente el color de los puntos luminosos (fósforo) era blanco;  posteriormente se construyeron en verde, que se suponía proporcionaba un mayor descanso visual.  Finalmente se introdujo el color ámbar, que aunaba buena visibilidad y descanso visual.

En realidad los sistemas monocromo llegaron a utilizar 2 bits por píxel, lo que les permitía 4 (22) combinaciones que a través del controlador correspondiente podían traducirse en atributos adicionales aparte de encendido/apagado, tales como:  atenuado y parpadeo.  Es el sistema utilizado en las controladoras MDA ("Monochrome Display Adapter") que montaban de forma estándar los primitivos PCs de IBM.

Tabla 2.  16 Colores CGA
I

RGB

Color

0 0, 0, 0  Negro
1 0, 0, 0  Gris oscuro
1 1, 1, 1 Blanco brillante
0 1, 1, 1 Gris
1 1, 0, 0 Rojo brillante
0 1, 0, 0 Rojo oscuro
1 0, 1, 0 Verde brillante
0 0 , 1, 0 Verde oscuro
1 0, 0, 1 Azul brillante
0 0, 0, 1 Azul oscuro
1 1, 1, 0 Amarillo brillante
0 1, 1 ,0 Amarillo oscuro
1 0, 1, 1 Cian brillante
0 0, 1, 1 Cian oscuro
1 1, 0, 1 Magenta brillante
0 1, 0, 1 Magenta oscuro
§4.2  Profundiad de color 3 y 4
Tabla 1.  8 Colores básicos RGB

RGB

Color

0, 0, 0  Negro
1, 1, 1  Blanco
1, 0, 0  Rojo
0, 1, 0  Verde
0, 0, 1  Azul
1, 1, 0  Amarillo
0, 1, 1  Cian
1, 0, 1  Magenta

Los primeros sistemas capaces de mostrar imágenes o caracteres en color utilizaban 3 bits para señalar los componentes RGB de cada píxel, lo que conducía a una paleta de 8 (23) colores según se muestra en la tabla 1.  Posteriormente algunos sistemas añadieron un cuarto bit (de intensidad), de forma que un píxel podía adoptar dos intensidades para cada color: brillante y amortiguado.  El resultado es una paleta de 16 (24) posibilidades que se muestran en la tabla 2.

Este método es conocido como IRGB y fue utilizado en los adaptadores de video CGA  ("Color Graphic Adapter") que podían montarse como opción "avanzada" en los primitivos IBM-PC.  En estos adaptadores además de gráficos, podían ya utilizarse colores y caracteres con atributos diversos.

Existen muchas formas en que la controladora puede manejar esta señal de 4 bits por píxel, algunas muy complejas [2], pero aunque teóricamente el sistema IRGB puede proporcionar 16 colores, las primeras controladoras no permitían utilizarlos simultáneamente.  Enviaban a la pantalla tres señales binarias de color y una de intensidad;  En este sistema la gama de cada momento depende del canal al que se asigne el cuarto bit (color al que se asignen 4 posibilidades de brillo), de modo que en realidad se está utilizando alguna de las siguientes combinaciones o "modos" de video:  RrGBRGgB y RGBb.

Los adaptadores CGA ofrecían varios modos de video establecidos por IBM, pero solo permitían gráficos de 320 x 200 píxeles y 4 colores:  blanco, negro, cian y magenta.  En 16 colores solo eran posibles gráficos de 160 x 200 píxeles.

§4.3  Profundidad de color 6

El estándar EGA ("Enhanced Graphics Adapter") introducido por IBM en 1984 aumentó las 16 posibilidades del CGA, permitiendo que cada color tuviese dos señales binarias independientes (I-1 e I-2).  En total existen 6 bits para describir el color (2 para cada canal), lo que conduce a una paleta de 64 (26) colores, aunque debido a las limitaciones de memoria, el sistema solo permitía gráficos de 640 x 350 píxeles.

Posteriormente, en 1986 IBM introdujo un nuevo controlador denominado VGA ("Video Graphics Adapter") que también utilizaba 6 píxeles de profundidad de color, aunque para conectar el monitor no utilizaba señales digitales como las controladoras EGA, sino analógicas.  El nivel de brillo de cada canal venía ahora determinado por el nivel de la señal correspondiente.  Paralelamente cambió el conector DB-9 de las antiguas CGA, que pasó a ser el DB-15, y se aumentó la memoria de vídeo, de forma que ya podían presentarse gráficos de 640 x 480 píxeles (paralelamente ofrecía la posibilidad de 256 colores, aunque a 320x200 resolución).

Nota:  La conexión analógica entre la controladora de video y el monitor se ha mantenido hasta nuestros días (2004), aunque comienzan a aparecer controladoras de gama alta que tienen salida digital (para utilizar con monitores digitales).  Estas controladoras utilizan un tipo de conector distinto del clásico VGA, aunque suelen disponer todavía del conector DB-15 con salida analógica.

El estándar VGA ha sufrido importantes implementaciones, pero se ha mantenido como un mínimo común denominador para los adaptadores gráficos de los equipos hasta  la actualidad.

§4.4  Profundidad de color 8

Los sistemas que utilizan 8 bits de profundidad de color pueden utilizar una paleta de 256 (28) colores.  Se denominan pseudocolor o de color indexado. porque como veremos a continuación , suelen utilizar una tabla de conversión para convertir este byte en tres valores RGB.  De esta forma se utilizan al máximo las 256 posibilidades, ya que no es posible repartir equitativamente los 8 bits entre los tres canales de color.

§4.5  Profundidad de color 16

Esta profundidad, que permite una paleta de 65.536 (216) posibilidades, se denomina también hicolor o color de alta densidad.  Como 16 no es divisible entre los tres canales de color, se utilizan dos codificaciones distintas.  La primera utiliza 5 bits por canal y el bit restante se emplea para describir la transparencia (no hay estados intermedios para este valor, solo opaco/transparente H9.2).  El otro utiliza 5 bits para el rojo, 5 para el azul y 6 bits para el verde que es el más luminoso.

Por su escasa profundidad de color éste sistema no es adecuado para reproducciones de calidad fotográfica, y los dispositivos de bajo precio no suelen utilizar tabla de transformación entre las coordenadas de la matriz-imagen y los canales del dispositivo de representación, de forma que los valores R G y B se utilizan directamente en los canales de salida del reproductor.  En el caso de monitores analógicos se envían directamente a los DAC de cada canal, y dado que los valores RGB son traducidos directamente en voltajes, la codificación exige que los valores RGB sean proporcionales a la intensidad en un factor de 0.45 para contrarrestar la distorsión introducida por el factor gamma del monitor ( H.9.5).

La ventaja de la codificación hicolor frente al sistema de color real es que en vez de 3, utiliza solo 2 bytes para cada punto de la imagen, lo que significa un 33% menos de memoria y por tanto, mayor rapidez en su manipulación.  Por supuesto la calidad de la imagen es menor que en el caso anterior, pero en algunas aplicaciones las diferencias son inapreciables por lo que es utilizado en lugar de truecolor.

§4.6  Profundidad de color 24 y 32

Los sistemas que utilizan 8 bits para la representación de cada color permiten una paleta 16.777.216 (224) colores.  Se denominan de color de 24-bits (24 bits de profundidad de color) o color real ("Truecolor").  El nombre se debe a que prácticamente no impone restricciones al número de colores que pueden representarse, ya que 16 millones de colores es más de lo que pede discriminar el ojo humano, por lo que se utiliza en aplicaciones de diseño gráfico de alta calidad, fotografía, análisis de imagen, Etc.

Nota:  Existe una versión de color verdadero que utiliza 32 bits de profundidad de color denominado color verdadero de 32 bits.  En este caso los 8 bits restantes se utilizan para el canal alfa ()

En los sistemas truecolor es frecuente representar las ternas numéricas en hexadecimal.  En este caso bastan dos dígitos 00h - FFh para representar los 256 valores (0 - 255) de cada canal.  En algunos casos los valores se expresan poniendo seguidos los 6 dígitos en la forma RRGGBB.  Por ejemplo la definición del color de fondo en lenguaje HTML es del tipo:

bgcolor="#ff69b4"


§4.7
  La tabla adjunta muestra un resumen de las características principales.

Profundidad de color bits

Paleta de colores

Bytes por píxel

Nombre Windows

Nombre común

2

4

0.25

 

MDA

4

16

0.5

16 colores

CGA

6

64

0.75

 

VGA Estándar

8

256

1

256 colores

modo de 256 colores (Pseudocolor)

16

65,536

2

Color de alta densidad 16 bits

High-Color

24

16,777,216

3

Color verdadero 24 bits

True-Color 24 bits

32

16,777,216 + canal Alfa

4

Color verdadero 32 bits

True-Color 32 bits

§5  Reproducción: Paleta de Color, CMS

La representación interna (digitalizada) de una imagen puede ser de mapa de bits o vectorial ( H9.3), pero en último extremo siempre es traducida a un mapa de píxeles que se representarán en la pantalla o en el dispositivo de impresión correspondiente.  Cualquiera que sea el sistema de codificación (RGB o CMYK) y profundidad de color utilizada,  la reproducción supone establecer una correspondencia entre el espacio de color del original y el del dispositivo.  Dicho en otras palabras: establecer una correspondencia entre la paleta de colores del original y la gama de colores posibles en el dispositivo de reproducción.  Esta última puede estar limitada (por motivos físicos o deliberadamente).  A estos valores posibles los denominamos paleta de color del dispositivo.

La realización práctica de esta correspondencia supone establecer una relación entre los valores numéricos (RGB o CMYK) y los valores entregados en los canales de color del dispositivo de salida [3].  Como veremos a continuación, esta correspondencia incluye un paso intermedio, cuya forma concreta es variable;  puede tratarse de una simple tabla de equivalencia de colores CLUT("Color Look-up table") o puede ser un sistema de color CMS.  La razón es que aunque no se necesita una precisión excesiva (manejar un número grande de colores), puede que la representación se realice en un espacio de colores reducido, por lo que el sistema puede ser computacionalmente complejo y exigir este paso intermedio.

Fig. 1

La figura 1 muestra uno de los esquemas posibles:  La matríz imagen almacenada en memoria ("Frame buffer") contiene el valor digitalizado C del color de cada píxel.  Aunque no es este el lugar adecuado para tratar de los detalles del proceso, podemos adelantar que actualmente la mayoría de monitores aceptan entradas analógicas , por lo que las señales digitales de la controladora deben ser enviadas a un conversor analógico-digital RAMDAC ("Random Access Memory Digital-to-Analog Converter"), que las traduce en las señales analógicas de tensión Er, Eg, y Eb que serán entregadas al monitor. 

En ocasiones el valor C digitalizado no contiene directamente los valores RGB de cada color, y se interpone una tabla de conversión CLUT que contiene la correspondencia entre cada valor C y la terna de componentes RGB correspondientes.

Nota:  El conversor RAMDAC se compone en realidad de tres conversores digital/analógico DAC ("Digital-to-Analog Converter"), uno para cada color.

En el caso de monitores analógicos, los valores RGB True-color son afectados por un factor adecuado antes de entregados a los DAC, por lo que no es necesario que estén ponderados previamente por el factor 0.45.  Además, tanto el Sistema Operativo como el software de aplicación, pueden interponer transformaciones arbitrarias, incluyendo la simulación de sistemas Pseudocolor o Hicolor.

§5.1  Tabla de equivalencia de colores

La tabla de equivalencia de colores CLUT también es denominada mapa de colores ("Colormap") o paleta.  Es una tabla almacenada en memoria que establece una relación entre el valor C del color digitalizado y la terna RGB de colores que se entregan a las DAC.  Las ventajas de utilizar este tipo de tablas son muchas, incluyendo la posibilidad de realizar transformaciones no lineales entre los valores C de entrada y las componentes RGB de salida.  Esta no-linealidad puede ser necesaria porque de hecho, la respuesta del monitor tampoco es lineal respecto a los valores Er, Eg y Eb de las tensiones de entrada (ver Factor gamma H9.5).

Nota:  En los sistemas X Windows, truecolor se refiere a utilizar tablas de conversión fijas, mientras que color directo supone la utilización de tablas controladas por la aplicación.

La utilización de tablas de equivalencia no solo tiene lugar en los dispositivos de reproducción de video (controladoras), sino en muchos otros dispositivos de reproducción (escáneres, trazadoras, impresoras, etc).  Por ejemplo, el tratamiento de las señales proporcionadas por ciertos escáneres utiliza una tabla CLUT para encontrar los valores que pueden reproducir el color proporcionado por una señal determinada.

Las tablas de conversión son muy utilizadas también en los sistemas de almacenamiento y transmisión de ficheros de imagen.  Por ejemplo, podemos tener una imagen en color verdadero de 24 bits de n píxeles que debe ser reproducida en sistemas pseudocolor.  Como en este caso la paleta del sistema de reproducción solo permite 256 celdas, es posible construir una tabla de equivalencia de 256 posiciones numeradas de 0 a 255, en la que cada celda contenga los valores RGB de la paleta.  En estas condiciones, cada punto de la imagen original (cuyo tamaño es 3 x n bytes), puede ser representada por un índice de 1 byte en la tabla, de forma que la imagen puede se representada en un tercio de su tamaño (n bytes).  A cambio claro, de establecer un algoritmo que traduzca cada uno de los 16.777.216 colores de la paleta origianl a uno de la paleta de salida.  Este método es utilizado por muchos algoritmos de compresión no conservativos, como .GIF o .TIFF ( H9.2),  que junto a la imagen comprimida incluyen una tabla de equivalencia para que la imagen pueda ser reconstruida de nuevo con un patrón de conversión constante.

En este caso el tamaño de la tabla CLUT sería 3 x 256 bytes, pero la reducción total puede ser importante si la imagen inicial es grande.  Además, al reducir la profundidad de color hay más posibilidades de que píxeles contiguos sean iguales, con lo que los algoritmos de compresión trabajan más eficazmente sobre la imagen traducida.

§5.2 Sistema de color

Un sistema o gestor de color CMS ("Color Management System") es un método más elaborado y complejo que la tabla de equivalencia. Está constituido por una capa de software, que maneja la reproducción, situada entre la aplicación y los dispositivos de salida.  Los sistemas de color realizan las transformaciones necesarias para garantizar el paso fidedigno de la información entre dispositivos diversos, que pueden utilizar incluso sistemas de codificación distintos, como RGB, CMYK o CIE L*a*b*.

Cuando una aplicación necesita acceder a un dispositivo particular, el gestor de color del CMS realiza las transformaciones matemáticas necesarias para adecuar el espacio de color de la aplicación al del dispositivo.   Los espacios de color manejados pueden ser independientes del dispositivo (RGB, CMYK etc) o asociados a un dispositivo particular, en cuyo caso el gestor de color realiza las transformaciones específicas para el dispositivo o incluso las relativas a su estado específico de calibración en cada momento.

Por supuesto no todos los sistemas de color realizan un trabajo del mismo nivel.  Los sistemas de color utilizados en los sistemas de escritorio (PCs) son adecuados para aplicaciones de oficina pero no para las aplicaciones profesionales de edición o fotografía.  Kodak, Agfa y otros fabricantes ofrecen a los fabricantes de software gestores de color de características avanzadas en forma de módulos.

En le figura adjunta se muestra un cuadro de diálogo de Micrografx Picture Publisher en el que se observa la opción de utilizar el sistema de manejo de color de Kodak.

5.2.1  Estandarización

Debido a la carencia de un sistema universal y estandarizado para manejar los aspectos técnicos del color en sus aplicaciones informáticas, en 1993 se reunieron 8 fabricantes para crear el Consorcio Internacional del Color ICC ("International Color Consortium"    www.color.org).  Una plataforma neutral e independiente, que promoviera el desarrollo una arquitectura abierta de componentes multi-plataforma, para el tratamiento y manejo del color.

Como resultado de sus esfuerzos, el consorcio ha elaborado la especificación de un formato (que se pretende se la base de un futuro estándar) denominado descripción de dispositivo ICC (ICC device profile).  La intención es crear un formato multiplataforma, que sea soportado por los distintos Sistemas Operativos, que permita transportar los datos de color desde el espacio de un dispositivo particular, al espacio de color de cualquier otro dispositivo.  De esta forma, será posible mover de forma transparente imágenes, que contengan embebido el perfil correspondiente en el dispositivo origen, a otros dispositivos, lo que permitirá a los asegurar que las imágenes de un usuario podrán ser transferidas con sus características de color intactas entre distintas aplicaciones y sistemas.  Entre otras ventajas, el sistema permitirá que los fabricantes de dispositivos, por ejemplo los de impresoras, utilicen un único perfil de color para todos los Sistemas Operativos en que pudieran emplearse sus fabricados.

§5.3  El canal alfa

Algunos sistemas gráficos, especialmente formatos de color verdadero de 32 bits, utilizan 8 bits para cada uno de los componente tradicionales; rojo, verde y azul, mientras que los 8 bits restantes se utilizan para el denominado canal alfa, que indica la transparencia de cada elemento de la matriz-imagen.

Esta información sobre "transparencia" es en realidad una máscara o tabla de conversión que señala cual es el color resultante cuando exista superposición de píxeles en un mismo punto.  Mediante esta técnica se consiguen efectos de transparencia, de forma que puede "verse" a través de la imagen superior adoptando esta diversos grados de transparencia.

Cuando la aplicación (por ejemplo el navegador) presente en pantalla una imagen que contiene elementos transparentes, sustituirá el contenido transparente con el fondo del documento, ya sea este una imagen o un color sólido.  Esto es de utilidad para el diseño de páginas Web, ya que permite insertar una imagen "mezclándola" con otra que sirve de fondo a la página, o con un color usado para tal fin.  Así pues, el uso de imágenes transparentes permite también diseñar gráficos que sean vistos con cualquier color de fondo.

El canal alfa también es de utilidad en las animaciones gráficas, cuando el primer plano cambia de una imagen a otra; en este caso, la imagen de primer plano contiene gran cantidad de transparencias que dejan ver el fondo.

  Inicio.


[2]  En palabras de Peter Norton: "Los modos EGA son complejos y perversos"  Inside the IBM PC:  Access to advanced features and programming. 1986

[3]  El método de traducir la imagen digitalizada en una imagen real depende del dispositivo, pero nos referiremos al caso del monitor por ser el más característico.