Estoy experimentando un comportamiento inesperado con el modo de fusión de subexposición de color en Adobe Photoshop CS 5 (y CS 6).
Mi comprensión del modo de fusión es la siguiente ( https://helpx.adobe.com/photoshop/using/blending-modes.html ):
Color Burn : Mira la información de color en cada canal y oscurece el color base para reflejar el color de mezcla al aumentar el contraste entre los dos. La mezcla con blanco no produce ningún cambio.
Tengo la siguiente configuración:
Mi resultado esperado es obtener un color completamente negro (#000000). Mi resultado real es un color completamente blanco (#FFFFFF).
Sin embargo, cuando cambio la capa inferior ligeramente, por ejemplo, a un valor casi blanco como #FEFFFF (254, 255, 255 en RGB), obtengo el resultado esperado de un canal completamente eliminado (#00FFFF).
Cuando la documentación dice blending with white produces no change
, ¿espero que eso signifique la capa superior (es decir, la capa de mezcla)?
¿Por qué este modo de fusión no está "habilitado" cuando un canal en la capa base es completamente blanco?
La siguiente imagen muestra los resultados ejemplificados (en CS5):
NOTA: Curiosamente, este mismo problema ocurre con la sobreexposición de color (si invierte todas las referencias de blanco a negro y viceversa. Cada vez que un canal en la capa base de sobreexposición de color está ligeramente por encima de 0, se activa el modo de fusión.
Esto también sucede si la capa superior es diferente de cero, por ejemplo, #040404.
De acuerdo con los algoritmos disponibles que he visto en línea, el caso de la esquina es solo cuando la capa superior es totalmente negra, pero estos algoritmos usan la capa superior (y no la capa inferior) como resultado.
Ejemplo:
if b = 0 then
result := 0
else begin
c := 255 - (((255-a) SHL 8) DIV b);
if c < 0 then result := 0 else result := c;
end;
Donde a es la capa base (capa inferior) y b es la capa de mezcla (capa superior).
(Consulte https://stackoverflow.com/questions/5919663/how-does-photoshop-blend-two-images-together o http://www.pegtop.net/delphi/articles/blendmodes/burn.htm )
Dado que se experimenta el mismo comportamiento cuando la capa superior es diferente de cero, parece que PS tiene un caso especial para un valor de canal base de 255. Esto probablemente se deba a una decisión arbitraria de Adobe que no se refleja en otros algoritmos.
La división por cero no está definida. Dejar la imagen intacta es la única solución posible. Consulte wikipedia sobre los modos de fusión. Esto es un poco problemático en algunos casos, pero el uso de la quemadura de negro puro no es realmente significativo de todos modos. Usa multiplicar.
Dodge se quema en reversa. Así que presumiblemente querían que tuviera las mismas restricciones de esquina.
Comentarios del formulario de aclaración : La elección es arbitraria, dado que la división por cero no está definida.
Es básicamente un detalle de implementación.
Según las pruebas, parece que Adobe ha agregado una condición adicional al algoritmo normal [1] para la quemadura de color.
El algoritmo normal es:
if b = 0 then
result := 0
else begin
c := 255 - (((255-a) SHL 8) DIV b);
if c < 0 then result := 0 else result := c;
end;
donde a es la capa superior (capa de mezcla) y b es la capa inferior (la capa base).
Sin embargo, la implementación de Adobe parece ser:
// Start of extra test
if a = 255 then
result := 255
// End of extra test
else if b = 0 then
result := 0
else begin
c := 255 - (((255-a) SHL 8) DIV b);
if c < 0 then result := 0 else result := c;
end;
Note la prueba adicional al principio. Esto probablemente se agregue porque devolverá los resultados más consistentes siempre que la capa base sea completamente blanca. Todas las demás capas superiores que no sean completamente negras devolverán el blanco y, por lo tanto, han decidido devolver el blanco también cuando la capa superior sea completamente negra (donde es específico de la implementación qué devolver).
[1] = http://www.pegtop.net/delphi/articles/blendmodes/burn.htm
joojaa