Author Topic: Emular combinaciones de capas de Gimp/Photoshop con PixelMath  (Read 4298 times)

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Cucú!

Estaba aquí todo aburrido juntando unas capas con gimp en modo Pantalla y me preguntaba si no se podría emular lo mismo con PixelMath, dado que trabajar con estas imágenes de 12000x9000 píxels sin poder usar previews ni guardar los iconos de proceso es un tanto... ejem...

Seguro que las ecuaciones relevantes no tienen mucha ciencia. Por ejemplo hay algunos modos llamados Suma, Diferencia, Multiplicar... cuya implementación en PixelMath es inmediata; sin embargo ¿cómo funciona el Pantalla? ¿Y el Solapar? ¿Y el ...?
--
 David Serrano

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Emular combinaciones de capas de Gimp/Photoshop con PixelMath
« Reply #1 on: 2008 September 06 16:17:42 »
El modo screen de PS sí sé cómo es. Si F, G son dos imágenes,

Screen(F,G) = ~(~F × ~G)

donde ~ representa la operación de inversión:

~x = 1 — x

Es muy sencillo implementar esto en PixelMath. Overlay lo debo tener por ahí, no lo recuerdo en este momento; trataré de buscarlo.

Por cierto, la operación Screen se utiliza en la herramienta ExponentialTransformations. Además, esta herramienta tiene otra operación parecida, que inventó Carlos Milovic. Es PIP (Power of Inverted Pixels):

PIP(F,G) = F^(~G)

donde ^ representa la exponenciación. Esta función es mejor que Screen para realzar la información en las sombras.
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Emular combinaciones de capas de Gimp/Photoshop con PixelMath
« Reply #2 on: 2008 September 07 10:05:28 »
Quote from: "Juan Conejero"
Screen(F,G) = ~(~F × ~G)


Gracias! :)

La mayoría del tiempo el usuario querrá establecer determinada transparencia para las imágenes. En PixInsight esto se consigue con Process -> Image -> CreateAlphaChannels, especificando la opción "From transparency" y dándole el valor deseado.

A partir de ahí, esto se mete en la ecuación de PixelMath especificando el canal 3 manualmente (el canal 0 es el rojo, el 1 verde, el 2 azul y el 3 es el primer alpha). Se hace un poco lioso con los paréntesis pero bueno:

Code: [Select]
1 - ((1 - (F*F[3])) * (1 - (G*G[3])))

Obviamente, la multiplicación no hace falta si alguna imagen no tiene alpha (y de hecho dará error porque el canal no existe).
--
 David Serrano

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Emular combinaciones de capas de Gimp/Photoshop con PixelMath
« Reply #3 on: 2008 September 07 11:05:37 »
Genial, me alegro de que te funcione bien. Usar un canal alfa es una excelente idea también.

Quote
1 - ((1 - (F*F[3])) * (1 - (G*G[3])))


Prueba con esto:

Code: [Select]
~(~(F*F[3]) * ~(G*G[3]))

Hace lo mismo, pero es más legible y también más eficiente (sustituye tres restas por operaciones unarias).
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Emular combinaciones de capas de Gimp/Photoshop con PixelMath
« Reply #4 on: 2008 September 08 01:00:42 »
Quote from: "Juan Conejero"
Hace lo mismo, pero es más legible y también más eficiente


Ah! Interpreté que habías usado "~" en el mensaje por legibilidad, y que Pixi no se lo tragaba :).
--
 David Serrano