Procesando una Imagen CCD en Hα con PixInsight

Por Daniel Bosch



1. La imagen original

En este tutorial quiero mostraros cómo he procesado una de mis tomas recientes en Hα. No pretendo escribir una guía sobre la forma más correcta de hacer las cosas con este tipo de fotografías, sino sólo describir un método sencillo que me ha proporcionado buenos resultados.

La imagen final procesada mediante el procedimiento descrito en este tutorial. Haga clic en la imagen para ver una versión más grande a aproximadamente la mitad del tamaño la toma CCD original.

FSQ106ED y cámara STL11000XM C2 a –10°C con un filtro Hα Baader de 7nm. Calibración (15 darks, 15 flats, 15 bias) con Images Plus 3.5 y procesamiento íntegro en Pixinsight 1.2.

Partimos de una imagen justo después de su calibración. En este caso se trata de una fotografía de Gamma Gygni a partir de 11 tomas individuales de 10 minutos, calibrada con hasta 15 darks, 15 bias y 15 flats mediante Images Plus v3.5.

El primer paso es abrir la imagen con Pixinsight Core 1.2, presentando el aspecto que se puede ver en la figura siguiente:

Figura 1— la imagen original recién calibrada.
(Haga clic en la imagen para ampliar)


2. Visualizar la imagen mediante ScreenTransferFunction (STF)

Como toda imagen recién salida del calibrado, la imagen de este ejemplo presenta un aspecto tremendamente oscuro. Esto ocurre porque la imagen es lineal, de manera que su distribución de brillo no está adaptada a la respuesta de dispositivos no lineales, como es el monitor, o nuestro propio sistema de visión.

Veamos lo que se esconde mediante la herramienta ScreenTransferFunction (STF), que como ya sabéis no modifica los datos de la imagen, sino que simplemente actúa sobre la visualización en pantalla de la misma.

Hacemos clic en el icono en forma de marca de verificación situado en la esquina inferior derecha (Track View) para vincular la interfaz de STF a la vista activa. Ello permite hacer una visualización en tiempo real del efecto producido ante cualquier cambio en los deslizadores.

Figura 2— Activando la opción Track View de ScreenTransferFunction para vincular la interfaz con la vista activa.
(Haga clic en la imagen para ampliar)


Figura 3— Con Track View activado, los cambios en la posición de los deslizadores se visualizan sobre la vista activa en tiempo real.
(Haga clic en la imagen para ampliar)

Como podemos ver en la Figura 3, STF nos permite saber fácilmente ante qué nos enfrentamos, sin necesidad de alterar la imagen.

En otros trabajos de procesamiento más complejos, STF juega un papel fundamental porque nos permite trabajar con los datos lineales, pudiendo representar éstos en pantalla de forma que podamos evaluar los resultados obtenidos. Esto tiene especial importancia para trabajar con deconvolución, que sólo tiene sentido para imágenes lineales. Otros algoritmos pueden funcionar mucho mejor con los datos lineales, como transformaciones por wavelets y procesos de modelización del fondo.

En este sencillo ejemplo, vamos a servirnos de STF para poder recortar los defectos en los bordes de la imagen provocados por el alineamiento de tomas no perfectamente coincidentes.


3. Recortar los bordes mediante DynamicCrop

Como hemos señalado, la imagen tiene unos artefactos oscuros en los bordes como resultado de la superposición de tomas individuales que no coinciden perfectamente. Vamos a recortar estos artefactos mediante la herramienta DynamicCrop.

Figura 4— Recortando los artefactos de los bordes con DynamicCrop.
(Haga clic en la imagen para ampliar)

Tras recortar los bordes de la foto, conviene restablecer los valores por defecto de STF para no ir arrastrando esa visualización durante el resto del procesado. Para ello basta con hacer clic en el icono Reset de la interfaz de STF, teniendo activada la opción Track View y siendo la imagen a procesar la vista activa.

Figura 5— Restableciendo las funciones de STF tras el recorte con DynamicCrop.
(Haga clic en la imagen para ampliar)


4. Ajuste no lineal inicial

Seguidamente abrimos la herramienta HistogramTransform y observamos la distribución de los datos de nuestra imagen. Nos disponemos a aplicar la primera modificación de los niveles de la misma recortando por los tonos oscuros —observad que he aplicado un factor de ampliación a la gráfica del histograma para ser muy cuidadoso en no perder información— y a continuación ajustamos el balance de medios tonos para distribuir mejor nuestros datos a lo largo del rango dinámico.

Figura 6— Ajustando el punto de corte en las sombras con HistogramTransform.
(Haga clic en la imagen para ampliar)


Figura 7— Ajustando el balance de medios tonos con HistogramTransform.
(Haga clic en la imagen para ampliar)

Ocasionalmente después de un primer intento se puede repetir la acción volviendo a definir el punto de corte en las sombras y reajustando el balance de medios tonos para distribuir mejor los datos. Es mejor realizar el ajuste no lineal inicial en el mínimo número posible de operaciones.

