NOTA PREVIA: en
negrita-azul varias cuestiones donde os pregunto cosas a quienes usáis LUTs. Para mí esto es un mundo nuevo.
-----
Varias veces me he puesto a indagar en la forma de escribir una rutina para construir LUTs a partir de una pareja de imágenes antes/después, y aplicarlas después sobre cualquier otra imagen, pero acababa por vencerme la pereza ponerme a ello. Al fin y al cabo está más que inventado. Con Gemini Pro he retomado el tema y en menos de 2h he logrado:
- Una función que a partir de 2 imágenes (antes/después) construye una LUT 3D del tamaño que se le pida (en el ejemplo una LUT 33x33x33, que por lo visto es más o menos el estándar?), en formato .cube (texto) y HaldCLUT (PNG), que modela el procesado para ir del antes al después.
- Una función que aplique una LUT 3D suministrada en cualquiera de los dos formatos (.cube o HaldCLUT) a cualquier imagen
La parte de HaldCLUT (es una forma gráfica de codificar la LUT, mientras .cube es un fichero de texto) está por refinar porque no sale bien. Creo que no construye bien el PNG, o quizá no lo aplica bien, así que he hecho la prueba de validación con el fichero .cube (que por cierto ocupa bastante más que el PNG,
ya me diréis los que usáis LUTs qué formato es el más habitual).
Los pasos por lo tanto son:
- Se proporciona a la rutina la imagen original y el resultado de aplicarle el procesado que queremos emular con la LUT (en este caso es un procesado muy feo pero radical para forzar: curvas, desaturación y rotación de tonos)
- La función proporciona el fichero .cube que codifica por fuerza bruta la estimación del procesado
- Luego con la segunda función, esta LUT se aplica sobre la imagen original con la segunda función para comparar ambos procesados
Aquí el resultado de aplicar la LUT (el fichero .cube) desde una web online para asegurarnos de que reconoce bien el formato. El resultado no es 100% igual al que obtuve arriba. Y es que las LUT son muestreos de valores discretos, pero para saber qué hacer con los colores que no están directamente representados en la LUT, lo que ocurrirá con la mayoría, debemos interpolar, y las interpolaciones son como los culos. Así que primera conclusión que podríamos sacar: una misma LUT, aplicada por distintos programas, puede dar resultados ligeramente diferentes. Esto
lo puede confirmar alguien que use LUTs con distintos software?
Vistas por separado parece que el procesado de la LUT sale muy clavado al original, pero no lo es tanto. Aquí la diferencia entre el procesado original y el logrado por la LUT: los negros salen un poco más lavados que en el original. Probaré si subiendo el número de puntos de la LUT mejora o cambiando alguno de los suavizados que hace el código:
Pero el tema es prometedor.
Si alguien tiene un antes/después que quiera convertir a LUT que lo muestre. Entiendo que las LUT que se cargan en las cámaras asumen un punto de partida estándar (alguno de los revelados internos de la cámara, lo más neutros posible), y la LUT se añade a este procesado base.
Salu2!