sábado, 29 de mayo de 2021

Apple ProRAW. Lo mejor de dos mundos

Los iPhone 12 Pro y iPhone 12 Pro Max con iOS 14.3 o posterior permiten hacer fotografías en un nuevo modo fotográfico llamado ProRAW. Con él se almacenan las fotografías tomadas con el móvil en formato DNG, típicamente asociado a archivos RAW. Pero DNG es un contenedor multipropósito derivado del formato TIFF, así que los DNG generados por Apple ProRAW no necesariamente son RAW. Lo son? la respuesta es no, y sí.

Vaya por delante que no soy muy fan de Apple. Me encanta el diseño de sus productos cuando están apagados (he llegado a buscar en eBay el Macintosh de la foto), pero en cuanto los enciendes: colorines, degradados, reflejos, ventanas e iconos redondeados,... el elegante minimalismo del hardware queda desplazado por un grafismo bastante infantil.

Menos aún comparto su filosofía de ecosistema cerrado incompatible con el resto del mundo, aunque se comprende leyendo la biografía de Steve Jobs: consideraba que la gente es demasiado estúpida como para dejarles elegir la forma de usar la tecnología.


Pero es justo decir que con ProRAW opino que Apple ha acertado. Y si han elegido un formato abierto como es DNG, colaborando con Adobe para que se de soporte a los metadatos específicos que el sistema requiere, merece aún más la pena prestarle atención.

En respuesta a la pregunta planteada al inicio, puede decirse que los DNG de ProRAW:

  • No son RAW: porque en ellos se ha hecho el demosaicing de la información capturada, es decir no reflejan la matriz de filtros de color del sensor sino que son mapas de bits con las tres componentes RGB definidas en cada píxel, no pudiendo beneficiarse de algoritmos de interpolación alternativos. Pueden además ser el resultado de la fusión de varias tomas y como veremos llevan aplicada reducción de ruido. Por todo ello están lejos de ser datos crudos.
  • Sí son RAW: en los demás sentidos. Conservan la linealidad del sensor y preservan toda (o casi toda, más sobre esto luego), la información capturada por éste. Así que a efectos de los principales procesos del revelado RAW como el ajuste de exposición, el balance de blancos, la gestión de color o el mapeo de tonos (mal llamado "recuperación" de luces y sombras), tienen la elasticidad propia de un RAW auténtico.

Vamos a analizar un poco de cerca algunos de estos archivos DNG ProRAW, para terminar con una reflexión de por qué el camino emprendido por Apple me parece la forma de llevar la fotografía móvil al siguiente nivel, que espero sigan otros fabricantes de teléfonos móviles.

~~~

Para estudiar el formato he usado algunos de los DNG ProRAW que amablemente ha subido Alessandro Michelazzi en este enlace. Tomando proraw15.dng, que corresponde a esta imagen (hacer clic para verla en alta resolución):


Entre los datos EXIF disponibles en el fichero, usando exiftool seleccionamos como más reveladores los siguientes metadatos:


Los coloreados nos dan pistas importantes, algunas de las cuales podremos comprobar al analizar más en detalle los ficheros:

  • Con 'Bits Per Sample' = "12 12 12" se indica que los ProRAW son de 12 bits, lo que supondría una gama tonal de hasta 4.096 posibles niveles. Luego comprobaremos que esto es así aunque con matices.
  • Leyendo en la Comunidad de Adobe, y también a juzgar por su tamaño, 'Compression' = "JPEG" significa que la compresión de los ProRAW es sin pérdida. En caso de ser con pérdida el metadato indicaría "Lossy JPEG".
  • Muy importante es la denominación 'Photometric Interpretation' = "Linear Raw", que confirma que los datos son lineales permitiendo todas las operaciones propias de un RAW (exposición, balance de blancos,...). Más información en 'Linear DNG'.
  • Tanto el metadato 'Samples per pixel' = "3" como la existencia de tres valores de negro y saturación informados, dejan claro que estamos trabajando con datos ya interpolados, disponiendo de las tres componentes RGB en cada píxel. Los valores de saturación (65535) indican que pese a ser archivos de 12 bits a efectos de cantidad de información, se codifican como enteros de 16 bits en el rango 0..65535.
  • Es interesante ver que Apple suministra de forma transparente las matrices de color a aplicar para interpretar correctamente los colores de los ProRAW, algo que no hacen los principales fabricantes en sus formatos RAW propietarios (CR2, NEF, ARW,...). Bien por Apple!
  • El metadato 'Baseline Exposure' = "1.998963356" consiste en una corrección de exposición clandestina de +2EV que se aplicará al abrir el DNG en un revelador RAW (aún con el ajuste en 0EV). En estos ProRAW, al ser a menudo archivos HDR muy subexpuestos para salvar las altas luces, parece habitual encontrar valores de corrección de incluso +4EV. De no aplicarlos la foto se vería inicialmente muy oscura en el revelado RAW, que es lo que ocurre si ponemos a 0 el metadato (notar que los ajustes del revelador no se han tocado):

  • Finalmente las malas noticias: parece claro por el dato 'Noise Reduction Applied' = "0.9499999881" que se aplica una reducción de ruido en los ProRAW, lo que explicaría cierta pérdida de detalle y posibles efectos "acuarela" que veremos luego. Que el valor sea el mismo en todos los archivos hace pensar que es ajustable por el usuario, no dependiente por ejemplo del ISO usado.

