Author Topic: ImageWindow.purge() purges too much  (Read 16455 times)

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
ImageWindow.purge() purges too much
« on: 2007 October 11 13:32:28 »
Consider this script:

Code: [Select]
#include <pjsr/SampleType.jsh>
#include <pjsr/UndoFlag.jsh>

var win = ImageWindow.activeWindow;  // no err checking
var v = win.mainView;

// extract luminance
var luma = new Image;
v.image.extractLuminance (luma);

// create a window for it
var luma_w = new ImageWindow (
    500, 500, 1, v.image.bitsPerSample,
    v.image.sampleType == SampleType_Real,
    false, "MST_luma"
);
// transfer the luminance to the new window
with (luma_w.mainView) {
    beginProcess (UndoFlag_NoSwapFile);
    image.transfer (luma);
    endProcess();
}
luma_w.show();

// add this to the main window as a mask
win.maskVisible = false;
win.maskInverted = true;
win.mask = luma_w;

// create some process
var hist = new HistogramTransform;
hist.H = [
    // shadows, midtones, highlights, ext_shadows, ext_hilights
    [0, 0.5, 1, 0, 1], // R
    [0, 0.5, 1, 0, 1], // G
    [0, 0.5, 1, 0, 1], // B
    [0, 0.2, 1, 0, 1], // RGB
    [0, 0.5, 1, 0, 1], // Alpha
];
// execute it on the mask, and then on the image
hist.executeOn (luma_w.mainView);
hist.executeOn (win.mainView);

// cleanup
luma_w.removeMaskReferences();
//luma_w.undoAll();
//luma_w.purge();
luma_w.close();
luma_w = null;


It is a reduced version of masked-stretch-transform.js. When you run it, you get two confirmation dialogs, and the resulting image can be undone. If you uncomment the lines:

Code: [Select]
//luma_w.undoAll();
//luma_w.purge();


then you get no confirmation dialogs (as expected) but you can't undo the final image. That's strange, since the purge() operation was applied onto luma_w, not win. I think the fact that luma_w is the mask for win has something to do with this.

Is it a bug? Or am I doing something wrong?


[Edit: corrected "Image" --> "ImageWindow" in the title]
--
 David Serrano

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
ImageWindow.purge() purges too much
« Reply #1 on: 2007 October 22 06:57:43 »
Cucú?

Nobody there? ;)
--
 David Serrano

Offline C. Sonnenstein

  • PixInsight Addict
  • ***
  • Posts: 262
    • http://astrosurf.com/astro35mm
ImageWindow.purge() purges too much
« Reply #2 on: 2007 October 22 13:34:10 »
Hola David:

Disculpa, pero se me pasó este mensaje. Acabo de probar el script. Hablas de una versión reducida de MaskedStretchTransform, pero no sé exactamente qué hace el script con la imagen. Comparando el resultado, parece que realiza un comportamiento excelente en las estrellas y objetos brillantes, pero los objetos nebulares quedan bastante aplanados y con mayor saturación de color. ¿Interviene alguna máscara modificada, o simplemente es la que se calcula automáticamente a cada iteración? ¿Cuántas iteraciones aplica el script? ¿Qué sucede con la mediana resultado?
Carlos Sonnenstein

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
ImageWindow.purge() purges too much
« Reply #3 on: 2007 October 22 14:32:35 »
Quote from: "C. Sonnenstein"
no sé exactamente qué hace el script con la imagen.


Da igual :). Ejecuta un único HT con una única máscara, y nada más. La razón de mi mensaje es que intento librarme de los diálogos de confirmación, pero no hay manera. Es decir, sí la hay pero entonces se pierde el historial de la imagen, un efecto secundario bastante poco deseable.


(Me voy a tomar la libertad de traducir tu frase).
Quote from: "C. Sonnenstein"
I don't know exactly what the script does to the image.


It doesn't matter :). It runs just one HT with just one mask, and nothing more. I posted the message because I'm trying to get rid of the confirmation dialogs, but I don't seem to be able to. That is, yes there's a way but then the image's history gets lost, which is quite an undesirable secondary effect.
--
 David Serrano

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
ImageWindow.purge() purges too much
« Reply #4 on: 2007 October 22 15:20:17 »
Hola David

