Tutorial PixInsight LE
Transformaciones Exponenciales: PIP y SMI

Por Carlos Milovic (PTeam)

:: PixInsight Home Page

0. Introducción

1. Pasos Preliminares
1.1 Crear la máscara
1.2 Seleccionar la luminancia invertida como la máscara actual
1.3 Crear la imagen a filtrar
1.3.1 Desenfocar el duplicado de la imagen original
1.3.2 Desenfocar el duplicado mediante wavelets

2. Combinar las imágenes original y desenfocada
2.1 SMI
2.2 PIP

3. Comparación entre los métodos SMI y PIP

4. Conclusiones

5. El proceso ExponentialTransform en PixInsight Standard



0. Introducción

Bajo el nombre de transformaciones exponenciales agrupamos un conjunto de operaciones entre imágenes que tienden a aumentar el contraste en las sombras, evitando al mismo tiempo incrementar el ruido, y preservando la información en las zonas brillantes de las imágenes. En el presente tutorial revisaremos dos técnicas: SMI (Screen-Mask-Invert) y PIP (Power of Inversed Pixels), en sus formas más básicas. En primer lugar, revisemos los fundamentos de ambos procedimientos.

Nuestra intención es incrementar el contraste en las sombras, para poder hacer más visible la información más débil. Por ejemplo, esto significa revelar más nebulosidades en una foto de cielo profundo. Esto es muy fácil de hacer utilizando transformaciones de histogramas o curvas, pero existen dos problemas. Al aumentar el valor de los píxeles en las sombras no sólo hacemos visible la información. Ya que ella se encuentra casi en el mismo nivel del ruido de fondo, éste también se verá amplificado, haciéndose más visible. Otro problema es que comprimimos la información en los tonos medios y luces altas, y es posible que saturemos los objetos más brillantes. Por eso, habría que aplicar dicho proceso de forma selectiva, sólo a los niveles más bajos, y cuidar de no amplificar el ruido presente.

Aplicar selectivamente un proceso es relativamente sencillo en PixInsight: utilizamos una máscara. Y la máscara más sencilla es la luminancia invertida. Esto protegerá las estrellas más brillantes, y los objetos que sean significativamente luminosos. Para proteger más información, podemos modificar la máscara, ajustar los puntos negro y blanco, y el balance de tonos medios (o usar las curvas).

El problema es entonces que nuestro proceso amplifique solamente la información y no el ruido. Típicamente el ruido tiene una frecuencia alta de ocurrencia, y tamaños pequeños. Entonces, la estrategia más sencilla para eliminarlo es utilizar un filtro de paso-bajo (low-pass). Tales operaciones incluyen la mediana, el promedio, filtros Gaussianos y otras convoluciones. Sin embargo, dichos procesos tienden a difuminar los bordes, perdiendo la definición de la imagen.

Teniendo todo esto en cuenta, diseñaremos las transformaciones exponenciales como operaciones entre imágenes (píxel a píxel) que involucren a la imagen original, que aportará la definición necesaria, y otra imagen convolucionada (filtrada) que esté básicamente libre de ruido, y que preserve a grandes rasgos la iluminación de la imagen. Dicha operación deberá ser enmascarada apropiadamente para que afecte selectivamente sólo a las zonas más oscuras de la imagen. Cabe recordar que la operación entre ambas imágenes debe incrementar los valores de los píxeles.

En este tutorial hablaremos de dos procedimientos en particular, SMI (Screen Mask Invert) y PIP (Power of Inversed Pixels), y cómo aplicar ambas técnicas con PixInsight LE 1.0.1 o superior.


1. Pasos Preliminares

La imagen siguiente servirá para mostrar ejemplos prácticos de implementación de los procedimientos SMI y PIP:


NGC 6888, la Nebulosa Creciente en Cygnus. Cuatro exposiciones de una hora guiadas manualmente, obtenidas sobre película Kodak E200 forzada dos puntos, a través de un telescopio Meade LX200 12" con guía fuera de eje Lumicon Giant Easy Guider a f/7 y un filtro IDAS LPS. Imagen por Juan Conejero y Maribel Carracedo, obtenida en Julio de 2003, bajo condiciones de intensa polución lumínica.

