Ya vimos en el artículo anterior cómo la información de color de una imagen digital se organiza en canales, y que lo usual en los modos de color más comunes es que cada píxel sea descrito con un byte de información por cada primario o canal.
La profundidad de bits es, en estos casos, igual al número de canales multiplicado por 8. Por ejemplo, los canales RGB tienen una profundidad de 24 bits, o lo que es lo mismo, 3 bytes. Si elevamos 2 una potencia igual a la profundidad de bits, obtendremos el número de colores reproducibles. Así, en RGB, 2 elevado a 24 son 16,77 millones, mientras que una escala de grises, monocanal, se queda en 2 elevado a 8, que son 256.
Gama tonal y continuidad
Disponer de varios millones de colores reproducibles y de 256 niveles de luminosidad es más que suficiente para que percibamos los degradados y variaciones de color como algo perfectamente continuo, sin escalones.
El problema viene al retocar las imágenes, modificándolas dentro de esta gama de valores discretos mediante técnicas de procesado digital, que no son otra cosa que cálculos matemáticos. Se produce así una degradación en la continuidad de los tonos.
Las razones son de simple aritmética. Supongamos que tenemos 6 valores enteros: 1, 2, 3, 4, 5, y 6, y que realizamos tres multiplicaciones consecutivas: por 4/3, por 1/2 y por 3/2. En teoría, el resultado final es el mismo que el inicial. En la práctica, sin embargo, depende del nivel de aproximación que permita la escala.
Veamos qué sucede si cada operación tiene que redondearse a un número entero:
Redondeo de cada cálculo al número entero más próximo.
Supongamos ahora que se nos permite aproximar un decimal. Los cálculos ya serían diferentes:
Redondeo de cada cálculo al primer decimal más próximo.
La escala del segundo cálculo, al tener 10 pasos por cada uno de la anterior, reduce muchísimo las desviaciones debidas al redondeo. Valoremos ahora qué significa trabajar a 16 bits por canal: nos movemos en una escala que tiene 256 pasos por cada uno de los 256 de la escala de 8 bits, es decir, un total de 65.536.
Compresión y expansión
Parece evidente que el segundo caso resiste mucho más la posterización. Podemos comprobarlo con una simple prueba. Observemos el histograma siguiente, en una imagen de 8 bits por canal, sobre el que hacemos con la herramienta Niveles de Photoshop un movimiento con el regulador gris para oscurecer los tonos medios:
Como consecuencia, los píxeles que ocupaban los primeros 128 valores se comprimen en 64 niveles, produciéndose una superposición en varios de ellos. Mientras tanto, los que ocupaban los 128 valores claros, se distribuyen en los restantes 192, dejando algunos espacios vacíos.
El histograma resultante muestra los efectos de esta pérdida de rango por un lado, y de continuidad por el otro. Es lo que conocemos como efecto peine:
Aplicando el ajuste de niveles inverso, la imagen debería recuperar su aspecto original, pero aunque visualmente no se aprecie, el histograma empeora. Un análisis del mismo nos indica que los cambios en la mitad oscura, que sufrió compresión tonal, no son recuperables, y que los de la mitad clara sólo lo serán si la compresión se corresponde con la expansión del primer movimiento:
Sin embargo, si convertimos primero la foto a 16 bits por canal y realizamos luego las dos operaciones de ajuste, el histograma recupera su perfil inicial, porque no hubo superposición de grupos de píxeles en la primera:
De hecho, en este último histograma se aprecia el efecto peine en la zona izquierda, pero es engañoso si no se interpreta bien. Nos está informando de que hay cierta proporción de valores desocupados en ese rango, pero se refiere a la escala de 16 bits (65.536 valores).
Si convertimos la imagen a 8 bits, veremos un histograma mucho más parecido al inicial que si hubiésemos hecho las modificaciones a 8 bits:
¿Cuándo merece la pena?
La conclusión que se impone es que la profundidad de bits expandida es aconsejable en la medida en que vayamos a realizar procesos de ajuste complejos, ya que proporciona espacio para maniobrar cómodamente preservando la continuidad.
Se pueden aprovechar sus ventajas en imágenes de 8 bits, convirtiéndolas, y también cuando la captura en origen ya tiene una profundidad amplia, como puede ser la digitalización mediante escáner o los datos RAW de una cámara. El inconveniente es duplicar el peso informático del archivo, pero siempre podemos convertir a 8 bits para guardar la versión final.
Cabe aclarar, finalmente, que los datos RAW de muchas cámaras están cuantificados a los 12 bits que permite la fiabilidad de su tecnología, pero se anotan a 16 por razones obvias de estandarización y compatibilidad con el software. Los 4 bits sobrantes, que son idénticos en todas las muestras, no merman el aprovechamiento de las tarjetas de memoria ahora que en la propia cámara se aplica compresión sin pérdidas.
Pues bien, cualquier ajuste en el proceso de los datos RAW lo hacemos ya en un espacio de 16 bits. Por tanto, no tenemos 4.096 niveles por canal, sino 65.536.
Viendo los histogramas de los ejemplos, se podría pensar incluso que esta mayor continuidad no se llegaría a aprovechar, ya que los píxeles de cada uno de los 4.096 grupos deambularían juntos por la escala de 16 bits.
Pero esto solamente es así en las operaciones que hemos definido alguna vez como de mejora global: niveles, curvas, brillo, contraste, etc. En las de mejora local -enfoques, filtros- en que cada píxel se modifica en relación a los que le rodean, los valores resultantes sí que se distribuirían por toda la escala disponible.
Paulo Porta
Paulo Porta es profesor de instituto. Imparte plástica y fotografía digital y es autor del manual 'Fotografía e Imaxe Dixital'.
Los artículos de la serie "Mapa de bits" se publican, normalmente, los días 15 y 30 de cada mes.