11 de enero de 2014

Técnica fotográfica. El bit, el byte y la codificación

-----------------------------------------------------------------------------------------------------------------------------------------
Fecha última modificación: 11/01/2014
Fecha creación: 11/01/2014
Versión: 1.0

NIVEL:      
Iniciación - Bajo - Medio - Alto – Avanzado

DOCUMENTOS RELACIONADOS


¿Qué es un bit?

Un bit es la unidad mínima de información usada en un sistema de codificación digital, que puede tomar uno entre dos estados distintos, a saber, 0 ó 1.


Resulta más fácil entender su significado si establecemos, por ejemplo, una analogía entre un bit y una bombilla, ya que esta última también puede presentar dos estados, es decir, encendida o apagada.

Si usásemos bombillas individuales muy pequeñas y de misma intensidad luminosa para representar las tonalidades de una imagen como la de la figura 1 se obtendría el resultado mostrado en la figura 2, bajo el criterio de encender o apagar la bombilla si la luminosidad es mayor o menor que un valor medio. Lo mismo ocurriría si asignamos un único bit de codificación para cada píxel de la imagen, con sus dos valores (0 ó 1) sólo podríamos indicar si el punto es claro (blanco) u oscuro (negro).
Con 2 bits (ó 2 bombillas) -considerando además válido el orden de colocación, es decir, el código es distinto si el bit de la derecha está apagado y la de la izquierda encendido que al revés- aumentan las posibilidades de codificación y dispondremos de 4 combinaciones a las que podremos asignar 4 colores, por ejemplo los reflejados en la tabla siguiente:

Código
   Valor bit 2
Valor bit 1
Bombilla 2 (izquierda)
Bombilla 1 (derecha)
Color
elegido






00
0
0
Apagada
Apagada
Negro
01
0
1
Apagada
Encendida
Gris claro
10
1
0
Encendida
Apagada
Gris oscuro
11
1
1
Encendida
Encendida
Blanco

Con 3 bits las posibilidades de combinación se extienden a 8 valores, lo que nos permite obtener una imagen como la de la figura 3 usando, por ejemplo, los colores: rojo, verde, azul, cyan, magenta, amarillo, blanco y negro. En este caso podríamos establecer la codificación siguiente:

Código
   Color elegido


000
Negro
001
Verde
010
Azul
011
Cyan
100
Rojo
101
Magenta
110
Amarillo
111
Blanco

Es decir, con el nuevo lenguaje que hemos creado para el ejemplo el magenta se escribiría como 101. Pero..., ¡porqué cambiar de lenguaje! Simplemente, porque el lenguaje digital es el más apropiado para su almacenamiento -guardar el estado de los bits en los dispositivos de actuales como lo son: disco duro, CD, DVD, memoria..., es muy rápido y sencillo- así como para su procesado con la tecnología existente en la actualidad.

Si desarrollamos todas las combinaciones posibles usando 8 bits comprobaremos que la gama de colores que podríamos distinguir se extiende a 256, que es 28, y con 16 bits a 65.536 (216).

¿Qué es un byte?

Por motivos tecnológicos, los bits se suelen agrupar en múltiplos de 8  y a dicha agrupación se le denomina byte,  por lo que es frecuente referirse a 8, 16, 24, 32... bits ó a su equivalente 1, 2, 3, 4... bytes respectivamente. Por ello, aunque los sensores de las cámaras actuales utilizan 10, 12 ó 14 bits de precisión para establecer el color de cada píxel estos se convierten a múltiplos de bytes, es decir, a 8 ó 16 bits.

Evidentemente, si capturamos en 12 bits y codificamos en 8 perderemos información. Pero, al contrario, codificar 12 en 16 bits no conlleva la ampliación de la información sino que se asignan los bits sobrantes a valor cero, lo que implica que ocupa lo mismo una imagen capturada con 10 o con 16 bits.

El sensor no ve en color

El sensor no capta información de color sino solamente niveles de luminosidad que los codifica con la precisión de bits disponible, desde 10 bits para las cámaras compactas hasta 16 bits en los respaldos digitales. La luz blanca alcanza el sensor atravesando unos filtros de colores que sólo dejan pasar la componente de su color (figura 4).

La información de color, para los sensores que utilizan filtros distribuidos según la denominada matriz de Bayer (figura 4), se consigue anteponiendo en cada píxel un filtro rojo, uno verde o uno azul. Como, debido a ese filtrado, sólo medimos la luminosidad de una componente, la asignación de valores para las otras dos se calculará posteriormente con algoritmos matemáticos que incluyen información de los puntos colindantes.

Si la información capturada directamente  por el sensor se archiva como tal, obtenemos un archivo tipo RAW que varia según los fabricantes y se identifica por tener una extensión distinta DNG, ORF en Olympus, etc. Estos formatos son de captura y deben ser revelados y convertidos para su uso en formatos de edición como: JPG, TIFF, PSD...

Resumiendo, en la captura y codificación de una imagen hay que observar lo siguiente:

1.
El sensor sólo capta en cada píxel niveles de luminosidad y estos se corresponderán a las tonalidades roja, verde o azul, según sea el filtro aplicado. La posición relativa de un filtro en la mencionada matriz de distribución de Bayer es la que identifica el color aplicado. Los niveles, y no el color, se codifican en 8 ó 16 bits construyendo una información denominada RAW (sin procesar o en bruto) que se almacenan ordenadamente para conocer cual es el filtro aplicado en cada píxel
2.
Muchas cámaras pueden almacenar la información capturada como tal (formato de archivo RAW) o convertirla a otro formato como el JPG
3.
Cuando se revela un archivo RAW se calcula para cada píxel las luminosidades de las otras dos componentes no capturadas directamente creando otro formato de archivo distinto: JPG, TIFF, PSD... Dicha operación se puede efectuar en la misma cámara o posteriormente con un programa específico. El nuevo formato, aunque contiene más información que el original, puede pesar incluso menos si en él se aplican algoritmos de compresión
4.
No debemos confundirnos al referirnos a una imagen codificada en un byte (8 bits) pensando que sólo usa 256 tonos ya que, tras el revelado, se crean 8 bits para cada una de sus tres componentes: roja, verde y azul. Como en el revelado se calculan para cada píxel los valores de las componentes inexistentes, el tamaño del archivo en un formato no comprimido se multiplicará como mínimo por 3, por lo que el color final quedará codificado realmente en 24 bits (224=16.777.216 tonalidades posibles) y en más de 200 billones si la captura de niveles es a 16 bits.
5.
Si la captura se ha realizado con 12 bits, en el archivo RAW sólo podremos distinguir 4.096 (212) niveles de luminosidad, aunque codifiquemos a 16 bits
----------------------------------------------------------------------------------------------------------------------------------------
© Jorge Lidiano.
Todos los derechos reservados sobre los textos e imágenes del presente documento, sólo podrán ser utilizados con la autorización expresa de su autor
-----------------------------------------------------------------------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario

Te agradezco de antemano tus comentarios. Si requieren una respuesta por mi parte y la conozco, la publicaré lo antes que pueda en esta misma entrada.