Author Topic: Tutorial on Planetary Image Processing with PixInsight: Jupiter by David Pretorius  (Read 23372 times)

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
<Texto en Español al final>

Australian planetary imager David Pretorius has published the raw data of one of his excellent Jupiter images:

http://www.iceinspace.com.au/forum/showthread.php?t=32254

David has kindly given us permission to use his raw data to write a small tutorial on planetary image processing in PixInsight, which we present here. We hope you'll find it interesting and useful.

Here is the final image, processed with the procedures and techniques described herein:




1. Registration and Integration of Raw Frames

The FFTRegistration script comes in the default set of example JavaScript scripts of the latest PixInsight versions. This script can be used to perform the automatic registration (alignment) of a set of disk image files. As its name suggests, FFTRegistration uses Fourier-based image registration algorithms.

To run the FFTRegistration script, select Script > Sample Scripts > FFTRegistration from the main menu.



On the FFTRegistration script dialog, click the Select button in the Reference Image section. The script will align a set of target images with respect to a reference image that we must select here.



In this example, we have selected as reference the first image of each set, which is supposed to be the best one in terms of relative quality.

Now we must select a set of images to be aligned. Click the Add button in the Target Images section:



On the Select Target Images dialog, we have selected all images of each set except the first one, which is the reference image. Obviously, including the reference image in the set of target images doesn't make any sense, although it doesn't hurt either.



Below you can see the FFTRegistration script dialog with the whole set of images selected for the red channel in this example.



The Registration Options section of the FFTRegistration script dialog allows you to select some parameters to control the image registration procedure. The rotation and scaling corrections are still experimental features that use development algorithms, so we don't recommend selecting these options for production work. Optionally, you can write the resulting registered images to a selected output directory in FITS format. You can also integrate (stack) all registered images by averaging them, which is just what we have done in this example.

When you are done, click the OK button and wait for the integrated image to appear. The Processing Console window will show you a lot of information about the ongoing processes. Here's a useful tip: the FFTRegistration script can run significantly faster if you hide the Processing Console window, by clicking on its Hide icon, as shown below. This is particularly useful if your computer isn't very fast.



When the script terminates its execution, it will create a new image window with the average of all registered images in 32-bit floating point format. It is convenient to change the identifier of this image, to facilitate its identification during the rest of our work.



After running the FFTRegistration script for each individual RGB channel, we have three grayscale images that correspond to the red, green and blue channels of the Jupiter image of our example. As we have said, each of these images is the average of all registered images for a single channel, and has been generated in 32-bit floating point format. In this example, we have renamed these images to Red, Green and Blue, respectively.


2. Mutual Alignment of Individual RGB Channels

Before continuing, we'll create working duplicates of the Red, Green and Blue images. This can be done very easily by dragging the corresponding view selectors with the mouse, or by selecting Image > Duplicate from the main menu.



Now we'll apply a rough wavelet transformation to enhance details in the working duplicates. This enhancement will facilitate greatly the alignment procedure.



Note that we are not interested in these working duplicates; of course we'll do much better than these rough transforms. The purpose of the wavelet transformation applied here is to enhance local contrast of small-scale image structures that will be used as alignment references.

We'll begin by aligning the Green image with respect to the Red image. To this purpose, we'll use the DynamicAlignment tool in PixInsight. DynamicAlignment is a semi-automatic image registration process for high-precision registration of deep-sky images. Although this tool has been designed to use stellar images as registration references, with some care and a few tricks it can also be used to align high-resolution planetary images, provided that enough details are available.

With the DynamicAlignment interface opened, we select the reference image (Red in our example):



and then the target image, or the image that will be registered (Green):



To align planetary images, one must use small, high-contrast planet features as alignment references. DynamicAlignment allows you to use bright and dark features. Bright features (which are the equivalent to stars in deep-sky images) are selected by default. To select a dark feature, hold the Control key pressed while you click near a feature on the reference image, or click the Invert icon at the top of the DynamicAlignment interface.



