¿Es posible restar dos capas para calcular la transparencia?

Tengo una imagen con dos capas: Fondo y su copia + algunas modificaciones. ¿Es posible de alguna manera restar colores de la capa de fondo, de modo que todos los píxeles que son diferentes se extraigan con transparencia y el resultado de la extracción combinado con la capa bg se vea igual o casi igual que la capa fusionada original ?

Aporte:

ingrese la descripción de la imagen aquí

Posible resultado: parte de la capa es opaca, parte es transparente. El resultado es idéntico a la capa fusionada original.

ingrese la descripción de la imagen aquí

ACTUALIZAR

Quería usar esto para extraer la diferencia entre las capas originales y modificadas, por lo que, en la práctica, las capas de fondo y modificadas no tendrán un color. Aquí hay un ejemplo más de la vida real. Tengo un fondo y su copia con algunos trazos de pincel y trazos de la herramienta Difuminar.

ingrese la descripción de la imagen aquí

Aquí está el resultado que estoy teniendo ahora. Utilizo Diferencia para detectar píxeles cambiados y luego lo cargo como selección, elimino la mitad de la transparencia de esta selección y extraigo píxeles completamente opacos.

ingrese la descripción de la imagen aquí

Este es un resultado que me gustaría obtener: algunos píxeles tienen transparencia porque la diferencia no era 100% blanca. Me doy cuenta de que esto puede no ser posible, pero supongo que no hay daño en intentarlo.

ingrese la descripción de la imagen aquí

@Joonas Actualicé mi pregunta, lo siento, no estaba claro al principio.
Esto no es sencillo, pero si mapeó la imagen en blanco y negro y utilizó este método , podría extraer máscaras de capa y simplemente rellenar con los colores originales.

Respuestas (2)

Si desea volver a combinar en Photoshop la capa fusionada y el fondo original para recrear la capa de primer plano original y usar colores normales de 8 bits, la respuesta es "No es posible".

Pero los colores de 16 bits tienen el margen necesario. La siguiente imagen tiene un primer plano que es de un solo color y opacidad variable. El modo de imagen es RGB de 16 bits.

ingrese la descripción de la imagen aquí

Probablemente conozcas la ecuación de fusión normal:

M=xF+(1-x)B donde

M=valor rgb en la capa fusionada, x=la opacidad del color de primer plano en escala 0...1, F=valor rgb de la capa de primer plano, B=valor rgb de la capa de fondo

Esta fórmula se calcula para cada píxel y por separado para r, g y b.

Las opacidades de los píxeles de primer plano se pueden calcular si se conocen los números rgb en cada píxel en el primer plano original, el fondo y la capa combinada.

x=(MB)/(FB)

MB y FB se pueden lograr bien con la diferencia del modo de fusión. El signo de x será finalmente correcto, porque debe ser positivo.

Entonces, preparamos las capas necesarias para las restas. Debajo de todos hay originales de repuesto.

ingrese la descripción de la imagen aquí

Las diferencias se realizan fusionando las copias de fondo hacia abajo. Las capas resultantes se dividen. El resultado debería ser la opacidad del color de primer plano original:

ingrese la descripción de la imagen aquí

Podemos probarlo colocándolo en la máscara de capa:

ingrese la descripción de la imagen aquí

Bastante cerca, aunque no exacto. Fusionando el fusionado recreado y haciendo una diferencia con el fusionado original podemos encontrar con el selector de color que la mayor diferencia tiene brillo 4%

ingrese la descripción de la imagen aquí

Agregue debido a la pregunta extendida:

El autor de la pregunta quería saber si esto aún se puede resolver, si a) el color de primer plano era desconocido b) el color de primer plano era desconocido y varía a lo largo de la imagen

La ecuación de fusión da en un solo píxel en realidad tres ecuaciones, pero cuatro incógnitas (opacidad x y primer plano R, G y B). Si asumimos que R, G y B son iguales en todo el primer plano y escribimos la misma ecuación en otro píxel donde el color de fondo es el mismo, pero el color combinado es diferente y no es el mismo que el fondo, obtenemos otros tres ecuaciones, pero solo una nueva incógnita: la opacidad en el nuevo píxel. Eso debe tener solución exacta.

Solo se necesitan 2 píxeles para determinar el R, G y B desconocidos. Pero eso no se puede hacer con los modos de fusión de capas de Photoshop, porque funcionan por píxel. Necesitas resolver las ecuaciones o tener un algoritmo de búsqueda iterativo.

El caso b) es más complejo. Si solo se usa una pequeña cantidad de combinaciones RGB diferentes en primer plano, tenemos muchas más ecuaciones que variables desconocidas. Un algoritmo inteligente puede adivinar los lugares correctos para tomar muestras de píxeles como si pudiéramos verlos y calcular los colores de forma iterativa.

Desafortunadamente no soy programador, y mucho menos matemático, por lo que no puedo mostrar un programa que resuelva b).

Solía ​​​​haber un complemento para Photoshop llamado AlphaWorks que podría hacer esto, pero no sé si todavía funciona, ya que necesita una versión de Photoshop de 32 bits, y GIMP tiene su filtro Color to Alpha, que puede hacer esto. fácilmente. Pero buena respuesta sin embargo.
¡Gracias! Si entiendo correctamente, en su 'copia de color FG' usó el mismo color azul que en la capa FG, pero me pregunto si el color es desconocido. ¿Y si no es de un solo color? Me di cuenta de que mi pregunta no era 100% sobre lo que estoy tratando de hacer, la actualicé.
Sí, se puede inferir el primer plano si se puede extraer un alfa lo suficientemente bueno. He explicado el proceso aquí.

Con un fondo de color sólido, puede usar la "herramienta de borrador de fondo" Discreto, tolerancia 70-100% + algo de protección de color de primer plano. Es similar a "color a alfa" en Gimp. Pero necesita mapa de bits a alfa y no sé esto en Photoshop.

O puede modificar esto: http://cmtt.github.io/color-to-alpha/

Hola Jaroslav, actualicé mi pregunta: en realidad no necesito transformar un color específico a alfa, estoy tratando de entender si es posible restar dos capas, si ambas no son colores simples. Gracias por el enlace, también es útil.
Creo que puede modificarlo para leer un píxel y aplicarlo en el área de 1x1 px en la imagen y repetirlo para todo el mapa de píxeles de fondo. De todos modos, debería tener un rendimiento feo, por lo que si lo reescribe más, podría ser rápido.