Ejemplo de Procesamiento

Fotografiando en zonas con contaminación lumínica

por Alejandro Tombolini

Introducción

Imagen de Scott publicada en Image Processing Challenges - Una imagen con mucho ruido y falta de señal - Notas principales: Contraste con Adaptive Stretch protegiendo con una máscara especial RangeMask y reducción de ruido. Fecha: Septiembre de 2013.

Procesamiento

Esta imagen resulta muy difícil de procesar debido a la falta de información y al alto nivel de ruido, y lo más recomendable para hacer es definitivamente tener más tiempo de exposición para aumentar la relación señal ruido.

No podemos esperar un buen resultado en este procesamiento, sin embargo me gusta explorar cómo las diferentes herramientas de PixInsight funcionan y es muy útil para aprender.

Para reducir el gradiente uso la herramienta DynamicBackgrounExtraction colocando las muestras cuidadosamente excluyendo las estrellas.

scott

Seleccionar una pequeña vista previa del fondo del cielo para ser usada como imagen de Reference en la herramienta BackgroundNeutralization.

scott

ColorCalibration usando la misma vista previa como imagen de referencia y la imagen completa como imagen de referencia para el blanco. Notar que he deseleccionado la detección de estructruras.

scott

Se pueden ver bandas horizontales y verticales, entonces aplico CanonBandingReduction primero horizontalmente y luego roto la imagen con FastRotation 90° en sentido horario y aplico nuevamente. Finalmente vuelvo a rotarla en sentido antihorario.

scott

scott

Primer estiramiento usando la herramienta HistogramTransformation.

scott

Ahora voy a estirar la imagen de nuevo usando AdaptiveStretch con la ayuda de la mascara que estará protegiendo el fondo. AdaptiveStretch permite obtener contraste y uso la máscara ya que hay demasiado ruido y deseo evitar que se incremente cuando aumente el contraste entre areas con ruido.
La descripción de la construción de la máscara usada, como es muy larga, está al final. Ver Rangemask1.

scott

Generar una nueva Rangemask para ser usada con InterchannelCuves protegiendo el fondo con el objetivo de incrementar la saturación en las zonas más brillantes, colocar CIE L como canal de referencia y la saturación como canal objetivo.

scott

Reducción de ruido usando la herramienta TGVDenoise y sin usar máscara.

scott

Protegiendo el fondo del cielo con Rangemask, aplico ExponentialTransformation.

scott

Reducción de ruido usando MultiscaleMedianTransformation trabajando con Adaptive en las capas 1,2,3 y 4 y protegiendo las zonas brillantes con rangemask.

scott

Reducción de rudio usando la herramienta GREYCstoration y protegiendo las zonas brillantes con rangemask.

scott

Ajuste de curvas moviendo la luminancia para dar contraste in las áreas oscuras y protegiendo las zonas brillantes con Rangemask1.

scott

Reducción de rudio: SCNR al canal verde.

scott

Nuevamente CurvesTransformation para aumentar la saturación y más contraste ajustando la luminancia sin usar máscara.

scott

Redución de ruido en crominancia usando ACDNR.

scott

Recorte de las sombras con HistogramTransformation.

scott

Para trabajar sobre las estrellas primero construyo una máscara de estrellas y protegiendo el fondo aplico MorphologicalTransformation en las estrellas.

scott

Finalmente CurvesTransformation para incrementar la saturación y la luminosidad de las estrellas.

scott

Resample e imagen final:

scott

Rangemask1:

Dos duplicados de la imagen. En uno de ellos aplico ATrousWaveletTransform borrando la capa de 256 pixeles para tener solo las estrellas.

scott

Con PixelMath resto "cygnus_40_60sec_clone1" de "cygnus_40_60sec_clone"

scott

Reducción de ruido a la imagen sin estrellas con TGVDenoise.

scott

Duplico nuevamente "cygnus_40_60sec_clone" y usando ATrousWaveletTransform elimino las capas superiores dejando solamente las de 1,2 y 4 pixeles.

scott

Con PixelMath resto "cygnus_40_60sec_clone_clone" de "cygnus_40_60sec_clone"

scott

Nuevamente borro las capas 1,2,3 y 4 para suavizar.

scott

Duplico otra vez "cygnus_40_60sec_clone" y usando ATrousWaveletTransform dejo sólo las capas 1,2,3,4 y 5.

scott

Con PixelMath resto "cygnus_40_60sec_clone_clone1" de "cygnus_40_60sec_clone".

scott

Usando el script ExtractWaveletLayers extraigo el residual.

scott

Con la herramienta RangeSelection genero Rangemask1 sobre el residual.

scott

Última actualización: 27/11/2023 03:45 UT