M 33
por Alejandro Tombolini
Introducción
Imagen de Steve Herrman publicada en Image Processing Challenges - Es una image compuesta por 30 x 5 minutos tomadas con un Takahashi FS 78 a 5.9 y una SBIG STF 8300C - Notas princiaples: DBE para remover gradientes, contraste con AdaptiveStretch protegiendo con diferentes rangemasks, TGVInpaint para corregir el fondo y reducción de estrellas. Fecha: Septiembre 2015
Procesamiento
Algunas veces puede ser útil alinear los canales entre sí para corregir efectos causados por la óptica del telecopio.
Para eso, primero extraer los tres canales _R, _G, y _B y usar StarAlignment para alinearlos eligiendo uno como imagen de referencia, por ejemplo el canal _B, y los otros como imagen objetivo. Esto va a generar dos nuevas imágenes para ambos canales que estarán registradas a la imagen de referencia.
Usando la herramienta ChannelCombination seleccionar los canales registrados _R y _G y el original _B y Apply Global (F6) para generar la imagen.
DynamicBackgroundExtraction para corregir el gradiente. Como el gradiente parece aditivo selecciono Subtraction para corregir la imagen objetivo.
Neutralización del fondo y calibración del color. Seleccionar una pequeña vista previa que represente el fondo de la imagen y usarla como imagen de referencia en las herramientas BackgrounNeutralization y ColorCalibration. Determinar el limite superior (Upperlimit) en ambas herramientas convenientemente leyendo sobre la imagen con el cursor o chequeando el valor con la herramienta Statistics.
Primer estirado de la imagen usando el módulo HistogramTransformation.
Voy a tratar de evitar el crecimiento de los halos de las estrellas durante el estrechado protegiéndolos y reduciéndolos con distintas herramientas. Uso el script ExtractWaveletLayers para extraer la layer _01 y el residual.
Uso la Layer_01 como máscara protegiendo la galaxia y sin proteger los halos para disminuir suavemente los medios tonos con HistogramTransformation.
Uso el Residual como máscara protegiendo la galaxia y aumento los medios tonos suavemente con HistogramTransformation.
Con el módulo Starmask genero una starmask para proteger las estrellas mientras aplico HDRMultiscalTransform para comprimir el rango dinámico de la imagen y aumentar los detalles de la galaxia. Notar que la starmask tiene un valor menor en Truncation para asegurar una buena protección de los centros de las estrella ya que HDRMultiscaleTransform los afecta si no están bien protegidos.
Reducción de los halos de las estrellas protegiendo la imagen con una rangemask convenientemente hecha para que deje los halos de las estrella desprotegidos. Aplico Erosion con el módulo MorphologicalTransformation.
Genero una máscara de estructura usando StarAlignment en el modo Structure Map y luego la suavizo un poco borrando dos capas con MultiscaleLinearTranform.
Reducción de ruido y aumento de los detalles en las capas pequeñas para resaltar las estructuras protegiendo las estrellas con la máscara previa.
Saturo las estrellas y las pequeñas estructuras de la galaxia con MultiscaleLinearTransform protegiendo con la structure mask.
Nuevamente reducción de las estrellas con MorphologicalTransforamtion y protegiendo la galaxia con strcuturemask.
Ahora voy a realizar una serie de procesos para darle mas contraste a la galaxia usando diferentes máscaras en cada caso.
Genero la rangemask1 y reduzco el nivel del fondo con GammaStretch protegiendo la galaxia.
Genero rangemask2 y estiro la galaxia con AdaptiveStrech protegiendo el fondo.
Genero rangemask3 y estiro el fondo con AdaptiveStrech protegiendo el fondo.
Genero rangemask4 y comprimo el rango dinámico del halo exterior de la galaxia con HDRMultiscaleTransform protegiendo el fondo y el resto de la galaxia.
Genero rangemask5 y suavizo el halo exterior de la galaxia con la herramienta ExponentialTransformation.
Reducción de ruido al verde.
Extraigo el canal _X usando la herramienta ChannelExtraction para usarlo como máscara protegiendo el fondo y así saturar la imagen con InterChannelCuves.
Reducción de ruido en crominancia protegiendo el fondo con la misma máscara del canal _X.
Estirado de la galaxia con AdaptiveStrech protegiendo el fondo con el canal _X como máscara.
Extraigo la L de la imagen y la estiro convenientemente para tener una buena protección de la galaxia y dejando sin proteger el fondo y uso GammaStretch para reducir el brillo del fondo.
Ajusto las curvas protegiendo el fondo con la máscara del canal _X.
Operando con PixelMath con la máscaras existentes structuremap y starmask genero una nueva máscara con los halos de las estrellas para trabajar sobre ellos.
Aplico Erosion en los halos de las estrellas para reducir su brillo.
Genero otra starmask que contenga las estrellas grandes y aplico un blur sobre el centro de esas estrellas.
MultiscaleLinearTransformation en las grandes escalas para incrementar el brillo de la galaxia y bajar el del fondo.
Usando TGVInpaint voy a corregir los píxeles oscuros en el fondo. Cómo están localizados en diferente posición de acuerdo al canal, la máscara necesaria para usar en TGVInpaint será generada sobre los canales individales y la corrección llevada a cabo en tres etapas.
Cambio del fonde antes y después de usar TGVInpaint
Aunque no me gusta mucho, algunas veces puede ser útil agregarle un poco de ruido a la imagen para mejorar el fondo. Esto se hace con la herramienta NoiseGenerator.
Imagen Final