¿Por qué los archivos RAW solo muestran 8 bits de los 14 bits grabados?

Seguimiento de una pregunta de latitud de archivo sin formato anterior relacionada . ¿Por qué los archivos RAW graban en 14 bits pero solo muestran 8 bits de datos? Los datos restantes se ocultan a la derecha o a la izquierda del histograma. Por lo tanto, algunos detalles se pierden sin manipulación manual. ¿Por qué no mostrar todos los 14 bits para empezar?

Por un lado, la mayoría de las pantallas no pueden mostrar color de 14 bpp.
Esto no tiene nada que ver con los archivos RAW, sino con cualquier software que esté utilizando que muestre el histograma. Los archivos no te muestran nada. El software de aplicación hace eso.
Según la pregunta de referencia, asumo que está hablando del histograma en la cámara. Una aplicación te muestra el histograma de la imagen convertida.
Todo se reduce a compromisos y lo que es práctico. No puede mostrar 14 bits de datos si el dispositivo de salida es un dispositivo de salida de 8 bits (LCD, la mayoría de los monitores, la mayoría de las impresoras). La mayoría del software está diseñado para tomar los datos de 10 a 14 bits por canal y asignarlos a un espacio de 8 bits por canal. Si desea que se muestren todos los datos de > 8 bits, necesitaría una pantalla capaz de hacerlo, ya que ya existe un software que manejará > 8 bits por canal.
@WingTangWong - Eso no es todo. Un histograma de luminancia solo necesita una visualización de 1 bit. El problema es que todo el espacio de 14 bits no está representado en el eje horizontal. Idealmente, me gustaría ver todo el espacio con marcas de recorte que indiquen qué parte del rango dinámico se asigna a un JPEG según la configuración actual.
@Itai Teniendo en cuenta que el mapeo toma el rango de 14 bits y lo comprime/cambia cuando ocurre la conversión a jpeg, los datos que se pierden no se limitan necesariamente a los extremos izquierdo/derecho, sino que también pueden representarse por secciones en el medio del rango que se exprime de la conversión. El histograma a partir de eso debería tener en cuenta las pérdidas de conversión que cubrirían el rango del histograma, ¿no?
@WingTangWong: sí, hay pérdidas en todo el rango pero, cuando considera cómo se agrupan los valores en un histograma, estarían cerca del lugar correcto y serían representativos de la distribución de valores. Eso no causa mucho problema, lo que sí es no ver los extremos del rango ya que uno no puede saber cuándo las cosas han sido recortadas por la exposición.
Mmmm interesante. Parece que un histograma ampliable y desplazable abordaría esto.

Respuestas (5)

El problema no tiene nada que ver con la profundidad de bits sino con la cantidad de rango dinámico que se muestra.

Los archivos RAW registran una cierta cantidad de bits por sitio de fotos. Esto suele ser de 12 o 14 bits. Las imágenes JPEG ofrecen una profundidad de bits fija de 8 bits por componente de color. Lo que hacen casi todas las cámaras es crear una vista previa JPEG para el archivo RAW y calcular el histograma en función de esa vista previa. Esto muestra el histograma correcto para imágenes JPEG. Si disparas RAW+JPEG, también es correcto para el JPEG. Para aquellos que disparan exclusivamente en RAW, obviamente el histograma termina siendo incorrecto.

La discrepancia tiene que ver con cómo se representa la vista previa de JPEG, que se ve afectada por los parámetros de la imagen. Cuanto menor sea el contraste, más rango dinámico se conserva en los 8 bits de espacio. En teoría, se podría mostrar todo el rango en un histograma, pero la mayoría de las cámaras no admiten un contraste tan bajo, ya que comprimir una imagen de alta profundidad de bits en un espacio de 8 bits sin recorte haría que se viera extremadamente aburrida.

No hay pantalla de cámara que pueda mostrar ni siquiera 12 bits, ya que la resolución horizontal es demasiado baja. El histograma siempre se compone de cubos, cada uno de los cuales representa más de un valor de luminancia o color, en el caso de los histogramas RGB. Si uno simplemente eliminara los bits inferiores de los datos RAW, podríamos tener un histograma de 8 bits perfectamente representativo para un archivo RAW, pero solo una cámara AFAIK hace esto. El problema es que la mayoría de las cámaras pierden valores en los extremos de los valores RAW y asignan el resto a un espacio de 8 bits, que es lo que sucede cuando se produce una imagen JPEG a partir de datos RAW.

¿Por qué comprimir una imagen de alta profundidad de bits en un espacio de 8 bits la vuelve aburrida? Todavía tendría negros muy oscuros y blancos muy brillantes, ¿no?
Si bien se pueden usar los extremos y la imagen tendría un alto contraste general si se usa todo el rango dinámico, el microcontraste sería extremadamente bajo, por lo que las cosas perderían textura y se verían como si se vieran a través de una niebla espesa.

Bueno, puede abrir el archivo sin procesar en un editor hexadecimal y leer los valores de 14 bits como 0x0000h-0x3FFFh si desea que "sin procesar le muestre los datos de 14 bits".