On the screenshot above, you can see how a Screen Transfer Function (STF) can be used to improve the visibility of details and alignment points. Also note the relatively small search radii (five pixels in the screenshot), necessary to use very small image structures as alignment references.

We have used seven alignment points. Two or three would suffice in this example, provided that they are not too close on the planetary disk. DynamicAlignment always performs a sub-pixel image registration. It is able to correct for arbitrary local distortions when three or more alignment points are defined. With less than three alignment points, DynamicAlignment applies an affine transformation. With two alignment points, it can correct for translation (mutual displacement on the plane), rotation, and scaling in one direction. With just one alignment point, only translation can be corrected. Note that all registration points defined will be matched exactly in the registered image (labelled as target image on DynamicAlignment), with respect to the reference image (source image in DynamicAlignment).

Here you can see another screenshot taken while we were selecting alignment features for the Green image:



Recall that we have created duplicate working images, with the sole purpose of defining alignment points. What we really want is to align the original integrated images, that is, our Green and Blue images, with respect to the Red image. So we have to apply the DynamicAlignment instance to the Green image, as can be seen below:



This generates a Green_registered image:



A similar procedure has been applied to register the Blue image over the Red image, which has generated a Blue_registered image:




3. RGB Composite Image

At this point the working duplicates are no longer necessary, and can be discarded.

Here are the three resulting images, namely Red, Green_registered, and Blue_registered, ready to be combined as a single RGB color composite image. The ChannelCombination tool can be used to carry out this simple task:




4. Detail Enhancement and Noise Reduction: ATrousWaveletTransform and GREYCstoration

After applying ChannelCombination globally (F6), a RGB image is obtained. We have renamed it as RGB. You can see it here, while we were trying out some wavelet transformations:





Finally, here is the processed image, after a careful wavelet transformation, rotation, and additional noise reduction with the GREYCstoration algorithm:



We hope you'll like this small tutorial. Any comments or ideas will be welcome.

Thanks to Dave Pretorius for allowing us to work with his excellent raw images.



====================================================================================================================
====================================================================================================================
====================================================================================================================



El astrofotógrafo planetario australiano David Pretorius ha publicado los datos en bruto de una de sus excelentes imágenes de Júpiter:

http://www.iceinspace.com.au/forum/showthread.php?t=32254

David nos ha dado permiso amablemente para utilizar sus datos en bruto con el fin de escribir un pequeño tutorial sobre procesamiento de imágenes planetarias en PixInsight, que presentamos aquí. Esperamos que os resulte interesante y útil.

Aquí está la imagen final procesada con los procedimientos y técnicas descritos en este tutorial:




1. Registro e Integración de Imágenes Raw

El script FFTRegistration viene en el conjunto de scripts de ejemplo por defecto en las últimas versiones de PixInsight. Este script puede ser utilizado para llevar a cabo el registro (alineación) automático de un conjunto de imágenes almacenadas en archivos de disco. Como su nombre sugiere, FFTRegistration usa algoritmos basados en transformadas de Fourier.

Para ejecutar el script FFTRegistration, seleccione Script > Sample Scripts > FFTRegistration desde el menú principal.



En el cuadro de diálogo del script FFTRegistration, haga clic en el botón Select de la sección Reference Image. El script alineará un conjunto de imágenes seleccionadas con respecto a la imagen de referencia, que debemos escoger aquí.



En este ejemplo hemos seleccionado como referencia la primera imagen de cada conjunto, que se supone que es la mejor en términos de calidad relativa.

Ahora debemos seleccionar un conjunto de imágenes para ser alineadas. Haga clic en el botón Add de la sección Target Images:



En el diálogo Select Target Images hemos seleccionado todas las imágenes de cada conjunto excepto la primera, que es la imagen de referencia. Obviamente, incluir la imagen de referencia en el conjunto de imágenes que serán registradas no tiene sentido, aunque tampoco causaría problema alguno.



