viernes, 18 de noviembre de 2022

Apilado por 'antimediana' para replicar sujetos en movimiento con Photoshop

En el ejercicio 'Apilado por 'antimediana' para replicar sujetos en movimiento en RAW' creábamos una función detectora de outliers, la 'antimediana', con la que buscábamos quedarnos con todos los sujetos móviles en una ráfaga. Construíamos un archivo RAW de salida con todas las apariciones de un corredor en una serie de fotogramas.



Al ejecutar el algoritmo en el dominio Bayer aparecían algunos artefactos y falsos colores tras el demosacing que mejoraban con un preprocesado del mapa de fusión. Ahora trabajaremos sobre imágenes RGB ya reveladas, y además lo vamos a hacer en Photoshop. Desafortunadamente el programa de Adobe no dispone de una antimediana o filtro similar. La buena noticia es que podemos aproximarla a partir de la mediana, que sí está implementada.

La idea para estimar la antimediana me la ha dado Eric V. en el foro de Luminous Landscape: se basa en que en todas las imágenes de la ráfaga los píxeles serán muy parecidos salvo en aquel fotograma donde un sujeto en movimiento haya copado cada píxel en cuestión. Así aproximamos la suma de todos los píxeles usando la mediana y aislando la antimediana (outlier):


Para facilitar el flujo en Photoshop, el valor numérico del outlier (sujeto en movimiento) en cada píxel de la imagen lo calcularemos como la diferencia entre la media de los valores de ese píxel en todas las imágenes y su mediana ponderada por (N-1)/N. El resultado se corregirá por un factor final N.

Tanto la media como la mediana las obtendremos en Photoshop con sendos apilados y los dos factores se implementarán con curvas lineales con la pendiente adecuada. La resta se logra con fusión por diferencia. Photoshop es una calculadora científica de píxeles!

~~~

Los pasos a realizar en el proceso son los siguientes (usaremos N=11 imágenes, en las curvas deberás sustituir N por el número de fotos que hayas hecho):
  • Revelamos los archivos RAW de forma idéntica en todos los ajustes (incl. el balance de blancos) y los situamos en capas. Si pudiera haber desalineamientos es el momento de corregirlos.
  • Agrupamos las capas en un objeto inteligente: 'Capa' → 'Objetos inteligentes' → 'Convertir en objeto inteligente', y lo duplicamos.
  • La versión inferior la apilamos por mediana: 'Capa' → 'Objetos inteligentes' → 'Modo de apilamiento' → 'Mediana'. Multiplicamos el resultado por (N-1)/N como dicta la ecuación, aplicando una curva lineal de pendiente (N-1)/N. Como N=11 la curva se define de (0,0) a (255,255*(11-1)/11) = (255,232). Ya tenemos el término (N-1)/N·Med, que consiste básicamente en la escena vacía de sujetos móviles.


  • La versión superior la apilamos por media: 'Capa' → 'Objetos inteligentes' → 'Modo de apilamiento' → 'Promedio'. Ya tenemos el término Avg, que consiste en la media de todas las capturas de ahí que los sujetos aparezcan como fantasmas (más transparentes cuantas más tomas estemos fusionando).

  • Ponemos esta capa superior con la media en modo de fusión 'Diferencia' para que se le sustraiga la inferior. La antimediana ya está calculada pero la imagen está subexpuesta por un factor N que deshacemos con una nueva curva lineal de pendiente N (para valores grandes de N será una curva muy agresiva pero trabajando en 16 bits no debería ser problema). Como N=11 la curva se define de (0,0) a (255/11,255) = (23,255).


El resultado ya no tiene los artefactos de color que veíamos en el dominio Bayer porque asigna a cada píxel colores equivalentes a los de alguno de los revelados, y que son por tanto colores reales de la escena. Sin embargo presenta bastantes defectos de "transparencia" fruto del ruido y demás no idealidades de las capturas, y del método estimativo usado para calcular la antimediana (hacer clic para ver al 100%):



Aquí puede verse el detalle de algunas de las zonas más conflictivas que ya encontramos en la versión RAW, y que se hacen más patentes en la implementación de Photoshop:


~~~

El método Bayer, sin ser perfecto, funcionaba globalmente mejor dando un archivo donde las figuras en movimiento aparecen más compactas y con menos errores. No era de extrañar porque allí el cálculo de la antimediana era exacto cuando en Photoshop no dejamos de trabajar con una estimación. Ello no impide que como estadística aplicada a Photoshop este ejercicio me parezca sumamente interesante.

Mi apuesta final es que la mejor solución para automatizar este procesado, aunque no la voy a probar, sea no usar Photoshop sino utilizar el cálculo exacto de antimediana (con posible mejora del mapa de fusión), pero aplicado sobre archivos RGB ya revelados y no sobre los datos RAW.

Un archivo TIFF con las capas media, mediana así como las curvas que implementan los factores de la ecuación puede bajarse de tiffantimedianphotoshop.tif.

1 comentario:

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.