I've verified that indeed this script erases the whole processing history for the masked image. This is of course incorrect and denotes some kind of obscure bug. I'll try to fix it tomorrow.

Until then, I regret to say that there's no work around for this: the nasty confirmation message is the only solution.

Thank you for detecting this problem. You're at the top of the bug hunting rank :D
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
ImageWindow.purge() purges too much
« Reply #5 on: 2007 October 23 00:41:00 »
Thank you for looking into this.


Quote from: "Juan Conejero"
You're at the top of the bug hunting rank :D


I just use the program! What are everyone else doing?   (no offense intended to you people, just joking ;)).
--
 David Serrano

Offline caliu

  • PixInsight Addict
  • ***
  • Posts: 210
    • http://www.caliu.fotografiaastronomica.com
ImageWindow.purge() purges too much
« Reply #6 on: 2007 October 23 01:29:43 »
Por favor, ¿podeis hacerlo tambien en Castellano? es que el vulgo no nos enteramos de la pelicula

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
ImageWindow.purge() purges too much
« Reply #7 on: 2007 October 23 01:49:12 »
Quote
Por favor, ¿podeis hacerlo tambien en Castellano?


Sure  :lol:

Sí, claro, lo que pasa es que a veces nos emocionamos. Bueno, lo que pasa es que David ha encontrado un bug bastante curioso que impide a su nuevo script (el que aplica un ajuste iterativo de los histogramas) funcionar como es debido. Entonces ha puesto un ejemplo simplificado de su script para que lo podamos verificar.

El bug tiene que ver con una función de JavaScript que no está funcionando como debiera. Esta función sirve para eliminar los archivos de intercambio de una imagen, con el fin de que el script pueda cerrarla sin que al usuario se le pida permiso, pero resulta que está eliminando los de todas las imágenes abiertas, lo cual es un buen problema de seguridad que hay que solucionar.

... y ya está solucionado, de hecho ;)

La versión para Linux ya está disponible:

http://pixinsight.com/export/PixInsight32-linux-01.00.47.342.tar.gz

y también lo está en el área de betatesters:

http://pixinsight.com/betatest/PixInsight32-linux-01.00.47.342-u.tar.gz

y en un momento recompilo el ejecutable para windoze y lo subo también.

Luego escribo otro mensaje explicando cómo funciona la nueva versión de ImageWindow.purge().
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
ImageWindow.purge() purges too much
« Reply #8 on: 2007 October 23 02:59:15 »
Ya tenemos la versión actualizada para Windows:

http://pixinsight.com/export/PixInsight32-win-01.00.47.342-nsi-20071023.exe

y también para los miembros del equipo:

http://pixinsight.com/betatest/PixInsight32-win-01.00.47.342-nsi-20071023-u.exe

Pues eso, David, que ya puedes darle rienda suelta al script (varios relinchos aquí) :lol:
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline caliu

  • PixInsight Addict
  • ***
  • Posts: 210
    • http://www.caliu.fotografiaastronomica.com
ImageWindow.purge() purges too much
« Reply #9 on: 2007 October 23 05:12:30 »
:lol:  :lol:  :lol:  :lol:

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
ImageWindow.purge() purges too much
« Reply #10 on: 2007 October 23 13:19:47 »
Quote from: "Juan Conejero"
... y ya está solucionado, de hecho ;)


Cawenla... Pero si acabo de subir los paquetes para linux! grrr :P. Pues na, ahí se quedan, que me parece que no tienen mucha demanda.

Gracias Juan por arreglar el problema tan rápido :).
--
 David Serrano

Offline Jordi Gallego

  • PixInsight Addict
  • ***
  • Posts: 279
ImageWindow.purge() purges too much
« Reply #11 on: 2007 October 23 23:13:02 »
Gracias por arreglar el problema Juan, pero debo decir que el script de David va tan bien que el precio de ir cerrando unas cuantas imágenes es muy pequeño comparado con el beneficio obtenido  :D  :D

Gracias de nuevo :wink:
Saludos
Jordi
Jordi Gallego
www.astrophoto.es