Author Topic: Implementación preliminar de auto-star-profile-transform.js  (Read 70665 times)

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Implementación preliminar de auto-star-profile-transform.js
« Reply #45 on: 2007 September 25 02:35:14 »
Quote
(*) Realmente no he estudiado en toda mi vida, pero eso :^P.


Bienvenido al club. Y es que, si se estudia demasiado, no queda tiempo para aprender cosas  :lol:

Quote
Lo siento, no soy capaz.


Unacceptable  :)

¿Te puedo echar una mano con la interpolación de mtfs? Venga, que tenemos que hacer funcionar esto. Por narices: ;^)
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #46 on: 2007 September 25 05:37:29 »
Gracias :).

Supongo que la solución es hallar la función inversa de la MTF. No creo que sea una tarea precisamente trivial.

La verdad es que no me he quedado a gusto y sigo con la mosca detrás de la oreja. Tal como mencioné en otro mensaje ayer, voy a probar a implementar el último mensaje de C. Milovic, en lo que será la 0.5.

Y sorpresa: va con splines cúbicos ;^).
--
 David Serrano

Offline C. Sonnenstein

  • PixInsight Addict
  • ***
  • Posts: 262
    • http://astrosurf.com/astro35mm
Implementación preliminar de auto-star-profile-transform.js
« Reply #47 on: 2007 September 25 13:54:32 »
:P
Carlos Sonnenstein

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #48 on: 2007 September 25 14:32:36 »
Pues no... el spline con sólo 3 puntos se me va de madre. Me devuelve un valor de MTF de 1060, o de -0.3. Se controla mejor con más puntos pero eso ya no me interesa.

Y hacerlo con cuadrática tampoco es factible, porque el código Perl que pensaba traducir utiliza un módulo externo. La implementación de splines la saqué del mismo libro, unas pocas páginas más adelante, y no usa módulos externos, es tan sólo una página y pico de código.

Así que vuelvo a estar en dique seco. He visto que una interpolación lineal iterativa quizá sea más rápida que la búsqueda binaria que había en la 0.4, pero me parece que el resultado va a ser 3/4 de lo mismo... voy a intentar atacarle, a ver.

1.- Si mediana objetivo < mediana actual, el usuario está oscureciendo la imagen. low = 0.5, high = 0.95.
2.- De lo contrario, low = 0.05, high = 0.5.
3.- Calculamos la mediana resultante al aplicar un(*) mtf a medio camino entre low y high. En este punto tenemos dos medianas: la recién calculada y la actual (mtf = 0.5). Ajustamos low y high.
4.- El objetivo está por ahí cerca, así que interpolamos linealmente entre low y high para obtener un valor de mtf aproximado.
5.- Calculamos el valor de la mediana en ese punto. Si es el objetivo, lo celebramos con un pantallazo azul ;).
6.- Descartamos una de las variables iniciales (low o high), la que esté más lejos del punto interpolado. Ajustamos low o high según sea necesario.
7.- Volvermos al paso 4 ad infinitum.

Este algoritmo es mejorable (hay cosas repes), pero me queda poca batería y no pienso levantarme por el cable ;). Ya encontraré el modo.


(*) Uno no, sino muchos, con máscara y recorte de sombras cuando esté implementado.
--
 David Serrano

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Implementación preliminar de auto-star-profile-transform.js
« Reply #49 on: 2007 September 26 04:30:28 »
David, el algoritmo que propones me parece muy correcto. Es básicamente una búsqueda binaria optimizada mediante una interpolación en tándem. Tiene que funcionar.

Casi que apostaría un euro (mira cómo tiro la casa por la ventana) a que los problemas que tienes se deben a que la interpolación no te está funcionando bien. En cuanto tenga un rato (hay muchas cosas pendientes en este momento) le pego un vistazo al asunto ;)
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #50 on: 2007 September 26 05:51:17 »
Quote from: "Juan Conejero"
Tiene que funcionar.


(c) Many people, many years ;). Yo en mi día a día he sustituido esa frase por "A ver por dónde explota ahora" jejeje.