Figura 8— Segunda aplicación de HistogramTransform para terminar de redistribuir los datos de forma no lineal.
(Haga clic en la imagen para ampliar)


Figura 9— Resultado final tras el ajuste no lineal.
(Haga clic en la imagen para ampliar)


5. Máscara de protección

Muchos ya nos quedaríamos aquí (Figura 9), pero si observamos con detenimiento las zonas más brillantes de la fotografía observamos que tiene poca definición. Puesto que estas zonas tienen una relación señal/ruido muy favorable, son candidatas ideales para aplicarles cualquiera de las técnicas de realce de bordes (sharpening) disponibles. Esto incluye deconvolución, unsharp mask, etc. Mi preferencia para realizar esta tarea es aplicar transformaciones por wavelets en PixInsight.

Obviamente, como ya sabemos todas las técnicas de realce de bordes se llevan fatal con las zonas de baja relación señal/ruido, que son las correspondientes al fondo del cielo y a las zonas más tenues de las nebulosas y la periferia de los brazos galácticos. Así pues, antes de aplicar estas herramientas debemos proteger adecuadamente esas zonas mediante la correspondiente máscara.

A su vez, las zonas más brillantes de la fotografía también contienen algunas estrellas que no deberían quedar desprotegidas porque el realce de bordes podría provocar que se eliminaran esos perfiles difuminados que les dan sensación de volumen. Debemos también proteger las estrellas con su correspondiente máscara.

Luego la máscara final debe estar compuesta por dos máscaras parciales: Una máscara de estrellas convencional, que invertiremos para proteger a las estrellas, y una segunda máscara con las capas de mayor escala para desproteger las zonas más brillantes y extensas de la foto. Veamos cómo se hace esto.

Primero vamos a extraer la luminancia de nuestra imagen. Esto en una imagen en escala de grises equivale simplemente a obtener un duplicado de la misma. En nuestro caso haremos dos copias, una para cada una de las máscaras que posteriormente combinaremos.

Figura 10— Los dos duplicados que vamos a utilizar para confeccionar las máscaras empleadas.
(Haga clic en la imagen para ampliar)


5.1 Máscara de estrellas

Empecemos por la máscara de estrellas. Vamos a aplicar la herramienta ATrousWaveletTransform, deshabilitando la capa residual (R), como se muestra en la Figura 11.

Figura 11— Primer paso para realizar la máscara de estrellas: eliminar la capa residual con ATrousWaveletTransform.
(Haga clic en la imagen para ampliar)

Como vemos, nuestra máscara de estrellas contiene también restos de objetos no estelares, que debemos eliminar. Esto se puede hacer mediante HistogramTransform. Podemos unir los puntos de recorte en las sombras y de balance de medios tonos, y desplazarlos hasta donde consideremos que se ha conseguido una buna solución de compromiso entre la cantidad de estrellas que permanecen en la máscara y la cantidad de artefactos que han desaparecido. Sobre la posición final, no hay ninguna regla escrita: esto de sebe hacer en base a nuestras preferencias personales. Tener activada la función Real-Time Preview ayuda mucho.

Figuras 12, 13— Eliminando restos de objetos no estelares mediante HistogramTransform.
(Haga clic en la imagen para ampliar)

Como resultado de la operación anterior se ha reducido el calibre las estrellas, por lo que esta máscara no tapará eficazmente las estrellas de la imagen. Debemos ampliar los discos de las estrellas mediante la herramienta MorphologicalTransform, aplicando un filtro de dilación con unos valores parecidos a los que se muestra en la Figura 14.

Figura 14— Ampliando los discos estelares con MorphologicalTransform.
(Haga clic en la imagen para ampliar)

No temáis por esos halos artificiales grises que se han añadido a las estrellas de la máscara (Figura 14). Los eliminaremos fácilmente aplicando un desenfoque mediante la supresión en esa imagen de las capas de 1 y 2 píxeles, nuevamente con ATrousWaveletTransform, como se muestra en la Figura 15.

Figura 15— Suavización de los bordes de la máscara de estrellas, tras el filtro de dilación.
(Haga clic en la imagen para ampliar)


5.2 Máscara de gran escala

Ya hemos concluido una de la las dos máscaras, a la que nombraremos "Estrellas". Vamos a construir la otra. Nuevamente partimos del duplicado de la foto original y eliminamos de ella las capas con las estructuras que no nos interesan, con ATrousWaveletTransform, como se muestra en la Figura 16.

Figura 16— Supresión de las escalas pequeñas y medias para construir una máscara de gran escala.
(Haga clic en la imagen para ampliar)

También, al igual que para la máscara de estrellas, modificaremos sus niveles con HistogramTransform para binarizarla un poco (Figura 17). Puesto que ya nos interesa que se mantengan algunos gradientes, se permite mantener una mayor distancia entre los puntos de recorte en las sombras y de balance de medios tonos. Nuevamente se deben desplazar ambos, de acuerdo con los gustos personales de cada uno. Recordad que es conveniente activar la función Real-Time Preview para tener un feedback inmediato de los efectos del desplazamiento a derecha e izquierda de esos puntos de ajuste.

