Como alguien que vive de la informatica, a veces me resulta inevitable ponerme a filosofar sobre la substancia de lo digital. Muchas de mis posesiones, lo que me da mi salario, muchos recuerdos… tantas cosas que solo existen en una computadora, son cosas que ni siquiera tienen substancia. Son solo un cambio de estado en algun medio magnetico… al final todo es una serie de 1 y 0.
Y ahora bien, si es facil olvidar la naturaleza binaria de lo digital, al menos mi reciente aficion a la fotografia se ha encargado de recordarmelo. Y es que todo en la fotografia es luz, y la luz es color. Y los colores son un verdadero dolor de cabeza en el mundo digital. Y entender como una computadora trabaja con colores tienes que saber de bits y hacer un poco de numeralia.
El ojo humano capta una gama reducida de colores (del rojo al violeta, o para ser mas exactos, de los 380 a los 740 nanometros de longitud de onda). Sin embargo, la variacion de colores y tonos entre esos dos colores es infinita al no existir en la naturaleza valores discretos. Sin embargo para poder representarlos en la computadora necesitamos escoger algunos de esos colores, lo que llamamos “espacios de color” (tema que explica muy bien Carlos Madrigal en su mas reciente podcast ) y posteriormente escoger una forma numerica de representar esos colores.
Como recordaremos todos de la primaria, podemos formar cualquier color en base a la mezcla de los 3 colores primarios, rojo, verde y azul. Eso parece ser practico para la computadora. Asi que a alguien se le ocurrio representar todos los colores en terminos de esos 3. Luego, para cada color primario asignamos una intensidad con un numero, y ahora, para representar cualquier color solo necesitamos esos 3 numeritos. Esos 3 numeritos son el mentado RGB. Asi, una imagen completamente roja tendra una cantidad X de rojo, 0 de verde y 0 de azul (quedando como X,0,0). Una azul como 0,0,X, una blanca como X,X,X (la mezcla mas intensa de los tres colores) y una negra como 0,0,0 (ausencia de todos los colores).
Por que puse X y no un numero en particular? Bueno, aqui es donde entran los bits en juego. Pensemos que queremos representar colores en la computadora de la manera mas simple posible. Esto lo hacemos poniendo un bit para rojo, uno para verde, o uno para azul. Con esto podemos indicar perfectamente ausencia o presencia de cada color, es decir, si escribimos 0,0,1 estamos diciendo que en nuestra imagen tenemos azul y no los otros colores. Con esta aproximacion tenemos 2 valores posibles para cada color, lo que nos da 8 combinaciones posibles (23). Eso significa que en nuestro mundo de 1 bit por color solo existen 8 colores… lo cual no es muy realista que digamos.
Asi que le subimos un bit a cada color. Ahora tenemos (e binario) el RGB representado como 11,11,11. Con 4 valores para cada color las combinaciones pueden ser 43 = 64. En un mundo de 2 bits podemos representar 64 colores.
Cuantos colores podemos representar? bueno, si usamos 3 bits para cada color (9 bits en total) podriamos representar 29 = 512 colores. Si usamos 5 bits por color (15 en total) tendriamos 215 = 32768. Ya esta mas decente pero aun asi no son suficientes colores como para que una imagen se vea real.
Que pasa si usamos 8 bits por color? Pues tendriamos 224 = 16,777,216 Colores (16 millones). Bueno. De esa cantidad ya es suficiente como para poder decir que es una representacion suficiente del color en la computadora como para parecer “Real”. De hecho los 8 bits por color son hoy en dia el standar para representar el color. Con 8 bits podemos tener hasta 256 valores por cada color (28 = 256).
Aqui unas imagenes con 1,4,8 y 24 bits de profundidad de color:




Sin embargo, para muchas cosas mas “profesionales”, fotografia incluida, 16 millones de colores no es suficiente. La gente quiere maaas color, que se vean sus imagenes aun mas reales. Entonces le siguen agregando bits a la representacion de color. Con 12 bits (36 en total) podemos representar 68,719,476,736 (casi 69 mil millones de colores). Si usamos 16 bits (48 en total) tendriamos 281,474,976,710,656 (281 billones (no gringos) de colores)…
Por que no le seguimos agregando mas informacion hasta alcanzar un numero tan grande que parezca infinito… bueno hay varias razones:
No hay muchos dispositivos tan sensibles como para captar tal diferencia en los colores.
No hay muchos dispositivos que nos puedan mostrar tal diferencia de colores.
El ojo humano pueda captar tal diferencia de colores (al parecer solo podemos captar unos 10 millones de colores diferentes).
El tamaño si importa. Veamos. Una imagen pequeña (100 X 100 px) representada con 1 bit de color, pesaria 10000 pixeles X 3 bits por cada pixel = 30000 bits = 3750 bytes (1 byte = 8 bits) = 3.66 KB (1 KB = 1024 B). Mientras que una de 8 bits pesaria 29KB. y una de 16 bits 58KB. Entre mas informacion, mas grande la imagen.
Bueno, esto de los bits para el color es lo que llamamos “Profundidad de color”. Es importante entender esto para los temas que explicare mas adelante. ¬¬
Aqui una buena explicacion de la profundidad de color. De ahi son mis imagenes.
Posteado en
Divagues