En la captura de pantalla siguiente puede ver el diálogo del script FFTRegistration con el conjunto completo de imágenes seleccionadas para el canal rojo en este ejemplo.



La sección Registration Options del diálogo del script FFTRegistration le permite cambiar algunos parámetros que controlan el proceso de registro de imágenes. Las correcciones por rotación y escala (rotation y scaling) son todavía funciones experimentales que emplean algoritmos en desarrollo, de manera que no le recomendamos seleccionar estas opciones para trabajos de producción. Opcionalmente, puede escribir las imágenes registradas resultantes en un directorio de salida (output directory) seleccionable, en formato FITS. Puede también integrar todas las imágenes promediándolas, que es exactamente lo que hemos hecho en este ejemplo.

Cuando haya terminado, haga clic en el botón OK y espere hasta que aparezca la imagen integrada resultante. La ventana Processing Console se abrirá y le mostrará mucha información sobre el proceso en curso. Aquí tiene un consejo bastante útil: El script FFTRegistration puede ejecutarse significativamente más rápido si usted oculta la ventana Processing Console, haciendo clic en su icono Hide (ocultar), como se muestra a continuación. Esto es particularmente útil si su computadora no es muy rápida.



Cuando el script termine su ejecución, creará una nueva ventana de imagen con el promedio de todas las imágenes registradas en formato de punto flotante de 32 bits. Es conveniente cambiar el identificador de esta imagen para facilitar su identificación durante el resto de nuestro trabajo.



Tras ejecutar el script FFTRegistration para cada canal RGB individual, tenemos tres imágenes en escala de grises que corresponden a los canales rojo, verde y azul de la imagen de Júpiter de nuestro ejemplo. Como hemos dicho, cada una de estas imágenes es el promedio de todas las imágenes registradas para un canal, y ha sido generada en formato de punto flotante de 32 bits. En este ejemplo hemos renombrado estas imágenes como Red, Green y Blue, respectivamente.


2. Alineación Mútua de Canales RGB Individuales

Antes de continuar crearemos duplicados de trabajo de las imágenes Red, Green y Blue. Esto se puede hacer muy fácilmente arrastrando los selectores de vista con el ratón, o seleccionando Image > Duplicate desde el menú principal.



Ahora aplicaremos una transformación por wavelets bastante agresiva para potenciar los detalles en los duplicados de trabajo. Esta mejora de detalles facilitará mucho el proceso de alineación.



Tenga en cuenta que no estamos interesados en estos duplicados de trabajo; por supuesto, conseguiremos resultados mucho mejores que los que proporcionan estas transformaciones temporales. El propósito de la transformación por wavelets aplicada aquí es mejorar el contraste local para estructuras de la imagen de pequeña escala, que serán utilizadas como referencias de alineación.

Comenzaremos alineando la imagen Green con respecto a la imagen Red. Con este propósito, haremos uso de la herranmienta DynamicAlignment en PixInsight. DynamicAlignment es un proceso semiautomático para el registro de alta precisión de imágenes de cielo profundo. Aunque esta herramienta ha sido diseñada para utilizar imágenes estelares como referencias de alineación, con algún cuidado y usando unos pocos trucos también puede ser aplicada para alinear imágenes planetarias de alta resolución, siempre que existan suficientes detalles.

Con la interfaz de DynamicAlignment abierta, seleccionaremos la imagen de referenca (Red en nuestro ejemplo):



y a continuación la imagen destino (target) que es la imagen a alinear (Green):



Para alinear imágenes planetarias se debe seleccionar características planetarias pequeñas y de alto contraste como referencias de alineación. DynamicAlignment le permite seleccionar características tanto brillantes como oscuras. Las características brillantes (que equivalen a estrellas en imágenes de cielo profundo) son seleccionadas por defecto. Para seleccionar una estructura oscura, mantenga la tecla Control pulsada mientras hace clic cerca de una característica sobre la imagen de referencia, o haga clic en el icono Invert, en la parte superior de la interfaz de DynamicAlignment.



