Author Topic: Bug en Dynamic Range Extension en ATrousWavelets  (Read 4272 times)

Offline Andres.Pozo

  • PTeam Member
  • PixInsight Padawan
  • ****
  • Posts: 927
Bug en Dynamic Range Extension en ATrousWavelets
« on: 2008 July 21 03:44:09 »
Hola,

creo que he encontrado un error en los ATrousWavelets, pero no se si es un error de concepto mio.

Creo que no está funcionando el Dynamic Range Extension. Entiendo que si se sube el valor de HighRange la imagen se debe hacer más oscura. Sin embargo no veo ningún cambio perceptible en la imagen. Lo mismo si modifico el LowRange.

Esto en Pix LE funcionaba así. No se si en la versión comercial se debe comportar de forma distinta.

Un saludo.

Offline Andres.Pozo

  • PTeam Member
  • PixInsight Padawan
  • ****
  • Posts: 927
Bug en Dynamic Range Extension en ATrousWavelets
« Reply #1 on: 2008 July 21 04:38:08 »
He descubierto qué es lo que ocurre. Parece que el Dynamic Range Extension se comporta diferente a como creía: el valor de HighRange parece que es relativo a cuanto se sale el algoritmo del rango [0,1].

Si el mayor valor que genera algoritmo es 1.2 y HighRange es 1.0 entonces se escala el resultado para que el valor 1.2 pase a ser 1.0. Si High Range es 0.5, se corrige la mitad del exceso y el 1.2 se convierte en 1.1.

Por favor, ¿me podéis confirmar si este es el comportamiento?

Un saludo,

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Bug en Dynamic Range Extension en ATrousWavelets
« Reply #2 on: 2008 July 21 10:23:27 »
Hola Andrés

Los valores de extensión del rango dinámico definen un rango de valores para reescalar la salida de un algoritmo (à trous wavelets en este caso) al rango normalizado [0,1]. El valor de high dynamic range funciona en exceso sobre la unidad, mientras que el valor de low dynamic range lo hace por debajo de cero (con valores negativos).

Un ejemplo lo aclarará mejor. Llamemos L al valor de low dynamic range y H al de high dynamic range.  Supongamos que el algoritmo produce valores de píxel en el rango:

[-0.25, +1.75]

Sin usar extensión del rango dinámico, es decir si:

L = H = 0

todos los valores < 0 y > 1 van a ser truncados a 0 y 1, respectivamente. Ahora supongamos que hacemos:

L = 0.25
H = 0.75

Entonces estamos definiendo un rango:

[-0.25, +1.75]

fuera del cual los valores de salida del algoritmo serán truncados, y dentro del cual todos los valores serán reescalados linealmente a [0,1]. En este ejemplo, no se produciría pérdida alguna de datos (o sea saturación como negro o blanco), puesto que estamos usando los valores mínimo y máximo que produce el algoritmo.

Espero que esté claro ahora. Ciertamente, se podría añadir una opción para que se utilizase automáticamente el rango de salida del algoritmo (como en el ejemplo anterior). Había pensado en añadir esta opción, aunque en la práctica lo que se hace es ajustar los valores del rango de forma interactiva.
Juan Conejero
PixInsight Development Team
http://pixinsight.com/