Autor Tema: Cómo funcionan ale y enfuse  (Leído 5171 veces)

vzabalza

  • Asidu@
  • **
  • Mensajes: 34
Cómo funcionan ale y enfuse
« on: 29 jun 2009, 23:08 pm »
Nota de moderador:
El siguiente mensaje proviene de este hilo, por lo que algunos comentarios hacen referencia a allí.


Hola a todos,

En primer lugar, muchas gracias por todos vuestros comentarios! Me alegro que os hayan gustado las fotos y me siento muy halagado por los comentarios, sobretodo después de darme una vuelta por fotolibre y ver las magnificas fotos que colgais. Tengo algunas otras en la cadena de procesado (siempre hay una cuantas, no?) pero si acaso ya las pondre más adelante. Perdonad que siempre conteste por la noche o de madrugada, pero.... cuando estoy aqui son las horas que estoy despierto.

Aprovechando el tema ¿por qué se ponen allí todos los observatorios, si la altitud tampoco es tanta? ¿tiene algo que ver con la latitud y el clima?

Siempre hay muchos factores a la hora de escoger un emplazamiento. La altitud es importante sobretodo para reducir la humedad ambiental, que disminuye notablemente la calidad del cielo. Eso se puede reducir mucho subiendo a 5000 metros o buscando un sitio donde siempre haya una capa de inversión termica por debajo de tu altura. Una capa de inversión termica es el sitio donde las nubes bajas "tocan techo": desde un avión se ve a menudo como las nubes parecen tener un cristal encima que no les deja subir. Por encima de esta capa de inversión térmica la humedad es muy baja: Aqui estamos normalmente por debajo de 30% y a menudo por debajo del 5% :o (si, cuando vuelva a barcelona me va a dar algo...). La latitud también es importante porque te permite ver las estrellas del hemisferio sur, donde hay regiones muy interesantes como el centro de la Via Láctea (el de mi foto). Y además siempre hay el factor económico: No cuesta lo mismo subir material y personal a 2300m en la isla de la Palma que a 5000m en un sitio remoto (aunque también se hace a veces, como el Cerro Paranal en Chile, si las condiciones son verdaderamente excepcionales). También va bien poner los observatorios juntos porque así se pueden compartir servicios entre ellos, como la residencia, agua, electricidad o conexion a internet en vez de montarlo todo nuevo para cada uno.

Respecto a la primera imagen, solo decirte que lo intentes con dos filas de 12, metiendo un poco más de cielo y un poco más de suelo (no mucho más) para ganar algo de altura. Por cierto, menuda terraza...

Cierto, tal vez ampliando un poco quedaria mejor. El problema es que desde donde tome ,esa panorámica por debajo ya estaba justo el suelo de la "terraza", no la ladera de la montaña. Tal vez si me asomo un poco al precipicio saldrá mejor  ;-D En cuanto al cielo, el sol ya estaba casi al límite, y no quise meterlo porque quedaría quemado demasiado trozo. Tal vez lo pruebe un poco más pronto, con el sol más a la izquierda, para poder meter más cielo.

Decirte que siempre es agradable encontrar gente que trabaja a ciertos niveles y opta por el software libre, ya sé que en investigación esto es muy frecuente, pero tu lo has trasladado también a tu afición por la fotografía y eso me da ganas de darte un abrazo  :colegas:.

Gracias por el comentario. Es cierto que en ciencia casi todas las máquinas que usamos corren linux. Por ejemplo, en mi departamento por lo menos un 90-95% de los sobremesa son linux. Pero en cambio, hay mucha gente que luego tiene un portátil con windows para hacer cosas más "de cada dia", cosas como las fotos o las presentaciones en PowerPoint (argh! como las odio). En mi caso la afición al software libre vino antes de meterme en investigación, incluso antes de comenzar la carrera, así que no es tanto que lo haya trasladado sino que lo he llevado en paralelo.

He estado rebuscando un poco por hay y en este blog Edu Perez he visto esta dos entradas AQUÍ y AQUÍ todavía estoy estudiando el tema.
Perdón por salirme del post es un kit kat