La imagen ha sido previamente procesada con PixInsight Standard 1.0 beta (build 129). Los cuatro originales fueron ecualizados en brillo y balance de color, alineados, y promediados. Se generó un modelo sintético del fondo, el cual fue restado para corregir el viñeteo. Finalmente, se utilizó una transformación de curvas para lograr un fondo neutro. No se realizaron posteriores cambios para realzar las regiones débiles de las nebulosidades y detalles. La imagen original tiene 2048x2048 píxeles. Nuestro objetivo es utilizar las técnicas SMI y PIP para mejorar esta imagen.


1.1 Crear la máscara

El primer paso a seguir va a ser la creación de la máscara que protegerá las zonas brillantes de la imagen. El proceso ExtractChannels es la herramienta adecuada para comenzar:

En este caso, lo más apropiado es utilizar como máscara la luminancia invertida, ya que así podemos proteger las zonas brillantes, y aplicar el proceso sólo a las zonas oscuras. Aplicamos entonces el proceso ExtractChannels utilizando el espacio de color CIE L*a*b*, deshabilitando estos dos últimos canales. Una vez aplicado sobre la imagen, la luminancia aparecerá en una nueva ventana. Luego de invertir dicha imagen, usando Image|Invert (Ctrl-I), éste es el resultado:

La aplicación original de SMI (como veremos en la siguiente sección) utilizaba simplemente esta imagen como máscara. Sin embargo, podemos mejorar dicho proceso (junto a cualquier otra transformación exponencial) al recortar los extremos del rango dinámico de esta máscara con una transformación de histogramas. Después de este ajuste, la máscara utilizada en nuestro ejemplo es mostrada a continuación:

Además de proteger las estrellas de crecer demasiado, esta máscara protege de sobresaturación las regiones más brillantes de las nebulosas. Si se necesita una mayor protección para áreas en particular, la máscara puede ser modificada aún más con curvas u otra técnica adecuada, o incluso combinarla con otras máscaras.


1.2 Seleccionar la luminancia invertida como la máscara actual

Para que la imagen que hemos creado actúe como una máscara, debe ser selecionada como la máscara activa para la imagen original. Esto se realiza con la opción Mask > Select Mask (Ctrl-M) del menú principal, o al utilizar el correspondiente botón en la barra de herramientas. A menos que se haya cambiado este comportamiento en las preferencia globales, cuando una máscara es seleccionada PixInsight la muestra sobre la imagen enmascarada para informarle de las áreas protegidas. Seleccione Mask > Show Mask para ocultar la máscara, si es necesario.


1.3 Crear la imagen a filtrar

Para crear la imagen a filtrar (desenfocar), primero debemos duplicar la imagen original. Para eso utilizamos la opción Image > Duplicate del menú principal:


1.3.1 Desenfocar el duplicado de la imagen original

Ahora debemos decidir qué método vamos a seguir para desenfocar la imagen. En PixInsight LE, ya que no disponemos del proceso Convolution de la versión estándar, el cual nos permitiría aplicar un filtro Gaussiano o promediar, recurriremos a las mismas herramientas que tenemos a nuestra disposición para reducir el ruido, con idénticos resultados prácticos.

En particular, podemos escoger uno de los siguientes procesos: MedianFilter, SGBNR, o ATrousWaveletTransform. Utilizar un filtro de mediana no requiere mayor explicación. Sólo basta con recordar que es más efectivo cuando tenemos ruido impulsional (también llamado de tipo sal y pimienta), como lo son los píxeles calientes, y poco eficiente con ruido uniforme, como el grano de una película.

Veamos cómo podemos usar SGBNR con la finalidad de desenfocar una imagen. Básicamente, este proceso utiliza un filtro parecido a uno Gaussiano, el cual es aplicado a la imagen utilizando una función de protección de bordes, y opcionalmente también mediante una máscara de luminancia invertida. Si deshabilitamos dichas protecciones, obtendremos un filtro Gaussiano "puro". Ya que el ruido típicamente no tiene una escala muy grande, los tamaños disponibles en esta herramienta no son muy grandes, pero sin embargo son más que suficientes para nuestros fines.

Para este ejemplo, sin embargo, utilizaremos À Trous Wavelets, para ayudarlos a familiarizarse con esta herramienta.


1.3.2 Desenfocar el duplicado mediante wavelets

El algoritmo à trous de transformación discreta por wavelets se puede utilizar para suavizar máscaras o, como en este caso, imágenes auxiliares que han de ser desenfocadas. Esto se consigue simplemente al deshabilitar algunas capas de escalas pequeñas. De esta forma, las componentes de alta frecuencia son eliminadas de la imagen, lo cual equivale a aplicar un filtro de paso bajo.

