La profundidad de color o profundidad de color (ver diferencias ortográficas ), también conocida como profundidad de bits , es el número de bits utilizados para indicar el color de un solo píxel , o el número de bits utilizados para cada componente de color de un solo píxel. Cuando se hace referencia a un píxel, el concepto se puede definir como bits por píxel (bpp). Cuando se hace referencia a un componente de color, el concepto se puede definir como bits por componente , bits por canal , bits por color (los tres abreviados bpc), y también bits por componente de píxel , bits por canal de color o bits por muestra (bps). [1] [2] [3] Los estándares modernos tienden a utilizar bits por componente, [1] [2] [4] [5] pero los sistemas históricos de menor profundidad usaban bits por píxel con más frecuencia.
La profundidad de color es solo un aspecto de la representación del color, que expresa la precisión con la que se puede expresar la cantidad de cada color primario; el otro aspecto es la amplitud con la que se puede expresar un rango de colores (la gama ). La definición tanto de la precisión como de la gama de colores se logra con una especificación de codificación de color que asigna un valor de código digital a una ubicación en un espacio de color .
El número de bits de intensidad resuelta en un canal de color también se conoce como resolución radiométrica , especialmente en el contexto de imágenes satelitales . [6]
Con una profundidad de color relativamente baja, el valor almacenado suele ser un número que representa el índice en un mapa de colores o paleta (una forma de cuantificación vectorial ). Los colores disponibles en la paleta pueden estar fijados por el hardware o ser modificables por software. Las paletas modificables a veces se denominan paletas de pseudocolores .
Los chips gráficos antiguos, en particular los que se utilizan en ordenadores domésticos y consolas de videojuegos , suelen tener la capacidad de utilizar una paleta diferente por sprite y mosaico para aumentar el número máximo de colores mostrados simultáneamente, al tiempo que se minimiza el uso de memoria (y ancho de banda) que en ese entonces eran costosos. Por ejemplo, en el ZX Spectrum la imagen se almacena en un formato de dos colores, pero estos dos colores se pueden definir por separado para cada bloque rectangular de 8×8 píxeles.
La paleta en sí tiene una profundidad de color (número de bits por entrada). Mientras que los mejores sistemas VGA sólo ofrecían una paleta de 18 bits (262.144 colores) [7] [8] [9] [10] de la que se podían elegir los colores, todo el hardware de vídeo Macintosh en color ofrecía una paleta de 24 bits (16 millones de colores). Las paletas de 24 bits son casi universales en cualquier hardware o formato de archivo reciente que las utilice.
Si, en cambio, el color se puede calcular directamente a partir de los valores de los píxeles, se trata de "color directo". Las paletas rara vez se utilizaban para profundidades superiores a 12 bits por píxel, ya que la memoria consumida por la paleta superaría la memoria necesaria para el color directo en cada píxel.
2 colores, a menudo negro y blanco, color directo. A veces, 1 significaba negro y 0 significaba blanco, lo inverso de los estándares modernos. La mayoría de las primeras pantallas gráficas eran de este tipo; el sistema X Window se desarrolló para tales pantallas y se suponía que esto era para una computadora 3M . A fines de la década de 1980, había pantallas profesionales con resoluciones de hasta 300 ppp (lo mismo que una impresora láser contemporánea), pero el color resultó ser más popular.
4 colores, generalmente de una selección de paletas fijas. Escala de grises de las primeras NeXTstation , Macintosh en color, Atari ST de resolución media.
8 colores, casi siempre todas las combinaciones de rojo, verde y azul de máxima intensidad. Muchos de los primeros ordenadores domésticos con pantallas de televisión, incluidos el ZX Spectrum y el BBC Micro .
16 colores, normalmente de una selección de paletas fijas. Utilizado por IBM CGA (en la resolución más baja), EGA y por el estándar VGA de mínimo común denominador en la resolución más alta. Los Macintosh en color, Atari ST de baja resolución, Commodore 64 y Amstrad CPC también admitían color de 4 bits.
32 colores de una paleta programable, utilizada por el chipset original de Amiga .
64 colores. Utilizado por Master System , Enhanced Graphics Adapter, GIME para TRS-80 Color Computer 3, reloj inteligente Pebble Time (pantalla de papel electrónico de 64 colores) y Parallax Propeller utilizando el circuito VGA de referencia.
256 colores, normalmente de una paleta totalmente programable: la mayoría de las primeras estaciones de trabajo Unix en color, Super VGA , Macintosh en color , Atari TT , chipset Amiga AGA , Falcon030 , Acorn Archimedes . Tanto X como Windows proporcionaron sistemas elaborados para intentar permitir que cada programa seleccionara su propia paleta, lo que a menudo daba como resultado colores incorrectos en cualquier ventana que no fuera la que tenía el foco.
Algunos sistemas colocaban un cubo de color en la paleta para un sistema de color directo (y así todos los programas usaban la misma paleta). Por lo general, se proporcionaban menos niveles de azul que otros, ya que el ojo humano normal es menos sensible al componente azul que al rojo o al verde (dos tercios de los receptores del ojo procesan las longitudes de onda más largas [11] ). Los tamaños más populares eran:
4.096 colores, normalmente de una paleta totalmente programable (aunque a menudo se configuraba en un cubo de colores de 16×16×16). Algunos sistemas Silicon Graphics , sistemas Color NeXTstation y sistemas Amiga en modo HAM tienen esta profundidad de color.
RGBA4444, una representación de 16 bpp relacionada que proporciona el cubo de color y 16 niveles de transparencia, es un formato de textura común en gráficos móviles.
En los sistemas de alta resolución de color, se almacenan dos bytes (16 bits) para cada píxel. Lo más frecuente es que a cada componente (R, G y B) se le asignen 5 bits, más un bit no utilizado (o utilizado para un canal de máscara o para cambiar a un color indexado); esto permite representar 32.768 colores. Sin embargo, una asignación alternativa que reasigna el bit no utilizado al canal G permite representar 65.536 colores, pero sin transparencia. [12] Estas profundidades de color se utilizan a veces en dispositivos pequeños con pantalla a color, como los teléfonos móviles, y a veces se consideran suficientes para mostrar imágenes fotográficas. [13] Ocasionalmente se utilizan 4 bits por color más 4 bits para alfa, lo que da 4.096 colores. Entre los primeros equipos que utilizaron el estándar se encuentran el Sharp X68000 y el Extended Graphics Array (XGA) de IBM.
Recientemente se ha utilizado el término "color alto" para referirse a profundidades de color superiores a 24 bits.
Casi todas las pantallas LCD más económicas (como los típicos tipos nemáticos trenzados ) ofrecen colores de 18 bits (64×64×64 = 262.144 combinaciones) para lograr tiempos de transición de color más rápidos, y utilizan tramado o control de velocidad de cuadros para aproximarse al color verdadero de 24 bits por píxel [14] , o descartar 6 bits de información de color por completo. Las pantallas LCD más caras (normalmente IPS ) pueden mostrar una profundidad de color de 24 bits o más.
Los 24 bits casi siempre utilizan 8 bits de cada uno de los canales R, G y B (8 bpc). A partir de 2018, la profundidad de color de 24 bits se utiliza en prácticamente todas las pantallas de computadoras y teléfonos [ cita requerida ] y en la gran mayoría de los formatos de almacenamiento de imágenes . Casi todos los casos de 32 bits por píxel asignan 24 bits al color, y los 8 restantes son el canal alfa o no se utilizan.
2 24 da 16.777.216 variaciones de color. El ojo humano puede discriminar hasta diez millones de colores, [15] y dado que la gama de una pantalla es menor que el rango de la visión humana, esto significa que debería cubrir ese rango con más detalles de los que se pueden percibir. Sin embargo, las pantallas no distribuyen uniformemente los colores en el espacio de percepción humana, por lo que los humanos pueden ver los cambios entre algunos colores adyacentes como bandas de color . Las imágenes monocromáticas establecen los tres canales en el mismo valor, lo que da como resultado solo 256 colores diferentes; algunos programas intentan tramar el nivel de gris en los canales de color para aumentar esto, aunque en el software moderno esto se usa más a menudo para la representación de subpíxeles para aumentar la resolución espacial en las pantallas LCD donde los colores tienen posiciones ligeramente diferentes.
Los estándares de DVD-Video y Blu-ray Disc admiten una profundidad de bits de 8 bits por color en YCbCr con submuestreo de croma 4:2:0 . [16] [17] YCbCr se puede convertir sin pérdidas a RGB.
MacOS se refiere al color de 24 bits como "millones de colores". El término color verdadero se utiliza a veces para referirse a lo que este artículo llama color directo . [18] También se utiliza a menudo para referirse a todas las profundidades de color mayores o iguales a 24.
El color profundo consta de mil millones o más de colores. [19] 2 30 es 1.073.741.824. Por lo general, se trata de 10 bits de cada uno de los colores rojo, verde y azul (10 bpc). Si se añade un canal alfa del mismo tamaño, cada píxel ocupa 40 bits.
Algunos sistemas anteriores colocaban tres canales de 10 bits en una palabra de 32 bits, con 2 bits sin usar (o utilizados como un canal alfa de 4 niveles ); el formato de archivo Cineon , por ejemplo, utilizaba esto. Algunos sistemas SGI tenían convertidores de digital a analógico de 10 (o más) bits para la señal de video y podían configurarse para interpretar los datos almacenados de esta manera para su visualización. Los archivos BMP definen esto como uno de sus formatos, y Microsoft lo llama "HiColor" .
Las tarjetas de video con 10 bits por componente comenzaron a llegar al mercado a fines de la década de 1990. Un ejemplo temprano fue la tarjeta Radius ThunderPower para Macintosh, que incluía extensiones para los complementos QuickDraw y Adobe Photoshop para admitir la edición de imágenes de 30 bits. [20] Algunos proveedores llaman paneles de 30 bits a sus paneles de profundidad de color de 24 bits con FRC ; sin embargo, las pantallas de color profundo real tienen una profundidad de color de 10 bits o más sin FRC.
La especificación HDMI 1.3 define una profundidad de bits de 30 bits (así como profundidades de 36 y 48 bits). [21] En ese sentido, las tarjetas gráficas Nvidia Quadro fabricadas después de 2006 admiten una profundidad de color de 30 bits [22] y las tarjetas GeForce y Titan Pascal o posteriores cuando se combinan con el controlador Studio [23] al igual que algunos modelos de la serie Radeon HD 5900 como la HD 5970. [24] [25] La tarjeta gráfica ATI FireGL V7350 admite píxeles de 40 y 64 bits (profundidad de color de 30 y 48 bits con un canal alfa). [26]
La especificación DisplayPort también admite profundidades de color superiores a 24 bpp en la versión 1.3 a través de " VESA Display Stream Compression , que utiliza un algoritmo de baja latencia sin pérdida visual basado en el espacio de color predictivo DPCM y YCoCg-R y permite mayores resoluciones y profundidades de color y un menor consumo de energía". [27]
En WinHEC 2008, Microsoft anunció que las profundidades de color de 30 bits y 48 bits serían compatibles con Windows 7 , junto con la amplia gama de colores scRGB . [28] [29]
La codificación de video de alta eficiencia (HEVC o H.265) define el perfil Main 10, que permite 8 o 10 bits por muestra con submuestreo de croma 4:2:0 . [2] [4] [5] [30] [31] El perfil Main 10 se agregó en la reunión HEVC de octubre de 2012 con base en la propuesta JCTVC-K0109 que proponía que se agregara un perfil de 10 bits a HEVC para aplicaciones de consumo. [5] La propuesta establecía que esto era para permitir una calidad de video mejorada y para soportar el espacio de color Rec. 2020 que será utilizado por UHDTV . [5] La segunda versión de HEVC tiene cinco perfiles que permiten una profundidad de bits de 8 bits a 16 bits por muestra. [32]
A partir de 2020, algunos teléfonos inteligentes comenzaron a utilizar una profundidad de color de 30 bits, como OnePlus 8 Pro , Oppo Find X2 y Find X2 Pro, Sony Xperia 1 II , Xiaomi Mi 10 Ultra , Motorola Edge+ , ROG Phone 3 y Sharp Aquos Zero 2. [ cita requerida ]
Si se utilizan 12 bits por canal de color, se obtienen 36 bits, es decir, 68.719.476.736 colores. Si se añade un canal alfa del mismo tamaño, se obtienen 48 bits por píxel.
Si se utilizan 16 bits por canal de color, se obtienen 48 bits, es decir, 281.474.976.710.656 colores. Si se añade un canal alfa del mismo tamaño, se obtienen 64 bits por píxel.
Los programas de edición de imágenes como Adobe Photoshop empezaron a utilizar 16 bits por canal bastante pronto para reducir la cuantificación de los resultados intermedios (es decir, si una operación se divide por 4 y luego se multiplica por 4, se perderían los 2 bits inferiores de los datos de 8 bits, pero si se utilizaran 16 bits, no se perdería ninguno de los datos de 8 bits). Además, las cámaras digitales pueden producir 10 o 12 bits por canal en sus datos sin procesar; como 16 bits es la unidad direccionable más pequeña que esa, su uso facilitaría la manipulación de los datos sin procesar.
Algunos sistemas comenzaron a utilizar esos bits para números fuera del rango 0-1 en lugar de para aumentar la resolución. Los números mayores que 1 eran para colores más brillantes que los que la pantalla podía mostrar, como en las imágenes de alto rango dinámico (HDRI). Los números negativos pueden aumentar la gama para cubrir todos los colores posibles y para almacenar los resultados de las operaciones de filtrado con coeficientes de filtro negativos. El Pixar Image Computer utilizó 12 bits para almacenar números en el rango [-1.5, 2.5), con 2 bits para la parte entera y 10 para la fracción. El sistema de imágenes Cineon utilizó pantallas de video profesionales de 10 bits con el hardware de video ajustado de modo que un valor de 95 fuera negro y 685 fuera blanco. [33] La señal amplificada tendía a reducir la vida útil del CRT.
Más bits también fomentaron el almacenamiento de luz como valores lineales, donde el número corresponde directamente a la cantidad de luz emitida. Los niveles lineales hacen que el cálculo de gráficos de computadora sea mucho más fácil. Sin embargo, el color lineal da como resultado desproporcionadamente más muestras cerca del blanco y menos cerca del negro, por lo que la calidad del color lineal de 16 bits es aproximadamente igual a la del sRGB de 12 bits .
Los números de coma flotante pueden representar niveles de luz lineales espaciando las muestras de forma semilogarítmica. Las representaciones de coma flotante también permiten rangos dinámicos drásticamente mayores, así como valores negativos. La mayoría de los sistemas admitieron primero una precisión simple de 32 bits por canal , que excedía con creces la precisión requerida para la mayoría de las aplicaciones. En 1999, Industrial Light & Magic lanzó el formato de archivo de imagen estándar abierto OpenEXR , que admitía números de coma flotante de media precisión de 16 bits por canal . En valores cercanos a 1,0, los valores de coma flotante de media precisión solo tienen la precisión de un valor entero de 11 bits, lo que lleva a algunos profesionales de gráficos a rechazar la media precisión en situaciones en las que no se necesita el rango dinámico extendido.
Prácticamente todas las pantallas de televisión y de ordenador forman imágenes variando la intensidad de tan solo tres colores primarios : rojo, verde y azul. Por ejemplo, el amarillo brillante se forma con contribuciones aproximadamente iguales de rojo y verde, sin ninguna contribución del azul.
Para almacenar y manipular imágenes, existen formas alternativas de expandir el triángulo tradicional: se puede convertir la codificación de imágenes para utilizar colores primarios ficticios, que no son físicamente posibles pero que tienen el efecto de extender el triángulo para encerrar una gama de colores mucho más grande. Un cambio equivalente y más simple es permitir números negativos en los canales de color, de modo que los colores representados puedan extenderse más allá del triángulo de colores formado por los colores primarios. Sin embargo, estos solo extienden los colores que se pueden representar en la codificación de imágenes; ninguno de estos trucos extiende la gama de colores que realmente se puede representar en un dispositivo de visualización.
Los colores suplementarios pueden ampliar la gama de colores de una pantalla, ya que ya no está limitada al interior de un triángulo formado por tres primarios en sus esquinas, por ejemplo, el espacio de color CIE 1931. Tecnologías recientes como BrilliantColor de Texas Instruments aumentan los canales típicos de rojo, verde y azul con hasta otros tres primarios: cian, magenta y amarillo. [34] El cian se indicaría mediante valores negativos en el canal rojo, el magenta mediante valores negativos en el canal verde y el amarillo mediante valores negativos en el canal azul, lo que valida el uso de números negativos ficticios en los canales de color.
Mitsubishi y Samsung (entre otros) utilizan BrilliantColor en algunos de sus televisores para ampliar la gama de colores que se pueden visualizar. [ cita requerida ] La línea de televisores Sharp Aquos ha introducido la tecnología Quattron , que aumenta los componentes de píxeles RGB habituales con un subpíxel amarillo. Sin embargo, los formatos y medios que permiten o hacen uso de la gama de colores extendida son en la actualidad extremadamente raros. [ cita requerida ]
Como los humanos somos mayoritariamente tricrómatas o dicrómatas [b], se podría suponer que añadir un cuarto color "primario" no aportaría ningún beneficio práctico. Sin embargo, los humanos podemos ver una gama de colores más amplia que la que puede mostrar una mezcla de luces de tres colores. El déficit de colores es particularmente notable en los tonos saturados de verde azulado (mostrados como la parte gris superior izquierda de la herradura en el diagrama) de las pantallas RGB: la mayoría de los humanos pueden ver azules-verdes más vivos que los que puede mostrar cualquier pantalla de vídeo en color.