Alternativamente, puede mapear todo el rango linealmente para verlo en su pantalla de 8 bits, de modo que no haya cortes en ninguno de los extremos:

lineal

Ahora, eso parece muy aburrido. ¿Qué tal si aplicamos la curva de gamma 2.2 para hacer uso de cómo el monitor y los ojos funcionan juntos?

gama 2.2

Un poco mejor, pero aún no agradable. Hagamos un "revelado de fotos" básico, como el recorte automático y la conversión del espacio de color (sRGB):

verdadero desarrollo

Nit menor: los valores hexadecimales de 14 bits van de 0 a 3FFF, no de 0 a 4000.

Prácticamente todas las pantallas de computadoras, tabletas, teléfonos inteligentes, etc. están limitadas a color de 24 bits (8 bits por cada uno de los canales rojo, verde y azul). Cuando una aplicación muestra un archivo de imagen en una pantalla de este tipo, tiene que:

  • Elija una zona de 8 bits de los datos originales de 12 a 14 bits para mostrar, con los tonos más brillantes apagados y los tonos más oscuros en negro puro

    o

  • Comprima todo el rango dinámico del archivo original en el espacio de 8 bits, lo que hace que la imagen se vea muy aburrida y plana

    o

  • Use una combinación de los dos métodos anteriores

Dado que su pregunta original trata sobre histogramas, supondremos que también se refiere a ellos aquí. El histograma en la parte posterior de la cámara se basa en la imagen representada en la pantalla, no en el archivo RAW original. Supongo que sería posible que la cámara mostrara un histograma basado en el rango dinámico completo de un archivo de imagen, pero reduciría la velocidad general de la cámara, ya que la cámara ahora tendría que producir dos imágenes de vista previa diferentes para cada archivo: uno para mostrar y otro para basar el histograma. También requeriría una pantalla LCD de mayor resolución en la parte posterior de la cámara. Probablemente haya docenas, si no cientos o miles de compradores potenciales más preocupados por los fotogramas por segundo (fps) y la profundidad del búfer en comparación con la cantidad de compradores potenciales más preocupados por el histograma en la cámara que muestra todo el rango dinámico de un archivo de imagen RAW. ¿Qué camino crees que van a tomar los diseñadores con sus productos?

La pantalla LCD en la parte posterior de su cámara está diseñada para que cada imagen que tome se vea lo mejor posible. En otras palabras, ¡miente como un político! Si está viendo una imagen de 25 MP en una pantalla de 1 MP, significa que cada píxel de la pantalla muestra un área combinada de 5X5 píxeles de la imagen original. ¡Su enfoque podría verse borroso tanto como el ancho de cuatro píxeles y no sería capaz de notar la diferencia de una imagen perfectamente nítida! Del mismo modo, el color y el contraste se representan de la manera que el fabricante cree que es más agradable para la mayoría de los compradores potenciales.Si la imagen de vista previa en la pantalla LCD redujo el contraste lo suficiente como para mostrar todo el rango dinámico del archivo RAW, nadie que compre una cámara se basa en cómo se ve en la parte posterior de la pantalla la imagen que acaban de tomar con la mala luz de la tienda. alguna vez saldría de la tienda con uno.

Principalmente porque tal vista previa no tendría sentido. Cuando va a hacer la salida final, prácticamente siempre está dando salida en color de 8 bits y la pantalla en sí es de 8 bits. Por lo general, es más útil tener una pantalla que se aproxime al resultado final que una que capture la cantidad total de información almacenada. Supongo que no puede saber de inmediato si los reflejos serán recuperables o no, pero obtiene una idea mucho mejor de cómo se verá el resultado final y no requiere una pantalla mucho más costosa para mostrarlo.

Mucha información/respuestas técnicamente correctas aquí, pero creo que no estás entendiendo los histogramas. Dos problemas:

  1. Si se refiere al hecho de que las pantallas a veces muestran el número 256, esto es solo una conveniencia. 256 es la exposición máxima justo antes de la explosión para la captura teórica de 8 bits. La clave es que las imágenes con más bits por canal solo tendrán detalles entre los números enteros hasta 0. Piense en ello como una escala de 0 a 255.

  2. Si se refiere a pantallas con las 5 áreas normales, estas muestran paradas de exposición. Esto hace que el registro del histograma se escale. Es decir leyendo desde la derecha. Una línea hacia atrás será una parada menos... así que 128 en nuestra escala nominal de 256, la siguiente línea será 64, etc. la última es 8. Entonces, si realmente fuera una imagen de 8 bits, solo tiene 8 niveles disponibles para la cosa 5 se detiene por debajo de la exposición total. Esto explica por qué las imágenes de bits bajos se han limitado a las posibilidades de corrección de la exposición.

Así que en resumen. 256 a veces solo se usa como una escala nominal, aunque puede haber más bits. Si se refiere a las 5 paradas que se muestran en el histograma: las imágenes de bits más altos tendrán más detalles en estos niveles de luz, pero para el 99 % de las exposiciones tendrá (cerca de) cero lecturas en el histograma para estas.