Quote from: "Juan Conejero"
Casi que apostaría un euro (mira cómo tiro la casa por la ventana) a que los problemas que tienes se deben a que la interpolación no te está funcionando bien. En cuanto tenga un rato (hay muchas cosas pendientes en este momento) le pego un vistazo al asunto ;)


Yo suelo apostar entre 0 y 100 pesetas dependiendo de lo convencido que esté ;).

Esto te va a sorprender la pila: resulta que estaba empezando a probar el script con varias iteraciones, dado que parece que voy teniendo algo funcional, y bueno, le di y me puse a hacer otras cosas. Plof, en 15 segundos el botón de la barra de tareas se puso a parpadear, indicándome que el script había acabado(*). Coño... me quedé de piedra cuando fui a ver y me encontré con que el resultado era correcto... :shock:

Entonces comenté el "console.show()" y mire usté por dónde, que va a ser ese el cuello de botella. Si no se muestra el progreso, va como una flecha.

Ya venía pensando en sugerirte una especie de "statusEnabled" en el objeto Instance, de forma que todos los procesos lo heredaran y así pudiera suprimirse su salida por consola. Esto me parece más fácil y productivo que ponerse a mirar el código de la consola, averiguar por qué es lento y arreglarlo. Fácil porque no hay que buscar problemas existentes y arreglarlos, y productivo porque así los scripts podrán controlar mejor la salida por consola que generan.

También me extraña ser el primero que se da cuenta. Supongo que la 0.4 no la probó nadie entonces ;).


(*) Edito: quiero aclarar que esto se debe a que el script me pregunta si realmente quiero borrar la imagen temporal.
--
 David Serrano

Offline Jordi Gallego

  • PixInsight Addict
  • ***
  • Posts: 279
Implementación preliminar de auto-star-profile-transform.js
« Reply #51 on: 2007 September 26 12:57:33 »
Hola,

Quote from: "David Serrano"

También me extraña ser el primero que se da cuenta. Supongo que la 0.4 no la probó nadie entonces ;).


David, perdona yo si que la probé pero entre que mencionabas que no estabas muy contento con ella, que no habias eliminado tu información de depuración, y que llevo una temporada loca de viajes (te escribo esto desde un Hotel de la República checa que todavía no ha descubierto que sablear a los clientes por el uso de wifi es un negocio muy lucrativo :D ), pues se me paso poner nada, lo siento :?

Saludos
Jordi
Jordi Gallego
www.astrophoto.es

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #52 on: 2007 September 27 04:29:57 »
No problems, Mr. Gallego ;). Por cierto, sí que mola ejecutarlo con la ventana de HT visible jeje.

He puesto la 0.5 por ahí. Cambios:

 - Tal como se ha venido mencionando estos días, ahora calcula el valor de MTF de forma parecida a la 0.4, quizá un poco mejor. Es igual de lento que la 0.4, pero tras descubrir que sin mostrar la consola va mucho más rápido, la cosa cambia radicalmente ;). El progreso se muestra mediante una ventanita, en la que se va viendo cómo cambia la imagen. Quizá le pongo un dialoguito que muestre números.
 - Ahora permite borrar los datos guardados en el... hmmm... "registro" :twisted:.
 - Configura un RGB working space más apropiado, siguiendo las indicaciones de C. Sonnenstein.

Problemas / cosas pendientes:

 - Al no saber cómo obtener el RGBWS de la imagen antes de empezar a trabajar con ella, no tengo forma de restaurarlo. Por tanto, si algún usuario ha modificado el RGBWS de su imagen antes de pasarla por este script, que se guarde el icono de proceso por ahí para volvérselo a echar a la imagen después del script.
 - A medio proceso, cuando el programa ya sabe el valor de MTF, intento cerrar una ventana temporal pero me sale el diálogo de "¿Está usted seguro?". No sé cómo evitarlo. ImageWindow.isModified es de sólo lectura, obviamente ;). Con Image.free() tampoco lo he conseguido.

Que la disfrutéis (qué distinta puede ser misma frase dependiendo del contexto ;)).
--
 David Serrano