En este ejemplo, la siguiente instancia de ATrousWaveletTransform realizó un trabajo bastante bueno para desenfocar la imagen. Aquí hay una captura de pantalla de la ventana À Trous Wavelets que muestra los parámetros relevantes:

Se utilizó la función de escalamiento lineal 3x3 por defecto. Fíjese en que la opción Use luminance ha sido desactivada, para permitir que la luminancia y la crominancia sean desenfocadas (todos los canales RGB). Al deshabilitar la primera capa y aplicar un peso negativo a la segunda, las componentes espaciales de alta frecuencia han sido convenientenemente removidas de la imagen. Abajo se encuentra una comparación mouseover entre el original y la imagen desenfocada con este método.


[mouseover: original vs. imagen desenfocada con wavelets]

Esto es tan sólo un pequeño efecto de desenfoque. Se puede experimentar con diferentes agresividades, y ver cómo varían los resultados. Sin embargo, desenfoques que no sean muy agresivos, o muy débiles como en este caso, tienden a hacer crecer el tamaño de las estrellas, creando un halo alrededor de ellas, perdiendo la imagen definición. Es decir, que si el desenfoque es similar al tamaño de las estrellas, podemos tener problemas.


2. Combinar las imágenes original y desenfocada

Llegó el momento de combinar apropiadamente el duplicado de la imagen original, que ha sido previamente desenfocado, con la imagen original, que tiene activa la máscara creada a partir de la luminancia invertida.

En particular, existen dos operaciones entre imágenes, las funciones PIP y SMI, que cumplen satisfactoriamente con nuestros requerimientos. Queda a elección nuestra elegir cuál de ellas utilizar, comparando los resultados obtenidos en cada caso. El proceso PixelMath ha sido implementado en PixInsight para definir y aplicar una secuencia de operaciones aritméticas y/o lógicas entre imágenes. Por tanto, PixelMath es la herramienta apropiada para realizar transformaciones exponenciales.


2.1 SMI

El origen de esta técnica viene del libro Photoshop for Astrophotographers, donde Jerry Lodriguss describe cómo realizar esta operación usando el modo Screen para combinar imágenes en Adobe™ Photoshop™. SMI toma su nombre de las iniciales que resumen los pasos a seguir en Photoshop™: Screen Mask Invert (operación screen, e invertir la máscara a utilizar).

El modo Screen no es más que simplemente multiplicar dos imágenes, habiéndolas invertido previamente, e invertir el resultado:

Screen(F,G) = ~(~F × ~G)

donde ~ denota invertir:

~X = 1 — X

En la expresión anterior, los valores de píxel se suponen en el rango real normalizado [0,1], donde 0 corresponde al negro (sin señal) y 1 al blanco (señal máxima). Este es el rango nativo utilizado por PixInsight LE.

El ejemplo siguiente muestra cómo la operación SMI puede ser implementada muy fácilmente mediante PixelMath en PixInsight LE:

Tres operaciones de invertir son necesarias para Screen, como se puede ver en la expresión anterior. También se puede apreciar esto en la figura. La opción Invert está activada para la imagen destino (target), para la copia desenfocada, y también para el resultado. Finalmente, el operador multiplicación ha sido seleccionado. La opción Rescale no es necesario tenerla activada aquí, pero puede servir para aprovechar mejor el rango dinámico.

Luego de aplicar la instancia de PixelMath mostrada arriba a la imagen de NGC6888, éste es el resultado:


2.2 PIP

Esta operación fue descubierta por Carlos Milovic, miembro del equipo de prueba y desarrollo de PixInsight (PTeam), buscando funciones alternativas a SMI que reproduzcan sus resultados, pero con una diferente intensidad, ya que en variadas ocasiones SMI da origen a tratamientos demasiado agresivos.

Así como SMI toma su nombre de las operaciones que dan su origen, PIP es llamado así por los pasos que hay que seguir en PixelMath: Power Inversed Pixels. Así, a continuación vemos la configuración necesaria para llevara a cabo esta operación:

PIP se define como:

PIP(F,G) = F^(~G)

donde ~ denota inversión, como antes:

~X = 1 — X

y el símbolo ^ representa el operador de exponenciación (potencia).En este caso, la inversa de la imagen desenfocada es usada como exponente.