~~~

Primero vamos a analizar el histograma "RAW" (lo entrecomillo porque obviamente es RGB) de la escena escogida por pasos de exposición:


A priori cuadra con una distribución lineal de 12 bits pues hay información en los 12 pasos más altos. Se ha afirmado que estos DNG ProRAW alcanzan 14 pasos de rango dinámico, pero al margen de consideraciones sobre ruido esto es numéricamente imposible ya que con 12 bits lineales no se pueden codificar más de 12 pasos de contraste. Veremos luego que esta codificación tiene cierta mayor densidad de niveles en las sombras, lo que ayudaría a acercarse al tope máximo de 12 pasos, pero lejos de 14 en cualquier caso.

Si ampliamos el anterior histograma llaman la atención unos picos en los tres canales en la zona de altas luces. Hacemos zoom, esta vez con el histograma en formato lineal:


Vemos tres picos, en valores menores para los canales R y B que para el G. Esta distribución de saturaciones aparece en todos los ProRAW donde existen altas luces quemadas (sol, luces artificiales, reflejos,...), siendo altamente anormal en RAWs genuinos, donde los tres canales suelen saturar en los mismos valores y coincidiendo con el fondo de la escala o valores próximo a él. Es una conjetura, pero mi apuesta es que esto es lo que está ocurriendo:

  • El sensor se satura en la captura en determinadas altas luces. Esta saturación ocurre como poco en el canal G, aunque posiblemente también en R y B, y tiene lugar en los mismos valores para los tres canales como es habitual.
  • Antes de hacer el demosaicing, el software aplica previamente un balance de blancos destructivo (aumento de exposición de los canales R y B). El equilibrio de blancos se aplica porque así el demosaicing es más óptimo, y que sea destructivo lo hace más sencillo y rápido de implementar.
  • Este balance de blancos puede suponer pérdida de información en los canales R y B, que a lo mejor ni estaban saturados en origen pero sí en el DNG final. Por eso maticé anteriormente que el ProRAW preserva casi toda la información de la captura, cuando seguramente está perdiendo lo típico en un balance de blancos destructivo (hasta ~1-1,5 pasos de altas luces en los canales R y B).
  • Se realiza la interpolación o demosaicing, donde las zonas de altas luces quemadas serán blanco puro (canales R=G=B alineados).
  • Se deshace el balance de blancos aplicado, con lo que se reduce la exposición de los canales R y B retrasando los picos de saturación a valores menores al máximo, resultando esta atípica distribución. El único motivo que se me ocurre para realizar este extraño paso, es que de no hacerlo los reveladores RAW comerciales pudieran tener problemas para llegar al nivel de corrección de blancos que requerirían unos datos ya balanceados, aunque es una hipótesis cogida con pinzas.
  • En el revelado final que haga el usuario, se aplicará de nuevo un balance de blancos que restituirá el alineamiento de canales dando un blanco neutro en las altas luces, como puede verse al comparar un revelado hecho con DCRAW sin balance de blancos ni conversión (izquierda) con el balance de blancos de cámara (derecha):

Ahora vamos a abordar la profundidad de color de estos archivos DNG, que según los EXIF es de 12 bits. Ya dijimos que los valores se codifican finalmente con 16 bits, así que nos preguntamos cómo se distribuye una supuesta profundidad de 12 bits en el histograma.

Si analizamos los valores numéricos de los DNG contando en cada uno de ellos el número de niveles distintos encontrados para cada canal y convirtiéndolos a bits, sí parece cumplirse que el tope sean 12 bits:


Aunque hay que apuntar dos cosas que hacen pensar que el procesado interno del iPhone para construir los DNG no produce una distribución pura y uniforme de 12 bits:

  • Por un lado en algunos DNG se observan más de los 4.096 valores máximos distintos esperables (4.118, 4.106, 4.100, 4.106 y 4.142 en el canal G en los archivos 6, 7, 8, 13 y 16).
  • Además los niveles ocupados en el histograma no aparecen perfectamente equiespaciados, sino con una progresiva mayor densidad en sombras que en luces. Esto hace pensar en alguna optimización de la codificación (tipo gamma inversa) que ayude a estirar al máximo el rango dinámico efectivo que se puede codificar en las sombras sin sufrir posterización.