En la captura de pantalla de arriba puede ver cómo una función de transferencia de pantalla (Screen Transfer Function) (STF) se puede usar para mejorar la visibilidad de detalles y puntos de alineación. Observe también los radios de búsqueda (search radius) relativamente pequeños (cinco píxeles en la captura de pantalla), necesarios para usar estructuras de imagen muy pequeñas como referencias de alineación.

Hemos utilizado siete puntos de alineación. Dos o tres serían suficientes en este ejemplo, siempre que no se encuentren muy cercanos entre sí sobre el disco planetario. DynamicAlignment siempre realiza el registro de imágenes con precisión sub-píxel. Es capaz de corregir distorsiones locales arbitrarias cuando se definen tres o más puntos de alineación. Con menos de tres puntos de alineación, DynamicAlignment aplica una transformación afín. Con dos puntos de alineación, puede corregir por traslación (desplazamiento mútuo sobre el plano), rotación, y cambio de escala en una dirección. Con sólo un punto de alineación, sólo es posible corregir por traslación. Tenga en cuenta que todos los puntos de alineación definidos coincidirán exactamente en la imagen registrada (etiquetada como target image en DynamicAlignment), con respecto a la imagen de referencia (source image en DynamicAlignment).

Aquí puede ver otra captura de pantalla tomada mientras estábamos seleccionando puntos de alineación para la imagen Green:



Recuerde que hemos creado imágenes duplicadas de trabajo, con el fin exclusivo de definir puntos de alineación. Lo que realmente queremos hacer es alinear las imágenes integradas originales, esto es nuestras imágenes Green y Blue, con respecto a la imagen Red. Por lo tanto, aplicaremos la instancia de DynamicAlignment a la imagen Green, como se puede ver a continuación:



Esto genera una imagen Green_registered:



Un procedimiento similar ha sido aplicado para registrar la imagen Blue sobre la imagen Red, lo cual ha producido una imagen Blue_registered:




3. Imagen Compuesta RGB

En este momento las imágenes duplicadas de trabajo ya no van a ser necesarias, y por lo tanto pueden ser descartadas.

Aquí puede ver las tres imágenes resultantes, Red, Green_registered, y Blue_registered, dispuestas para ser combinadas como una única imagen compuesta en color RGB. La herramienta ChannelCombination puede ser usada para llevar a cabo esta tarea simple:




4. Mejora de Detalles y Reducción de Ruido: ATrousWaveletTransform y GREYCstoration

Tras aplicar ChannelCombination globalmente (F6), se obtiene una imagen RGB. Nosotros hemos renombrado esta imagen como RGB. Puede verla aquí, mientras estábamos probando algunas transformaciones por wavelets:





Finalmente, aquí está la imagen procesada, tras una cuidadosa transformación por wavelets, rotación, y reducción de ruido adicional con el algoritmo GREYCstoration:



Esperamos que os guste este pequeño tutorial. Todos los comentarios e ideas serán bienvenidos.

Gracias a Dave Pretorius por permitirnos trabajar con sus imágenes en bruto.
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline Jordi Ortega

  • Newcomer
  • Posts: 3
    • http://astrosurf.com/celurba/
Hola Juan:

Me ha parecido un tutorial excelente, en especial la forma elegante de corregistrar los canales, así como el Script de registro de imágenes que desconocia en Pixinsight.

Hace un par de dias que habia tratado las imágenes, me parece que las bajé de un mensaje que puso Pretorius en Cloudy Nights, las apilé con Registax y les apliqué los wawelets correspondientes, y luego en Pixinsight utilizando también la herramienta de alineación dinámica  pero de forma menos elegante y con menos puntos de referencia, registre los tres canales entre sí, luego los recombiné con Astroart y ajuste también el histograma, luego volví a Pixinsight para hacer una reducción de ruido.

Me gusta mucho ver como ese proceso se puede hacer sólo con Pixinsight