De hecho no te sales en absoluto del post! Esos posts en el blog de Edu Perez fueron los que me descubrieron enfuse. Nunca me habian gustado los resultados irreales de la mayoria de HDR, pero algunas escenas requieren por necesidad ampliar un poco el rango dinámico, asi que comencé a hacer mis pinitos con qpsftgui (o como se escriba, vaya nombre más raro). Aún así, todas las fotos me salian o bien muy radioactivas o bien muy lavadas. Así que investigué un poco más y encontré enfuse a través del blog de Edu Pérez, que encuentro que es una solución muy elegante. También es interesante lo que hace Edu: saca copias con enfuse y dos metodos diferentes de tonemapping, las pone como capas en gimp y selecciona de cada una las partes que más le gustan. Os recomiendo que le echeis una ojeada.

Por petición popular, os cuento como funciona lo de "ale" y enfuse:

Stacking de imagenes con ale
Este es un método muy habitual en astrofotografía digital, pero tiene poca utilidad en el dia a dia, ya que necesitas muchas exposiciones independientes de la misma escena. Exactamente de la misma escena. Si algo se mueve un pelo quedara mal. Las estrellas se mueven respecto a la Tierra, pero mantienen las posiciones entre ellas. Además, al ser tan débiles, siempre se trabaja con exposiciones largas y iso altos: receta perfecta para un ruido de narices! El método de stacking tiene dos ventajas principales:

  • No es necesario un seguimiento tan preciso de las estrellas, de manera que puedes hacer con monturas más baratas lo que hace años necesitaba un mamotreto de 50 kilos de peso y algún kilo de precio  ::)
  • Se reduce el ruido estocástico (aleatorio) de los detectores CCD/CMOS al promediar el ruido de diversas exposiciones

Primero un poco de teoría (si aburro pasad al siguiente párrafo!):
El principio se basa en que tomando muchas exposiciones cortas el ruido aleatorio que muestra el chip es diferente en cada una de ellas. Al promediar las imágenes, el ruido tendra tendencia a desaparecer ya que es diferente en cada una, mientras que la señal (estrellas y demás) siempre está presente, así que el promedio será positivo. Lo que queremos es aumentar la relación señal ruido (SNR, signal to noise ratio), que se define como S/N (donde S es la señal y N el ruido o noise). Cuando promediamos las imagenes, el valor de S aumenta como n (el numero de imagenes promediadas), mientras que el de N aumenta como la raiz cuadrada de n o sqrt(n), de manera que el valor de SNR tambien aumenta como sqrt(n). De esta manera, cada vez que doblamos el número de images promediadas reducimos el ruido en un factor sqrt(2)=1.414. Eso tiene la particularidad de que vamos a hacer una reducción de ruido equivalente al pasar de 2 a 4 imagenes que al pasar de 100 a 200. Así que al principio vereis cambios muy rápidos pero después va más lento.

Ahora si, un poco de paso a paso de como se hace:
Una vez tenemos reveladas las imagenes con ufraw (recordad de usar el boton de suavizado de color: la brocha al lado del método de interpolación), es necesario corregir la deformación de la lente si el objeto de interes va cambiando de posición dentro de la imagen. Esto se puede hacer en ufraw si se compila con lensfun, pero por ahora no se puede guardar en el fichero de identificación, así que no se puede pasar como opción a ufraw-batch (argh!). Este era mi caso, ya que las estrellas se movian de izquierda a derecha. Si no corregimos, las estrellas de los bordes no se podrán alinear correctamente. Esto lo podemos hacer con fulla:

Código: [Seleccionar]
fulla -g a:b:c:d *.tif
Los parámetros a,b y c los podemos obtener de ufraw (si teneis compilado lensfun vais a la pestaña correspondiente, seleccionais camara y objetivo y buscais el modelo de deformacion en las pestañas de abajo) o bien el el fichero original de lensfun. En debian se instala con el paquete liblensfun-data y se encuentra en /usr/share/lensfun/slr-{marca}.xml. El parámetro d no es más que 1-(a+b+c). fulla os guardara las imagenes corregidas con un sufijo _corr para cada una.