Sobre las diferencias por canal, el "retroceso" que vimos en el histograma para los canales R y B impone riquezas tonales en estos claramente por debajo de las del canal G, el único que alcanza a "llenar" los 12 bits en varios de los archivos como se ve muy bien en la gráfica.

~~~

Es interesante tratar de ver si la reducción de ruido que según los EXIF se aplica al construir el DNG influye en la nitidez de las imágenes. A la izquierda un revelado 100% neutro con DCRAW, a la derecha aplicación de máscara de enfoque en Photoshop. Aunque es difícil estar seguros de su procedencia, noto un efecto "acuarela" de imagen lavada bastante acusado:


Según indican aquí, la reducción de ruido puede al menos en parte eliminarse desactivando el 'Smart Processing', lo que debería preservar más detalle y nitidez en los ProRAW a costa de tener más ruido de captura.

Otro punto que merece atención es ver qué tal hace ProRAW la fusión de capturas HDR en escenas de alto contraste, una de las mayores ventajas de este formato para superar las limitaciones de los sensores pequeños que llevan los móviles. En general funciona muy bien haciéndose imposible detectar solapes o saber cuántas capturas forman la fusión, como en esta escena nocturna con altos contrastes fruto de la iluminación artificial:


Sin embargo en imágenes con zonas de transición bruscas, como un cielo contra una zona sombría, se observan fácilmente halos o zonas de solape de cierta anchura:

~~~

Para terminar quería comentar por qué creo que el camino abierto por ProRAW es excelente para llevar a un nuevo nivel las capacidades fotográficas de los dispositivos móviles. Usando un móvil en JPEG se aprovecha al máximo su software computacional, logrando prestaciones que en cámaras mayores requieren a menudo hacer varias capturas y una buena dosis de trabajo en el ordenador, pero no se tiene la flexibilidad de procesado de un archivo RAW. Entonces podemos configurar el móvil para disparar en RAW, pero hacerlo sin más en mi opinión es un error porque perderemos la inmediatez y resultados propios de un móvil, y a cambio solo tendremos una cámara mediocre comparada con las de sistemas dedicados.

Sin embargo con formatos como el ProRAW, y quiero hacer hincapié en el concepto general aplicable a cualquier fabricante sin restringirnos a la implementación de Apple, podemos lograr tener lo mejor de los dos mundos:

  • La potencia de la fotografía computacional integrada de forma nativa en los móviles (HDR, modos noche, panorámicas, bokeh software,...) que permite igualar o acercar las prestaciones de los sensores pequeños de los smartphones a las de sensores mayores.
  • La flexibilidad de procesado de unos archivos que en los principales aspectos del revelado RAW (balance de blancos, ajustes de exposición con "recuperación" de luces y sombras, gestión de color,...) resultan tan elásticos como archivos RAW genuinos.


3 comentarios:

  1. Fantástico el artículo. Muchas gracias, Guillermo.

    ResponderEliminar
  2. Un muy buen artículo. Llevo años pensando en comprar una compacta pequeña para llevar en el día a día (tengo una 6d), pero tras analizar todas las cámaras pequeñas existentes en el mercado, abrí un hilo en su día en canonistas en el que aportaste información muy valiosa. Mi idea final es cambiar mi vetusto móvil por uno más actual. Iba a hacerlo en este 2021 pero me temo que por distintas razones he de posponerlo a 2021. El iphone 13 pro max es una de mis opciones ....

    ResponderEliminar
  3. Según he podido saber recientemente parece ser que Google en su gcam es decir en la aplicación de cámara nativa que tiene para los telefonos Google pixel,Su modo RAW también incorpora fotografia computacional como hace el Apple Pro raw.

    Google ha publicitado muy poco esto pero sería estupendo y te lo dejo como idea que examinaras ese modo RAW que incorporan los teléfonos Google pixel sobre todo los últimos modelos los Google pixel 6 Pro para que puedas compararlo con el Apple Pro RAW. Creo que es información muy valiosa la que puedes obtener de esa comparación Estado que tienes además los conocimientos necesarios para ello que yo sepa nadie más en todo Internet lo habria hecho antes que tú. Felicidades por tu trabajo.

    A bote pronto los Google pixel tienen una ventaja en este sentido sobre los iPhone y es que pueden disparar a la vez en jpg y en RAW es decir podemos obtener en cada disparo el jpg procesado con fotografia computacional y el RAW por si queremos editarlo. Apple únicamente nos da el jpg o el RAW es decir no podemos disponer de los dos simultáneamente.

    Tengo una enorme curiosidad por saber cuántos bits tiene ese raw de la gcam y cuántos pasos de rango dinámico permite teniendo en cuenta que el pixel 6 pro tiene sensores completamente nuevos y muy capaces

    ResponderEliminar

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.