Nuevamente, no es necesario reescalar el resultado, aunque hacerlo puede resultar útil. El resultado de aplicar esta instancia de PixelMath es éste:


3. Comparación entre los métodos SMI y PIP

Las funciones PIP y SMI comparten muchas características. Ambas incrementan el contraste en las sombras, incrementando el valor de los píxeles, con distinto efecto. Así, la información débil alcanza niveles donde es apreciable más fácilmente. Sin embargo, la intensidad con que actúan ambas funciones es distinta. PIP es una buena opción si el fondo se vuelve muy brillante, o si hay una pérdida muy grande de contraste general. Además, por la misma mayor agresividad de SMI, en ocasiones se produce un desbalance de los colores, que puede ocasionar tonalidades extrañas o poco agradables si algún canal es muy dominante.

Para ejemplificar esto, veamos una comparación entre ambas operaciones con la imagen de NGC 6888:

Teoricemos ahora un poco. Si comparamos ambas operaciones, pero usando la misma imagen como operador y destino (en PixelMath), obtendríamos que estas operaciones serían el equivalente a realizar las siguientes transformaciones de curvas:

Como es fácilmente apreciable, PIP prácticamente no cambia la información del cielo, que típicamente se encuentra por debajo del nivel 0.1 en el rango normalizado, y en general aumenta en menor medida la intensidad de los píxeles. Además, PIP incrementa más el contraste en un mayor rango de niveles. Recordemos que estas operaciones son siempre aplicadas a través de una máscara protectora, así que las funciones de transferencia mostradas arriba no se corresponden con las funciones SMI o PIP reales descritas en este artículo.

También se puede apreciar aquí que ambas funciones cumplen con condiciones de borde bien estrictas; no hay manera de que se pierda información debido a que los resultados se escapen del rango dinámico. Por eso, si los extremos del rango dinámico han sido previamente ajustados, reescalar da exactamente el mismo resultado.

Finalmente, tanto SMI como PIP carecen de máximos o mínimos locales entre los extremos; esto evita efectos extraños como la solarización. Sin embargo, el proceso de enmascaramiento, si la máscara no ha sido correctamente construída, puede dar lugar a apariencias extrañas, poco naturales, y éste es otro motivo para preferir transformaciones menos agresivas (usar PIP).


4. Conclusiones

Tanto SMI como PIP incrementan los detalles débiles en las imágenes sin afectar negativamente las estrellas. El ruido de fondo también es reducido, ya que una versión convolucionada con un filtro de paso bajo se combina con el original. Ajustando apropiadamente la intensidad del desenfoque, y alterando cuidadosamente la máscara, se puede obtener muy buenos resultados para muchas imágenes astronómicas de cielo profundo.

Ya que en general cualquier técnica o proceso que apliquemos a una imagen tiene alguna desventaja, parafraseando a Jerry Lodriguss: "esto es lo más cercano a obtener algo a cambio de nada". Con procedimientos sencillos aplicados a una única imagen, hemos mejorado considerablemente el original, virtualmente sin efectos negativos.


5. El proceso ExponentialTransform en PixInsight Standard

Estas dos técnicas, SMI y PIP, han sido automatizadas y agrupadas en un único proceso, llamado ExponentialTransforms, en PixInsight Standard 1.0 Beta.

Gracias a una reformulación matemática de ambas funciones hecha por Carlos Milovic, y a su ingeniosa implementación por parte del PTeam, se ha mejorado bastante el algoritmo de dichas tareas, pudiendo ajustar la fuerza con que se aplican ambas funciones, ya sea para amplificar o disminuir su efecto sobre la imagen original. Estamos trabajando en estos momentos en otras mejoras que permitirán controlar el contraste y aumento de brillo de las sombras, así como modificar la convolución aplicada para evitar aún más que objetos brillantes crezcan. Esta implementación, altamente flexible, permite experimentar con los valores de una manera más fácil y rápida, y permite tener un control casi total del resultado que se va a obtener.

Aquí vemos las curvas teóricas de PIP (rojo) y SMI (verde) del orden 1 al 5. En azul se ve una función en la que estamos trabajando. El proceso ExponentialTransforms permite órdenes menores que la unidad, los cuales dan lugar a resultados menos agresivos que los mostrados. Otra ventaja de este proceso es que nos ahorra el trabajo de crear la máscara. Si activamos la opción Luminance Mask, se usa el inverso de la luminancia automáticamente como una máscara para el resultado.



:: PixInsight Home Page