El siguiente paso es registrar (alinear) y promediar las imágenes. De esto se encarga el programa ale, que se puede instalar en debian con el paquete (oh, sorpresa!) ale. Este programa de linea de comandos es bastante complejo, la verdad. La cantidad de parametros que se pueden tocar intimida un poco. Yo os cuento lo que puse al final, que no se si es lo más correcto o no, pero funcionó.
Código: [Seleccionar]
ale --inc --16bpc --follow --exp-noregister --threshold=40 --align-green *_corr.tif aleout_$(date +%y%m%d_%H%M%S).tifUna a una:
--inc: Guarda la imagen de salida después de añadir cada imagen, no al final. Permite ir viendo como sale mientras se ejecuta
--16bpc: todo en 16 bits por canal (para que después gimp lo joda...)
--follow: suponer que cada imagen esta más cerca de la anterior que de la primera. esto es util ya que el movimiento de las estrellas es continuo, y siempre sera cierto.
--exp-noregister: ale tiene la opción de calcular la exposición de cada frame para promediarlo corrigiendo la exposición. Como yo lo tomé todo en manual, le digo que suponga que todas las imagenes tienen la misma exposición.
--threshold=40: que descarte las imagenes que no ha podido alinear mejor que un 40%. Este porcentaje no se exactamente como lo calcula, pero para la mayoria de frames esta alrededor de 60%-70% menos alguno a 10-20-30, asi que le puse esto para que descartara los que no se alineaban bien.
--align-green: que utilize solo el canal verde para la alineación. El canal rojo esta lleno de ruido, mientras que en el verde solo quedan las estrellas.
*_corr.tif: ficheros de entrada, i.e., todos los de salida del fulla.
aleout_$(date +%y%m%d_%H%M%S).tif: fichero de salida

Algunas precauciones a tomar:
ale es lento. Muy lento. Lentísimo. El resultado es bueno, pero puede ser desesperante. Asi que ni intenteis promediar imagenes a resolución completa. Lo probé y cada una tardaba un cuarto de hora. Las reduje todas a ancho 1280px y fue un poco más rápido. Pero igualmente se estuvo tres horas en una máquina más o menos decente. Seguramente hay alguna manera más sencilla de hacerlo, como alineando las imagenes con align_image_stack de hugin y promediandolas con algun comando de imagemagick, pero no he descubierto como.
Al hacer esto descubrireis que vuestro chip tiene zonas "calientes". El chip de mi 400D tiene una banda horizontal de ruido rojo intenso de un ~15% de la altura de la imagen y de la esquina inferior derecha parece salir una luz roja. Como estas zonas no son aleatorias, el promediado de imagen las considera señal y se amplifican respecto al ruido aleatorio. Esto se podria evitar mediante los que se llaman dark frames, una imagen con la cámara tapada que se resta a la imagen señal y elimina este tipo de problemas. Yo me olvide de tomar el dark, asi que me lo encontré de cara al terminar la faena...

enfuse para un HDR realista

La inspiración para este método me vino del post que ya descubrió Charly. Además en el mismo blog hay otro que utiliza enfuse para seleccionar las partes enfocadas de un macro y conseguir una profundidad de campo mayor de lo que conseguiria en una sola toma. La mayoria de comandos que pondré aqui son practicamente iguales que los del post de Edu Perez.

Volviendo a enfuse, se trata de un programa al que le das fotos con diferente exposición de la misma escena y para cada zona selecciona la imagen fuente de mayor "calidad".  Considera de mayor calidad las zonas con mejor exposición, más contraste y más saturación. Estas consideraciones se pueden ajustar con opciones, como. En esta página del wiki de panotools.org hay una explicación completa, pero si quereis ver de verdad de que va, también hay el artículo del algoritmo en el cual se basa el programa (PDF). Después de leerme los dos, me ha convencido de que es una mejor solución que los diferentes algoritmos de tonemapping de los HDR habituales.

Aplicación práctica:
Primero se alinean las fotos con align_image_stack, para corregir los pequeños moviemientos de nuestro tripode imperfecto y nuestro pulso de acero.

Código: [Seleccionar]
align_image_stack -a AIS_ IMG_????.tif
Que generará una imagen AIS_IMG_*.tif para cada imagen IMG_*.tif que tengamos. Entonces le damos todas estas imagenes a enfuse para que haga su magia:

Código: [Seleccionar]
enfuse AIS_IMG_????.tif -o enfuse_out.tif
donde enfuse_out.tif es el fichero de salida. Ahora lo podeis coger con el gimp y darle el toque final. El programa tiene diversas opciones que podeis encontrar en los links de arriba, sobretodo en el del wiki de panotools.org.

Pues eso es todo. Vaya rollo me ha salido, no? Se nota que tengo toda la noche por delante.... Tal vez lo arreglaré todo un poco y pondre ejemplos de pasos intermedios para hacer un howto en toda regla y colgarlo en el apartado de ayuda con los programas, que tal vez es donde pertenece.

Saludos,

Víctor

« Última Modificación: 02 jul 2009, 19:56 pm por tat »
Canon EOS 400D - EF 24-105 f4 L IS USM - EF 85 f1.8 USM
Debian GNU/Linux