Figura 17— Ajustando el contraste de la máscara de gran escala con HistogramTransform.
(Haga clic en la imagen para ampliar)


5.3 Máscara combinada

Ahora tenemos que combinar las dos máscaras parciales para construir la máscara definitiva. Primero vamos a invertir la máscara "Estrellas", pulsando Ctrl+I (o seleccionando Image > Invert desde el menú principal).

Figura 18— Máscara de estrellas invertida.
(Haga clic en la imagen para ampliar)

Seguidamente, con la herramienta PixelMath aplicaremos la siguiente expresión sobre un duplicado de la máscara "Granescala":

Min( Granescala, Estrellas )

La razón para usar un duplicado es que estas máscaras pueden ser muy útiles en pasos posteriores de procesamiento, de manera que guardarlas es siempre una buena idea. En este ejemplo, reutilizaremos la máscara de gran escala para llevar a cabo una reducción de ruido, como veremos más adelante.

Con la expresión anterior, cada píxel de la máscara recibirá sólo aquélla información que sea la menor (menos brillante) de las dos imágenes que la componen. El resultado se puede ver en la Figura 19.

Figura 19— Máscara combinada mediante PixelMath.
(Haga clic en la imagen para ampliar)

Ya tenemos nuestra máscara terminada. Como podemos comprobar en la Figura 19, al activar la máscara sobre nuestra imagen a procesar (Mask > Set Mask desde el menú principal, o Ctrl+M) visualizaremos qué zonas están protegidas (oscuras) y cuáles no (claras). Para ocultar o mostrar la máscara, se puede seleccionar Mask > Show Mask desde el menú principal.

Figura 20— Máscara combinada activada sobre la imagen.
(Haga clic en la imagen para ampliar)


6. Realce de bordes con ATrousWaveletTransform

Ahora que disponemos de la protección de una máscara apropiada, ya podemos aplicar wavelets a nuestra foto. El realce de bordes lo lograremos mediante el incremento del parámetro Bias en las capas de menor escala, con la herramienta ATrousWaveletTransform. Los valores dependen del gusto personal, así como de la cantidad de señal de que se disponga. Habitualmente no bajo de 0.50, y raramente subo más allá de 250. Notad el efecto que produce mediante la visualización de la imagen antes (Figura 20) y después (Figura 21) de aplicar ATrousWaveletTransform.

Figura 21— Antes del realce de bordes con ATrousWaveletTransform.
(Haga clic en la imagen para ampliar)


Figura 22— Tras el realce de bordes con ATrousWaveletTransform.
(Haga clic en la imagen para ampliar)

Debemos ir con sumo cuidado con los valores de Bias. Si nos excedemos corremos el peligro de provocar un aumento visible del ruido en zonas en las que apenas había al inicio.


7. Reducción de ruido con ACDNR

En su libro The New Astro Zone System for Astro Imaging, Ron Wodaski nos anima a realzar bordes en las regiones con mayor relación señal/ruido, de la misma forma en que también nos invita a reducir el ruido de aquellas zonas con una relación más desfavorable. Vamos a hacerlo en nuestra foto.

Nos fijamos en que esas zonas con menor relación señal a ruido son precisamente las que protegía nuestra máscara "Granescala", luego simplemente podemos sustituir la actual máscara combinada por la de "Granescala", pero invertida para desproteger ahora las zonas del fondo del cielo y las regiones más débiles de las nebulosas.

Figura 23— Activando la máscara de gran escala invertida, para utilizarla como máscara de reducción de ruido.
(Haga clic en la imagen para ampliar)

El proceso de reducción de ruido lo realizamos con la herramienta ACDNR de PixInsight. Si bien los parámetros por defecto pueden funcionar bien a veces, normalmente es preferible disminuir el valor de Amount e incrementar el número de iteraciones. Hay que realizar las pertinentes previsualizaciones para encontrar los mejores valore que produzcan el efecto que deseéis, según vuestros gustos personales. Intentad evitar que se pueda percibir un cambio brusco entre la zona que estamos suavizando y aquella que hemos realzado previamente, y que ahora está tapada por la máscara.

Figura 24— Reducción de ruido con ACDNR, con la ayuda de la máscara de gran escala invertida.
(Haga clic en la imagen para ampliar)


8. Reducción de tamaño para publicación

Para la presentación de la imagen en galerías, foros, etc., normalmente es necesario reducir el tamaño de ésta. Por ejemplo, los servicios de almacenamiento gratuito de imágenes para foros suelen imponer un tamaño máximo en las imágenes que se pueden colgar en sus servidores.

La herramienta Resample nos permite reducir el tamaño de la imagen con facilidad. En este caso la he redimensionado a 2100 píxeles de ancho, que una vez guardada como JPEG al 100% de calidad, ocupa unos 2 MB.

Figura 25— Redimensionado de la imagen con Resample.
(Haga clic en la imagen para ampliar)