Offline wito

  • Newcomer
  • Posts: 6
Implementación preliminar de auto-star-profile-transform.js
« Reply #53 on: 2007 September 27 10:46:18 »
Hola David Gracias por el trabajo que estas haciendo.

Me da este error al ejecutarlo





Error: C:/Documents and Settings/Administrador/Escritorio/scripts/v5.js, line 59: include file not found: pjsr/ResizeMode.jsh

Me falta este archivo no ?

Saludos

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #54 on: 2007 September 27 14:12:52 »
Quote from: "wito"
Me falta este archivo no ?


Oops, sí, olvidé mencionarlo. Estará en la próxima versión de Pixi (este fin de semana si no me equivoco). Mientras tanto:

Code: [Select]
#ifndef __PJSR_ResizeMode_jsh
#define __PJSR_ResizeMode_jsh

/*
 * Resizing modes for Image.resample()
 */
#define ResizeMode_RelativeDimensions  0  // Resize relative to current image dimensions
#define ResizeMode_AbsolutePixels      1  // Resize to absolute dimensions in pixels
#define ResizeMode_AbsoluteCentimeters 2  // Resize to absolute dimensions in centimeters
#define ResizeMode_AbsoluteInches      3  // Resize to absolute dimensions in inches
#define ResizeMode_ForceArea           4  // Force the total number of pixels and keep existing aspect ratio
#define ResizeMode_Default             ResizeMode_RelativeDimensions

/*
 * Absolute resizing modes for Image.resample()
 *
 * These modes are only applicable when the main resize mode is
 * ResizeMode_AbsolutePixels, ResizeMode_AbsoluteCentimeters or
 * ResizeMode_AbsoluteInches.
 */
#define AbsoluteResizeMode_ForceWidthAndHeight  0  // Force both dimensions
#define AbsoluteResizeMode_ForceWidth           1  // Force width, preserve aspect ratio
#define AbsoluteResizeMode_ForceHeight          2  // Force height, preserve aspect ratio
#define AbsoluteResizeMode_Default = AbsoluteResizeMode_ForceWidthAndHeight

#endif   // __PJSR_ResizeMode_jsh


Publicado originalmente en el segundo mensaje de este hilo.
--
 David Serrano

Offline wito

  • Newcomer
  • Posts: 6
Implementación preliminar de auto-star-profile-transform.js
« Reply #55 on: 2007 September 28 10:46:09 »
Gracias David

Ya me funciona

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #56 on: 2007 September 29 03:52:02 »
Quote from: "wito"
Ya me funciona


Me alegro ;).

¿Te importaría decirme qué te parece su rendimiento? ¿Y qué procesador tiene tu máquina?

Bueno, esta pregunta es extensiva a todo el mundo, por supuesto. A mí con un 2*1800MHz me tarda un par de minutos cuando le doy 30 iteraciones. O quizá fueron 50, no me acuerdo.
--
 David Serrano

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #57 on: 2007 September 29 05:34:14 »
Acabo de editar aquel mensaje para poner la versión 0.5.1 del script. Necesita PixInsight 01.00.43.329 o superior (o alternativamente, PCL 01.00.23.138 o superior). Al revés también: al actualizar PixInsight también es necesario usar esta versión 0.5.1 o superior.
--
 David Serrano

Offline wito

  • Newcomer
  • Posts: 6
Implementación preliminar de auto-star-profile-transform.js
« Reply #58 on: 2007 September 29 11:22:28 »
Hola David, ahora lo he probado y me ha tardado 4'45", en un pc portatil Hp doble nucleo 1'83Ghz con 30 iteraciones

Saludos

Offline David Serrano

  • PTeam Member
  • PixInsight Guru
  • ****
  • Posts: 503
Implementación preliminar de auto-star-profile-transform.js
« Reply #59 on: 2007 October 01 03:47:01 »
Cucú!

Acabo de poner la 0.6. Esto ya tiene por fin el ajuste de recorte de sombras para cada máscara, que se me había olvidado previamente. Así que ya sabéis, alatakeeer! ;)
--
 David Serrano