¿Cómo crear un perfil de color abstracto para codificar una transformación de color específica?

Tengo un conjunto de imágenes (TIFF de 48 bits) codificadas en ProPhoto RGB.

Tengo un conjunto de perfiles de color de entrada alternativos (relacionados con ProPhoto RGB, pero ligeramente diferentes) que puedo asignar a las imágenes para obtener varias transformaciones de color.

Sin embargo, esta no es la forma correcta de usar perfiles de color. Si necesita una transformación de color, desea un 3DLUT (depende del espacio de color de trabajo, más como un perfil de enlace de dispositivo) o un perfil abstracto (Lab-> Mapeo de laboratorio, independiente del espacio de color).

Photoshop admite 3DLUT y perfiles abstractos.

Quiero crear un 3DLUT o un perfil abstracto que codifique la misma transformación que la lograda al cambiar el perfil de entrada. No sé cómo seguir adelante. Soy programador y puedo escribir código, si eso es útil.

En más notación matemática, tenemos estas funciones:

ProPhotoRGB: RGB->XYZ
ProPhotoRGBModified: RGB->XYZ
XYZ2Lab: XYZ->Lab
Lab2XYZ: Lab->XYZ

Y queremos encontrar esta función:

UnknownAbstract: Lab->Lab

Tal que se cumple esta igualdad:

ProPhotoRGBModified(input) == Lab2XYZ(UnknownAbstract(XYZ2Lab(ProPhotoRGB(input))))
¿Cuál es la aplicación fotográfica para lo que está tratando de hacer aquí?
Cambiando la saturación usando los perfiles de color de James Holmes .
No tengo una respuesta, pero lo logrará con ArgyllCMS. Más específicamente, probablemente debería buscar A->Btablas B->ALUT porque es la única forma de obtener ese efecto con solo convertir al perfil que desea construir.
Esto parece que podría ser una pregunta x→y. ¿Por qué no simplemente preguntar cómo cambiar la saturación usando los perfiles de color de James Holmes?
Yo se como cambiar la saturación usando estos perfiles, ese no es el problema, la pregunta es sobre crear perfiles de color abstractos (en general) para usar en Photoshop y otras aplicaciones. El hecho de que en este escenario en particular esté alterando la saturación es incidental, puede crear perfiles para simular el efecto del procesamiento cruzado o perfiles que emulen el aspecto de una película en particular. Son muchas las posibles aplicaciones de este tipo de perfiles.

Respuestas (1)

Puede hacer esto creando un Cubo de color RGB como .tif (o cualquier formato sin pérdidas que prefiera), llevándolo a Photoshop, aplicando la transformación a la imagen y luego guardándola nuevamente. Tengo uno que es 64x64x64:

Cubo de color

Así que ábralo en Photoshop y dígale que está en el espacio de color de origen desde el que desea transformar. (Es posible que deba decirle que ignore el perfil que está adjunto, si hay alguno. No estoy seguro de qué le hace a la imagen cargarlo aquí). Luego, haga lo que estaba haciendo para convertir al nuevo espacio de color. Vuelva a guardarlo en un formato sin pérdidas y fácil de leer con código. Luego, elimine la información del perfil de color, si hay alguna, ya que eso hará que se muestre de manera diferente en el futuro. Ahora puede usarlo como LUT 3D.

Intrigante. Creé el .png que necesito, pero Photoshop solo puede usar LUT 3D .3dl, .cube y .look. No puede usar .png directamente. Parece que es fácil pasar de .cube a .png, pero no estoy seguro de cómo hacer lo contrario. ¿O está sugiriendo que analice el .png yo mismo y cree el archivo .cube a partir de él?
Ok, jugué un poco más con estos, parece que los formatos 3D LUT son realmente triviales. Parece funcionar, pero necesito hacer algunas pruebas más exhaustivas para asegurarme de obtener exactamente el mismo resultado que espero. Todavía mantengo la pregunta abierta por ahora, ya que todavía estoy buscando una manera de codificar estas transformaciones como perfiles ICC abstractos en lugar de LUT 3D, pero este método descrito es una excelente solución si puede vivir con una dependencia de espacio de color de trabajo particular . Si nadie responde en un tiempo razonable, aceptaré su respuesta.