Este fue mi resultado



Saludos.
Jordi Ortega
Me encantan los cielos turquesa del amanecer.
http://astrosurf.com/celurba/

Offline davidpretorius

  • Newcomer
  • Posts: 13
Hello everyone from Tasmania (an island south of Australia).

I am currently playing with Pixinsight trial version on the full number of frames.

There are 1200 odd Blue images, 1200 odd Green images and 900 odd Red

I captured @ 30fps  for 40 seconds in B & G and @15fps for 60s in R.

95% of the frames are of very good quality

I will post my results here as I follow the tutotial
Tasmania, Australia
10" Peltier Cooled Newtonian on a Dob Driver II
Lu075M with RGB Filters

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Hi David,

Welcome to PixInsight Forum!

I'm glad you're giving PixInsight a try. You'll find that our user interface is quite different from what is customary in most imaging applications. If you haven't used previous PixInsight versions (PixInsight LE or time-limited beta versions for example) It may seem difficult at first glance, but once you get accustomed it's a piece of cake. We'll be glad to help you with all doubts or questions you may have.

We want to develop a series of tools specifically designed for planetary and lunar image processing. It would be very nice to count with your help.

Cheers,
Juan
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline davidpretorius

  • Newcomer
  • Posts: 13
I am up to the stage of dynamic alignment.

I have set the alignment points for waveletted Red and Green copies, but it is not clear how to

" So we have to apply the DynamicAlignment instance to the Green image,"

Is there a button to press so that the orginal red image can be now the target?

Dave P
Tasmania, Australia
10" Peltier Cooled Newtonian on a Dob Driver II
Lu075M with RGB Filters

Offline davidpretorius

  • Newcomer
  • Posts: 13
found it...new instance on the bottom left of the Dynamic Alignment form
Tasmania, Australia
10" Peltier Cooled Newtonian on a Dob Driver II
Lu075M with RGB Filters

Offline davidpretorius

  • Newcomer
  • Posts: 13
I have produced a final image, but am unsure how to attach in this forum?

here is a link to it

http://davesplanets.com/Gallery/j2008-05-21_17-49_rgb_dp_pixinsight.jpg

my original is here done with registax and astra image.

http://davesplanets.com/Gallery/j2008-05-21_17-49_rgb_dp.jpg

The process is outlined here.

http://davesplanets.com/Downloads/Jupiter%20Processing%202008.pdf

:)
Tasmania, Australia
10" Peltier Cooled Newtonian on a Dob Driver II
Lu075M with RGB Filters

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Hi David,

That is a really *excellent* result. And taking into account that it's your first time with PixInsight., I am impressed.

To make it absolutely perfect, I'd just try to enhance small scales very slightly with ATrousWaveletTransform, or even UnsharpMask.

You've obtained a very smooth yet detailed result. How did you apply noise reduction?
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
I forgot to answer your question about posting images. It's very easy: just enclose a link to your image between tags when you write your post to the forum (it works in a similar way to plain HTML code, but the tag punctuators are [] instead of <>).

For example, here is your image:

Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline davidpretorius

  • Newcomer
  • Posts: 13
Thanks for your kind words Juan.

I used the atrouswavelets with the "morphous" noise reduction and with the L + C. I had a quick look for unsharp mask, but didnt find it. The extra number of frames helped.

I really like the idea of "stacking first. then optimising" (registax language). Lumenera cameras have a nasty problem sometimes with horizontal lines that also get optimised. I have noticed it even in Damian Peach's images. He and David Tyler noticed it again with Mars this year I think.

I also like the idea of scripting, so I technically could "batch" the process and produce the R G B and even the overprocessed reference files for alignment.

I do get field rotation because I have a dobsonian base and so the dynamic alignment process is a good one for me to overcome this problem.

I really like the software
Tasmania, Australia
10" Peltier Cooled Newtonian on a Dob Driver II
Lu075M with RGB Filters