Introducción
Cuando hablamos de profundidad de bits en imágenes nos referimos a la cantidad de información necesaria para reproducir los colores en dichas imágenes; a la profundidad de bits también se le suele llamar resolución de color, así que no te extrañe que veas uno u otro concepto en uso cuando se hable de la cantidad de colores en una imagen en otros sitios de Internet.
Antes de comenzar, me disculparé anticipadamente porque el tema que a continuación leerás suele ser algo complicado de comprender y explicar, pues contiene varios conceptos técnicos que quizá solo interesen a los interesados en cuestiones informáticas, no obstante, trataré de expresarme los más claro que pueda.
Imágenes con profundidad de 8 bits por pixel
También conocidas como imágenes indexadas o con paleta de colores, permite hasta un máximo de 28 colores, es decir 256 colores, de los cuales, uno se utiliza para transparencia; esta profundidad de bits se puede ver principalmente en las imágenes animadas GIF.
Imagen con color indexado de 8bits.
Imágenes con profundidad de 24 y 32 bits por pixel
También conocidas como imágenes en color verdadero, son las elegidas para desplegarse en la World Wide Web a través de los navegadores; con sus 224 o 16 777 216 colores posibles, se acerca bastante a lo que puede ver el ojo humano.
Que una imagen tenga una profundidad de 32 bits por pixel, no significa que superará la cantidad de colores reproducibles por una de 24, sino que los 8 bits extra se utilizan para agregar hasta 256 niveles de transparencia, quedando la cantidad de colores reproducibles en los mismos que una de 24 bits.
A este tipo de imágenes también se les conoce como de ocho bits por canal, pues se utilizan 8 bits por cada canal RGB más 8 para transparencias.
Imagen en color verdadero de 24bits.
Imágenes con profundidad de 48 y 64 bits por pixel
También conocidas como imágenes de 16 bits por canal, tienen una gama de colores muy superior a la de imágenes con 24 o 32 bits, y se basa en los mismos principios que estas, es decir, por cada canal RGB se disponen de 16 bits, lo que traducido a números nos da una gama de 65 536 niveles de saturación por cada canal, o sea,
281.4 billones de colores diferentes, más 65 536 niveles de transparencia.
Esta profundidad de bits es la recomendada para trabajar con imágenes de alta calidad, ya que la posterización de color que se agrega durante su manipulación es imperceptible para nuestros ojos, traduciéndose en una sensación de mayor claridad, sobre todo en los tonos degradados; sin embargo, no es recomendada para utilizarse en Internet, por lo que, después de trabajar con una imagen en esta profundidad, se debe convertir a imagen de 24 o 32 bits por pixel para ahorrar ancho de banda, sobre todo, debido a que el formato de distribución más popular, el famoso JPEG, no soporta profundidades mayores a 24 bits por pixel, ni soporta transparencias.
Imágenes de 96 y 128 bits por pixel
Igual que con las imágenes de 24/32 y 48/64 bits por pixel, las imágenes de profundidad de 96 bits por pixel o 32 bits por canal, se basan en el mismo principio, tenemos que su gama de colores es astronómicamente superior, pues ya estamos hablando de cuatrillones de colores, para ser exactos: 7.922816251x1028 colores, esto se traduce en que por cada canal tenemos 16 777 216 niveles de saturación, más la misma cantidad de niveles de transparencia.
Esta cantidad de colores solo son útiles en la industria cinematográfica, para quienes deseen trabajar con corrección de color intensa o bien para quien quiera presumir de hacerlo, pero el costo computacional suele ser muy alto, sobre todo por la cantidad de memoria que consume una imagen con esta cantidad de bits por pixel.
Consumo de memoria
Hasta este momento todo ha sido muy bonito y sencillo, pero viene la parte negativa de esto, y es, como el encabezado de este apartado indica, el consumo de memoria, pues a mayor profundidad, mayor la utilización de memoria, y no me refiero al almacenamiento, ya que las imágenes al almacenarse en algún soporte como un disco duro, unidad SSD o memoria flash, por lo regular llevan algún tipo de compresión para ahorrar espacio, sino a la RAM, teniendo así que:
En una imagen de 8 bits por pixel, con dimensiones de 100 por 100 pixeles estamos ocupando 80 000 bits, que equivalen a 10KB de memoria, esto no es mucho… aún.
Una imagen con las mismas dimensiones pero en color de 24 bits nos daría como resultado:
100 px · 100 px = 10 000px 10 000 · 24 bits = 240 000 bits = 30 000Bytes = 30 KB
Como puedes ver, el consumo en memoria se ha triplicado, y si le agregáramos ocho bits para que sea una imagen de 32 bits, el consumo sería:
10 000 · 32 bits = 320 000 bits = 40 000 Bytes = 40 KB
Ahora bien, si la imagen fuera de 48 bits por pixel:
10 000 · 48 bits = 480 000 bits = 60 000 bytes = 60 KB
Si agregamos el canal alfa:
10 000 · 64 bits = 640 000 bits = 80 000 bytes = 80 KB
¿Ya comienzas a notar el aumento en el uso de memoria? Ahora pasemos a una imagen de 96 bits por pixel:
10 000 · 96 bits = 960 000 bits = 120 000 bytes = 120 KB
Agreguemos el canal alfa:
10 000 · 128 bits = 1 280 000 bits = 160 000 bytes = 160 KB
Comparando con una imagen de 24 bits que ocupa 30KB en memoria tenemos que una imagen de 96 bits ocupa cuatro veces más memoria; esto, en imágenes de dimensiones reducidas no es tan malo, los problemas comienzan cuando editamos imágenes con dimensiones estándar, como por ejemplo, 2550 x 3300 pixeles, o sea, una hoja tamaño carta a 300 puntos por pulgada:
2550 * 3300 = 8 415 000 pixeles
- 24 bits:
8 415 000 · 24 = 201 960 000 bits = 25 245 000 bytes = 25.2 MB
- 32 bits:
8 415 000 · 32 = 269 280 000 bits = 33 660 000 bytes = 33.6 MB
- 48 bits:
8 415 000 · 48 = 403 920 000 bits = 50 490 000 bytes = 50.49 MB
- 64 bits:
8 415 000 · 64 = 538 560 000 bits = 67 320 000 bytes = 67.32 MB
- 96 bits:
8 415 000 · 96 = 807 840 000 bits = 100 980 000 bytes = 100.98 MB
- 128 bits:
8 415 000 · 128 = 1 077 120 000 bits = 134 640 000 bytes = 134.64 MB
Y eso es en imágenes simples, ahora imagina cuánta memoria ocupa una imagen de las mismas dimensiones en un programa de edición a la que se le añaden capas y más capas; por lo regular, una imagen en edición puede tener como mínimo 20 capas y cada capa ocupa la misma cantidad de memoria que una imagen completa por lo que el consumo de memoria se puede disparar hasta niveles muy altos; entonces, multipliquemos:
- 24 bits:
25.2 MB · 20 = 504 MB
- 32 bits:
33.6 MB · 20 = 672 MB
- 48 bits:
50.49 MB · 20 = 1009.8 MB
- 64 bits:
67.32 MB · 20 = 1.34 GB
- 96 bits:
100.98 MB · 20 = 2 GB
- 128 bits:
134.64MB · 20 = 2.69 GB
Personalmente, he trabajado con dibujos que han alcanzado las 100 capas, en una imagen de 3300 x 5100 pixeles y 64 bits por pixel, por lo que la cantidad de memoria que he llegado a usar ha sido de hasta 13.4 GB en RAM, claro que esa cantidad puede aumentar y disminuir conforme se van uniendo o eliminando capas, aún así, es mucha memoria la que se usa, por lo que recomiendo ser muy cuidadosos cuando se trabaja con profundidades de 48 o más bits por pixel (16 bits por canal).
Recomendaciones para mejorar esta situación
Una buena práctica puede ser unir capas que están relacionadas entre sí y que ya no vayan a ser modificadas, de ese modo se puede ahorrar memoria, sin embargo, no siempre es posible, ya que cada dibujo es diferente y no siempre funciona lo que funcionó con otro, lo que nos lleva a la siguiente recomendación.
Aumentar la cantidad de RAM es la mejor manera de evitar que el sistema se ponga pesado cuando se trabaja con profundidades de 48 o más bits por pixel y con altas resoluciones; actualmente, 16 GB de RAM suele ser lo mínimo recomendado para trabajar con imágenes de 24 o 32 bits, pero eso cambia totalmente cuando se trabaja con profundidades mayores, por lo que un equipo con al menos 32 GB es lo recomendable, pero si se puede aumentar hasta 64 GB es algo que ayudará a no ralentizar el equipo y trabajar con mayor fluidez.
Para finalizar
Siento haberme extendido demasiado con tanto número, pero no encontré otra manera de explicar este tema, sobre todo, porque lleva mucha información técnica que quizás no te interese saber, así que aquí te va una breve síntesis de lo que dije líneas arriba:
- Color de 8 bits por pixel o color indexado, es igual a 256 colores máximos por imagen y es el utilizado en los GIF animados.
- Color de 24 o 32 bits por pixel, también es llamado de 8 bits por canal y es la profundidad recomendada para distribuir por Internet y es también la que acepta la mayoría de los monitores en el mercado actual.
- Color de 48 y 64 bits por pixel, también es llamado color de 16 bits por canal y es lo que se recomienda para trabajar en los programas de edición de imágenes y de dibujo, pero no todos los monitores están preparados para mostrar la enorme cantidad de colores que soporta, salvo los de nivel profesional.
- Color de 96 y 128 bits por pixel, también es llamado de 32 bits por canal y la cantidad de colores que es capaz de reproducir es astronómica, actualmente ningún monitor del mercado es capaz de mostrar tantos colores, salvo los antiguos CRT que están en desuso, pero aún así, es utilizado en la industria cinematográfica, que necesita altas profundidades de color.
Hasta aquí el tema de la profundidad de bits en las imágenes, espero haberme dado a entender para facilitar su comprensión de cómo se maneja la cantidad de colores en las imágenes digitales. Sin más que agregar, me despido hasta una próxima entrada.