Está en la página 1de 26

Tutorial PixInsight LE

Estrategia Divide y Vencerás para Reducción de Ruido: Wavelets


+ SGBNR
Tutorial por Juan Conejero (PTeam)

Traducción por Carlos Milovic (PTeam)


Imagen original H de Sharpless 2-240 (Simeis 147) por Richard Crisp

:: PixInsight Home Page

0. Introducción

1. Una primera mirada a la imagen raw

2. Ajustes iniciales de histograma

3. Ajustes iniciales de curvas

4. Reducción de ruido de pequeña escala: wavelets

4.1 Analizar la distribución del ruido

4.2 Optimizar los parámetros en la ventana À Trous Wavelets

5. Reducción de ruido de gran escala: SGBNR

5.1 Primer intento con los parámetros de SGBNR

5.2 Construir una máscara para SGBNR

5.3 Aplicar SGBNR mediante una máscara

6. Ajustes finales

6.1 Recortar segmentos de histograma sin usar

6.2 Ajustes finales de curvas

7. Evaluación de los resultados

8. Pruébelo usted

0. Introducción
Tal como han sido implementados en PixInsight LE 1.0.1, los algoritmos à trous de transformación discreta por wavelets y
SGBNR (Selective Gaussian Blur Noise Reduction, Reducción de Ruido por Desenfoque Gaussiano Selectivo) son
herramientas muy poderosas para la reducción de ruido. Esto es especialmente cierto cuando ambos procesos trabajan
conjuntamente. La razón es que cada uno de ellos, tomado por separado, es particularmente bueno allí donde el otro carece
de eficiencia: las técnicas de análisis multiresolución (o multiescala), como wavelets, son muy eficientes para aislar el ruido en
frecuencias espaciales elevadas, esto es, el ruido que ocurre a escalas muy pequeñas en las imágenes; SGBNR, por otra
parte, es una poderosa herramienta para atacar el ruido en escalas dimensionales mayores.

Cuando el usuario tiene la experiencia necesaria para ajustar los parámetros de SGBNR y wavelets de forma precisa,
virtualmente no hay ninguna situación en la cual el ruido no pueda ser eliminado sin perder detalles de la imagen. Esto es lo
que trataremos de demostrar en el presente tutorial.
Copyright © 2005 por Richard Crisp

La imagen original utilizada en este ejemplo ha sido amablemente cedida por Richard Crisp. Es una maravillosa toma de gran
campo realizada con un filtro H de un débil y extendido objeto de cielo profundo: Sharpless 2-240, conocido también como
Simeis 147, un remanente de supernova en Tauro. Richard tomó esta imagen desde su patio trasero en Castro Valley,
California, el 14 de Enero de 2005. Datos técnicos:

 Objetivo fotográfico de formato medio Pentax Takkumar 150mm f/2.8 (diafragmado a f/4)
 Cámara SBIG ST10XME (autoguiada), operada a –30°C
 Enfoque digital DF2 de Finger Lakes
 Rueda de filtros CFW1 de Finger Lakes
 Filtro AstroDon H de 6nm (50 mm, sin montar)
 13 exposiciones de 15 minutos
 3 horas y 15 minutos de tiempo total de exposición

Puede ver más información sobre esta imagen y el equipo utilizado en el sitio web de Richard Crisp.

En la siguiente comparación mouse-over se puede evaluar los resultados de nuestros procedimientos de reducción de ruido.
Es un pequeño corte, pero representativo, de la imagen a su tamaño completo. Si desplaza el cursor sobre la figura, verá la
imagen con los mismos ajustes de brillo y contraste, pero sin reducción de ruido. Hemos incluido más comparaciones de este
tipo al final de este trabajo.

Si está viendo este documento en línea, incluso con una conexión de banda ancha, por favor sea paciente y espere
hasta que las imágenes mouse-over sean descargadas por su navegador web; los tamaños de los archivos son
necesariamente grandes para evitar artefactos por la compresión JPEG.
[cursor afuera: incremento de contraste, reducción de ruido wavelets+SGBNR aplicada]
[cursor encima: mismo incremento de contraste, pero sin reducción de ruido]

Lo que sigue es una descripción detallada, paso a paso, del procesamiento completo que realizamos para esta imagen.

1. Una primera mirada a la imagen raw

No es ninguna sorpresa el hecho de que la imagen en bruto parezca casi completamente negra cuando se la abre por primera
vez. Es una situación normal cuando se trabaja con imágenes raw tomadas por un CCD que el rango dinámico efectivo sea
mucho menor que el rango dinámico disponible. En este caso, el 99% del total de los píxeles está contenido es un pequeño
segmento inicial de 2200 niveles en el rango nativo de 16 bits. Esto puede ser verificado al inspeccionar el histograma de la
imagen en bruto, como se muestra en la figura siguiente.

La ventana de Histogramas en PixInsight LE muestra la


función de histograma para la imagen en bruto utilizada en
este ejemplo de procesamiento.

Observe cómo casi toda la información de la imagen es


contenida en un pequeño segmento, a grandes rasgos desde 0
a 0.03 en el rango dinámico real normalizado utilizado por
PixInsight. En el rango de 16 bits esto corresponde a los
primeros 2200 niveles discretos, como se muestra en el panel
de información en la ventana, que se actualiza cuando el
cursor del ratón se sitúa sobre el gráfico del histograma.

Más aún, una cantidad significativa de la información de la imagen está limitada a un pico estrecho, localizado en torno al nivel
510 en 16 bits, como se puede ver en la siguiente figura.
La función de histograma para la imagen en bruto, como en la
figura anterior, pero esta vez usando la opción de ampliación
en la ventana Histograms de PixInsight. El histograma es
mostrado aquí ampliado 25 veces, tanto horizontal como
verticalmente.

La mayoría de la información de la imagen está concentrada


dentro de un pico estrecho, precedido por un segmento inicial
prácticamente en desuso.

La ventana Histograms permite en PixInsight LE variar la


ampliación y posición de manera interactiva usando
combinaciones del teclado y el ratón. Cuando la ventana
Histograms es la ventana activa, usted puede:

 Presionar la tecla Espacio, pulsar sobre el gráfico de


histograma, y arrastrar para mover la visualización
en las cuatro direcciones del plano.

 Presionar Ctrl+Espacio, o Ctrl+Alt+Espacio, y hacer clic


para ampliar o reducir la visualización del
histograma, respectivamente, centrando la vista en
la ubicacion de clic.

Note que este sistema es el mismo utilizado para navegar en


ventanas de imágenes. Fíjese también que el mismo esquema
de navegación ha sido implementado para las ventanas
Curves y Color Saturation.

Está claro que tenemos que expandir los valores de los píxeles para ocupar una porción mucho mayor del rango dinámico
disponible, como nuestro primer paso de procesamiento. Partir con un apropiado contraste y niveles de brillo es un paso previo
crucial cuando se procesan imágenes como ésta. El hecho de que la información en la imagen está restringida a un rango muy
angosto de valores complica las cosas y requiere herramientas de procesamiento con una gran precisión, como las que
tenemos implementadas en PixInsight.

2. Ajustes iniciales de histograma


Hay dos cosas que podríamos hacer ahora para simplificar este paso y varias acciones posteriores:

 Cortar una gran poción del histograma en las altas luces (derecha), ya que sólo existen unos pocos elementos en la
imagen que están representados con dichos valores —principalmente estrellas brillantes.

 Aplicar todo el ajuste de histogramas en varios pasos. Esto es más sencillo, ya que en cada paso empezaríamos con
una "mejor" función de histograma, más fácil de entender y más manejable.

Por un lado, cortar las altas luces en los histogramas, incluso si esto implica tan sólo un píxel, es un procedimiento que atenta
contra nuestras más profundas convicciones: nosotros siempre queremos preservar toda la riqueza del colorido de las
estrellas y los niveles de grises, tanto para las sombras como para las altas luces.

No seguiremos el segundo camino principalmente porque queremos demostrar algo aquí. La ventana Histograms en PixInsight
permite ajustes quirúrjicos, de alta precisión, así que una sola operación puede llevar a cabo perfectamente el trabajo, incluso
en casos extremos como este. No existen mayores problemas, sin embargo, en dividir una transformación dificil de
histogramas en varias operaciones individuales, debido al formato numérico en punto flotante de 32 bits que utiliza PixInsight
internamente para representar valores de píxel.

Abajo está la ventana Histograms cargada con los parámetros usados en el presente ejemplo. Fíjese que se ha definido una
transformación de medios tonos extremadamente agresiva (0.00050). Y aún más importante, el punto de corte en las sombras
(punto negro) ha sido cuidadosamente establecido para evitar cualquier pérdida de información significativa. Podríamos haber
ido un poco más allá de 0.0075, pero cuando se corta en las sombras, usualmente menos es mejor.
Al usar las características de zoom y movimiento en la
ventana Histograms, se puede definir transformaciones muy
precisas. En este caso, cortar un 3% del total de los píxeles
en las sombras es un ajuste crítico, ya que si se usa un valor
de corte muy alto se destruirá información significativa. El
valor de 0.0075 para el corte en las sombras ha sido
cuidadosamente verificado para asegurarnos de que
solamente se ha puesto a cero píxeles ruidosos en el cielo de
fondo.

Cortar una porción inicial del histograma más allá de la pendiente ascendente es una práctica poco usual. Éste es un ajuste
extremadamente crítico. Lo hacemos aquí sólo después de asegurarnos de que los niveles del cielo de fondo —que están
enormemente dominados por ruido en este caso— están efectivamente más a la derecha que el punto de corte seleccionado.

Para obtener buenas estimaciones de los niveles del cielo, se debe utilizar el modo de lectura en PixInsight para medir valores
de la mediana con tamaños de lectura relativamente grandes en áreas relevantes de la imagen. Si no sabe de qué le estamos
hablando ahora, quizás debería revisar la correspondiente sección en la documentación oficial.

En Histograms, con la opción Output (Salida) activada y sin zoom, se puede ver una predicción de la función de histograma
final, tal como será luego de aplicar la transformación a toda la imagen (ya que se ha seleccionado Image01 en la ventana
Histograms):
[cursor afuera: luego de aplicar la transformación de histograma]
[cursor sobre: mismo recorte, sin aplicar la transformación]

En la comparación mouse-over de arriba, se puede observar el efecto de esta transformación de histograma. Note que hemos
dejado los niveles del fondo un poco elevados a propósito. Un ajuste adicional de curvas nos permitirá definir valores más
correctos para el fondo.

La única manera que tenemos para lograr un fondo más oscuro con los histogramas sería ahora cortar aún más píxeles en las
sombras, lo que es una práctica bastante peligrosa: ya que la forma del histograma está dominada por ruido de fondo, hemos
de proceder con cautela para asegurarnos de que estamos cortando ruido solamente, pero no píxeles significativos. Así que
es mejor ser conservadores al cortar en las sombras en casos difíciles como éste. Si se nos presenta la duda, dividiremos el
proceso en varios pasos para trabajar con histogramas más manejables.

En todos los casos, pero especialmente cuando nos enfrentamos a transformaciones delicadas, como este ajuste de
histograma, es muy importante llevar a cabo un trabajo de pruebas concienzudo en un número suficiente de
previsualizaciones, convenientemente distribuidas sobre regiones significativas de la imagen. Trate de identificar áreas de
cielo de fondo libres para medir valores de la mediana de los píxeles; tal como se dijo anteriormente, estas lecturas pueden
entregar buenas estimaciones de los niveles del fondo.

En nuestro ejemplo, la siguiente captura de pantalla nos muestra algunas previsualizaciones que usamos durante este primer
paso de procesamiento.
En muchas ocasiones, es también bastante útil definir una previsualización que cubra casi totalmente la imagen.

Finalmente, la ventana de previsualización en tiempo real (disponible al activar la opción "R-T" en la ventana de Histogramas)
sirve de muy poco o para nada en casos como éste, ya que las transformaciones son tan drásticas que exceden por mucho las
capacidades de la representación interna de 8 bits utilizada para estas previsualizaciones en tiempo real.

3. Ajustes iniciales de curvas


Luego de los histogramas, la imagen está aún lejos de tener un equilibrio razonable de brillo y contraste. En particular, el cielo
de fondo está representado por valores de píxel muy altos, y tener las nebulosidades más contrastadas sería muy deseable.
La herramienta ideal para remediar este problema es Curves.

La ventana Curves en PixInsight LE 1.0.1, cargada con los parámetros


usados para el presente ejemplo.

Esta curva oscurece el fondo y aclara las altas luces, pero deja los
valores más altos de los píxeles sin modificar para evitar la saturación de
objetos brillantes. Abajo hemos incluido una comparación mouse-over
antes/después.

[cursor afuera:
después de aplicar la trasnformación inicial de curvas]
[cursor sobre:
antes de las curvas, justo después de la transformación de histogramas]
Por supuesto que podríamos usar una transformación de curvas bastante más agresiva, oscureciendo más el cielo y aclarando
más las nebulosas. Si procediéramos de esta manera ahora, sin embargo, la siguiente reducción de ruido es muy probable
que no pudiera lograr tan buenos resultados. Esto ocurriría porque si incrementásemos el contraste en presencia de ruido
severo, habría píxeles muy cercanos al negro y al blanco absolutos muy próximos entre sí, a lo largo de toda la imagen. Bajo
estas circunstancias el ruido se puede volver muy difícil, si no imposible, de eliminar.

4. Reducción de ruido de pequeña escala: wavelets


Una inspección a tamaño real, o bajo un moderado acercamiento, revela que la imagen está repleta de ruido en escalas muy
pequeñas. Sabemos esto porque vemos estructuras que varían mucho en brillo, distribuídas aleatoriamente, en el rango de
uno a tres pixeles de tamaño (estos tamaños pueden variar, no hay que tomar esto al pie de la letra). En la jerga del
procesamiento de imágenes, esto se llama ruido en frecuencias espaciales altas, o, en terminología multiescala, ruido de
pequeña escala.

Esta vista ampliada 2x muestra claramente el ruido de pequeña escala.


Tenemos que tener presentes algunas ideas clave para entender cómo funciona el procesamiento por wavelets, y qué es lo
que los wavelets pueden hacer por nosotros. En resumen, esto es lo que debería saber:

 Los wavelets le permiten separar la imagen en diferentes niveles de escala. Este procedimiento de separación trabaja
produciendo una capa de wavelets para cada escala individual. Las capas de wavelets son simplemente imágenes
que contienen sólo estructuras dentro de un rango de tamaños limitado.

 Se puede usar los wavelets para aislar elementos pequeños en la imagen en una sola capa de wavelets, elementos de
tamaño medio en otra capa, elementos más extendidos en una tercera capa, y así sucesivamente. Una vez que se
han aislado ciertas estructuras de particular interés, es relativamente fácil modificarlas sin afectar al resto de la
imagen.

 La idea básica detrás de los wavelets es: aislar lo que se quiere cambiar, definir cómo se cambiará, y luego combinar
las capas de wavelets modificadas para obtener una imagen procesada. La interfaz y las herramientas de PixInsight
realizan la mayor parte de este proceso de separación/combinación por usted.

 Para propósitos de reducción de ruido, obviamente lo que queremos es aislar el ruido del resto de la imagen. Una vez
que hemos aislado el ruido en una o más capas de wavelets, se puede atacar directamente si alterar los detalles
significativos.

 Desafortunadamente, las cosas no se comportan tan bien en el mundo real: es frecuente encontrar que el ruido ocurre
en escalas donde también están definidos detalles significativos. Por ejemplo, usualmente los bordes pronunciados y
nítidos, y el ruido de alta frecuencia, comparten uno o más niveles de escala.

 La implementación del procesamiento por wavelets en PixInsight incluye un número de recursos específicamente
diseñados para tratar con estas situaciones conflictivas. El más importante es el hecho de que se puede definir una
reducción de ruido y el realce de detalles al mismo tiempo, independientemente para cada capa de wavelets. De esta
manera se puede previsualizar cómo cada aspecto interactúa con el otro, lo cual es esencial para lograr un conjunto
de parámetros finamente ajustados.

 Otros recursos implementados son también muy importantes para adaptar la manera en que diferentes escalas de la
imagen son aisladas para propósitos específicos (reducción de ruido, recuperación de imágenes, realce de grandes
escalas, extracción de características, etcétera), siendo el más importante la posibilidad de definir funciones de escala
personalizadas. Ya que nuestra aproximación a los wavelets es introductoria en este tutorial, hemos de limitarnos y no
profundizar más en éste y otros temas; sólo queremos que sepa que tiene a su disposición mucho más poder de
procesamiento, cuando esté listo para explorarlo.

Ahora que ya conoce los hechos fundamentales, veamos cómo se pueden aplicar al tema de este tutorial. Al principio de esta
sección hemos dicho que hay una gran cantidad de ruido de pequeña escala en la imagen. El procesamiento con wavelets es
la mejor manera de eliminar este tipo de ruido.

4.1 Analizar la distribución del ruido

Un breve y rápido análisis será muy informativo acerca de la manera en que se distribuye el ruido a través de diferentes
escalas dimensionales en la imagen. En palabras más simples, queremos saber qué capas de wavelets en particular
contienen el ruido en esta imagen, como un necesario primer paso para poder aislarlo y eliminarlo.

Usaremos la ventana de procesamiento À Trous Wavelets en su modo de previsualización. Este modo especial de operación
permite investigar el contenido de las capas de wavelets individualmente. La siguiente figura muestra este modo en acción,
para un pequeño corte de la imagen ampliado 2x.
[Previsualización original, vista a 2:1]
[Previsualización de la capa #1]
[Previsualización de la capa #2]
[Previsualización de la capa #3]
[Previsualización de la capa #4]

La ventana À Trous Wavelets trabajando en modo de


previsualización (fíjese en la opción Preview) puede ser utilizada
para investigar el contenido de diferentes capas de wavelets
individualmente. Coloque el cursor sobre sucesivos enlaces arriba
para ver cómo trabaja (nuevamente, sea paciente mientras las
imágenes se descargan).

Es evidente que la primera capa de wavelets en esta imagen


contiene solamente ruido. Nada significativo está presente en la
capa #1; ni siquiera las estrellas más pequeñas.

La segunda capa de wavelets incluye algo de ruido, pero también


muchas estrellas pequeñas, y quizá algunos bordes muy
pronunciados de nebulosas.

El ruido es mucho menos detectable en la tercera capa de


wavelets. Gran parte de los elementos nebulares y estrellas están
presentes aquí.

Finalmente, la cuarta capa de wavelets es también esencial para


objetos tanto estelares como no estelares en esta imagen. El ruido
es muy escasamente detectable.

En el modo de previsualización, la ventana À Trous Wavelets produce imágenes invertidas. Esto ha sido implementado de
esta manera para evitar el uso accidental de este modo especial de trabajo, que no pretende realizar el procesamiento real,
sino que pretende ser exclusivamente un medio para explorar las diferentes capas de wavelets.

Para usar el modo de previsualización en la ventana À Trous Wavelets, se debe trabajar en una o más previsualizaciones,
convenientemente definidas sobre áreas de interés en la imagen. Abajo se puede ver la configuración utilizada para construir
la figura precedente. Recuerde el uso práctico de los objetos de arrastre de procesos (process drag objects) —esas pequeñas
cosas en la esquina inferior izquierda de las ventanas de procesamiento, con un símbolo "<".
4.2 Optimizar los parámetros en la ventana À Trous Wavelets

A partir del análisis anterior, una cosa queda clara: la primera capa no contiene información significativa. Es también obvio que
la mayor parte del ruido está contenida en las escalas de la primera capa. Así, ¿qué tal si quitamos completamente la primera
capa para deshacernos de todo ese ruido?

La siguiente figura muestra qué pasa si se deshabilita la primera capa de wavelets y se prueba esta transformación en la
previsualización vista arriba.
[Previsualización original, aumentada a 2x]
[Capa #1 deshabilitada]
[Capas #1 y #2 deshabilitadas]
[Capas #1, #2 y #3 deshabilitadas]

Para deshabilitar la primera capa, basta con hacer doble clic en la


correspondiente fila en la lista de capas de la ventana, en la
primera columna de la misma (titulada Level, o nivel). Esto
cambiará la marca verde por una 'X' roja, como se muestra a la
izquierda.

Coloque el puntero del ratón arriba sobre sucesivos enlaces para


ver qué sucede si una capa determinada de wavelets es
deshabilitada.

Deshabilitar la primera capa es una muy buena idea en este caso.


Ya que contiene solamente ruido, deshabilitándola se puede
eliminar mucho ruido de pequeña escala sin afectar a ningún
detalle.

Desafortunadamente no se puede simplemente deshabilitar la


segunda y la tercera capa. Si lo hacemos, la imagen se emborrona
severamente. Esto ocurre pues estas capas no sólo describen
ruido, sino también muchas estructuras importantes en la imagen.

Así que deshabilitaremos la primera capa, eso es claro, pero definitivamente necesitamos algo más refinado para la segunda,
y quizás también para la tercera. Lo que necesitamos son parámetros de reducción de ruido en la ventana Á Trous Wavelets.
Estos parámetros funcionan con un sistema por capas, es decir, se puede definir un procedimiento de reducción de ruido para
cada capa individualmente, dependiento de su contenido en ruido y sus características.

Fíjese también que se puede definir tanto parámetros de reducción de ruido como un incremento del valor Bias para una capa
dada, al mismo tiempo. Esto implica que se puede suavizar una capa y realzar sus bordes en una misma operación. Esto
puede parecer un contrasentido a primera vista, pero de hecho es un elemento muy poderoso de la implementación en
PixInsight. La figura que sigue demuestra lo bien que esto puede llegar a funcionar.
[Previsualización original, aumentada a 2x]
[Capa #1 deshabilitada]
[Capa #2 suavizada (params. reducción de ruido)]
[Capa #2 suavizada y con bias]
[Capas #2 y #3 suavizadas y con bias]

Los parámetros n y k de reducción de ruido hacen referencia al


número de iteraciones y al tamaño del filtro de suavizado usado,
respectivamente.

El algoritmo de reducción de ruido implementado en la ventana À


Trous Wavelets trabaja mejor como un procedimiento iterativo. En
general, trate de usar varias iteraciones con cantidades de
reducción de ruido menores, en vez de un valor alto y una sola
iteración. El procedimiento iterativo es mejor para preservar
bordes y también más efectivo para reducir el ruido.

El tamaño del filtro (parámetro k) depende del tamaño y escala


del ruido que será eliminado. Para suavizar escalas de 1 a 3
píxeles, usualmente funcionan bien tamaños de filtro entre 3 y 5.
Para escalas mayores puede ser necesario usar tamaños de filtro
de 7 a 9, pero esto es mucho menos frecuente.

En la comparación mouse-over de arriba, note que se puede


combinar la reducción de ruido con el bias. Esto puede ser muy
efectivo para compensar por la relativa pérdida de definición en
los bordes que la reducción de ruido podría introducir.

A partir de la comparación recién expuesta, se puede decidir el juego final de parámetros de reducción de ruido que usaremos
con los wavelets. Parece evidente que las mejores opciones son:

 Suprimir la primera capa de wavelets


 Aplicar reducción de ruido, combinada con un incremento ligero de bias, en la segunda capa.
 Dejar el resto de las capas sin cambios.

Suavizar la tercera capa no añade mejoras importantes a la reducción de ruido, con el riego de borrar algún detalle fino.
Nuestros parámetros finales son:

 Capa #1: Deshabilitada


 Capa #2 Bias = +0.1, Cantidad de Reducción de Ruido (Amount) = 0.75, Iteraciones = 3, Tamaño del filtro = 5.

El efecto de estos parámetros puede ser verificado en la anterior comparación mouse-over (Capa #2, suavizada y con bias).

5. Reducción de ruido de gran escala: SGBNR


La pregunta ahora es: ¿hemos terminado con la reducción de ruido para esta imagen? Todavía existe mucho ruido a escalas
dimensionales grandes que pide a gritos ser eliminado. Este ruido es más prominente en áreas de cielo de fondo, donde la
relación señal/ruido es débil por naturaleza.

En general, este tipo de ruido no puede ser tratado eficientemente con wavelets. ¿Por qué? Normalmente el ruido de gran
escala está fuertemente mezclado con estructuras importantes de la imagen en un variado rango de tamaños. Por ejemplo,
muchas estrellas de tamaño moderado y la mayoría de las fibras nebulares en la imagen usada en este tutorial tienen tamaños
característicos muy cercanos a los tamaños con lo que identificamos al ruido de gran escala. A tales grandes escalas, incluso
un cambio insignificante tiene un impacto dramático en toda la imagen, en términos de detalles y contenido en información.

Por esta razón, una estrategia de reducción de ruido estrictamente basada en análisis multiescala, como son los wavelets,
puede tener grandes dificultades para distinguir entre ruido y estructuras significativas más allá de cierto límite de escalas
características. Más allá de dicho límite, la mejor manera para eliminar el ruido preservando el detalle es usar estrategias
basadas en el análisis de variaciones locales de brillo. SGBNR es básicamente esto: suavizar la imagen en áreas de bajo
contraste, mientras se preservan variaciones locales fuertes de brillo, o bordes.

¿Por qué SGBNR no es particularmente bueno para suprimir el ruido de pequeña escala? Porque este tipo de ruido consiste
en variaciones de brilo entre estructuras cercanas de tamaños muy pequeños. Cuando el algoritmo SGBNR se encuentra con
este tipo de estructuras, puede tratar de preservarlas si las interpretara como bordes que hay que proteger. De hecho, SGBNR
incluye algunos mecanismos para evitar cometer tales errores, pero ante fuerte ruido de pequeña escala, estos mecanismos
pueden ser insuficientes. Cuando esto ocurre, el resultado neto es un trabajo de reducción de ruido deficiente.

Ahora puede comprender por qué la combinación wavelets+SGBNR puede llegar a ser tan eficiente: se trata de vencer el
problema de reducción de ruido al dividirlo para usar la herramienta más apropiada en cada caso.

5.1 Primer intento con los parámetros de SGBNR

Ahora que hemos aplicado wavelets a la imagen, probemos con SGBNR. Digamos que estamos un poco carentes de
entusiasmo y tan sólo queremos ver cómo funcionan los parámetros por defecto... ¡un completo desastre! Con el juego por
defecto de parámetros de SGBNR, la imagen se emborrona y los detalles se pierden casi completamente. SGBNR es un
proceso muy sensible y sus parámetros deben ser ajustados finamente para cada imagen particular. Esto puede ser muy
intimidatorio al principio, pero no es tan dificil como parece: sólo se requiere un poco de práctica, eso es todo.

Quizás los parámetros más importantes en SGBNR son los de protección de bordes (edge protection). Estos parámetros
definen cómo el algoritmo protege los lados oscuros o brillantes de los bordes de sufrir un excesivo suavizado, lo que es
crucial para asegurar que ningún detalle se pierde. La siguiente figura muestra unos experimentos iniciales. No diremos nada
de los parámetros overdrive de protección de bordes en este tutorial; éstos son mucho menos frecuentemente usados,
requiriendo un análisis más profundo.

[Imagen procesada con Wavelets, aumentada a 2:1]


[Parámetros por defecto de SGBNR]
[Umbral de protección de bordes brillantes reducido]
[Ambos umbrales, bordes oscuros y brillantes, reducidos]

El juego por defecto de parámetros de SGBNR es claramente inadecuado


para esta imagen, ya que conduce a un severo emborronamiento. El juego
por defecto no tiene la intención de ser una aproximación inicial para
ninguna imagen en particular, ya que no existe tal cosa para el algoritmo de
SGBNR.

Al disminuir el umbral de bordes brillantes (bright edges) SGBNR empieza a


proteger más lados brillantes de bordes en esta imagen. Esto se traduce en
una mejora significativa en este caso, porque las estrellas y elementos
nebulares son mucho mejor conservados.

Finalmente, reducir el umbral para los lados oscuros (dark edges) también
hace que SGBNR sea más protector para los lados oscuros, lo que conserva
más detalles nebulares, pero tiene la desventaja de efectuar una reducción
de ruido más pobre en áreas del fondo.
Hasta ahora no tenemos razón alguna para estar contentos con nuestras pruebas de reducción de ruido con SGBNR.
Pareciera que utilizar parámetros de umbral de protección de bordes más restrictivos es necesario, como arriba, pero no es
suficiente para lograr buenos resultados. Juguemos ahora con la desviación estándar del filtro y los parámetros de intensidad
(amount) e iteraciones.

[Imagen procesada con Wavelets, aumentada a 2:1]


[Usando un filtro grande con una sola iteracion y gran intensidad (amount)]
[SGBNR recursivo: tamaño pequeño, muchas iteraciones, y menor
intensidad]

Usar un filtro de paso bajo relativamente grande, con desviación estándar


de 4.0, e incrementar la fuerza del filtrado (amount) no sirve en este caso.
Esto ocurre porque el mecanismo de protección de bordes impide que el
filtro actúe para suavizar detalles relevantes.

Cuando el parámetro de intensidad es menor que la unidad, y se utiliza más


de una iteración, se está definiendo un procedimiento recursivo: con cada
iteración, una parte de la imagen resultante de la iteración previa es
reutilizada en la imagen de entrada.

En general, usar múltiples iteraciones puede conducir a mejores resultados


de reducción de ruido, ya que de esta manera el mecanismo de protección
de bordes tiene varias oportunidades para converger hacia un
comportamiento correcto. Esto conlleva una buena protección de bordes,
pero al mismo tiempo una suavización más eficiente sobre las áreas de bajo
contraste.

En este caso, sin embargo, el resultado es bastante insatisfactorio: observe


que hemos destruído muchos detalles finos en regiones nebulares brillantes.

Así, multiples iteraciones, un filtro pequeño, y parámetros relativamente restrictivos de protección de bordes parecen ser el
camino a seguir. Pero aún no podemos convencernos con los resultados logrados. Como se puede ver en la figura anterior,
estamos pagando un alto precio: muchos detalles en las nebulosas han sido emborronados. Por supuesto que esto no es lo
que deseamos. ¿Qué ocurre?

5.2 Construir una máscara para SGBNR

Con el juego de parámetros utilizado en la figura anterior, la reducción de ruido es bastante aceptable para áreas del cielo de
fondo, pero claramente es excesiva para regiones nebulares brillantes.

En muchas imágenes, SGBNR realiza un buen trabajo sin ayuda. Sin embargo, cuando hay cantidades relativamente grandes
de ruido que tienen que ser suprimidas en imágenes con variaciones débiles de contraste, SGBNR puede tener dificultades
para decidir dónde empezar a permitir el filtrado de paso bajo y dónde empezar a proteger bordes. Estamos contínuamente
mejorando nuestros algoritmos e implementaciones para hacerlos más inteligentes frente a estas condiciones difíciles (piense
en PixInsight como un sistema en fuerte evolución), pero siempre existen algunos límites. Es evidente que esto es
precisamente lo que ha ocurrido en este ejemplo.

Afortunadamente existe un medio muy fácil para evitar este problema completamente: usar una máscara para proteger
regiones sensibles. De esta manera, aplicaremos la reducción de ruido sólo donde realmente se necesita, mientras que los
detalles permanecerán completamente preservados. Trabajar con máscaras en PixInsight es tan simple como trabajar con
imágenes. De hecho, con muy pocas restricciones, casi cualquier imagen puede actuar como una máscara en PixInsight.

Así pues, construyamos una máscara de SGBNR para nuestra imagen. Para que dicha máscara funcione correctamente, debe
cumplir estas dos condiciones básicas:

 Las áreas del fondo deben permitir una operación íntegra de SGBNR, así que deben ser brillantes en la máscara.
 Las nebulosas y otras regiones brillantes deben ser protegidas, así que deben aparecer oscuras en la máscara.

Esto corresponde a una imagen invertida. Los pasos precisos para construir una máscara para SGBNR son:

1. Hacer un duplicado de la imagen (desde el menú principal: Image > Duplicate), que será nuestra máscara para
SGBNR. Esto lo hacemos de esta manera ya que estamos trabajando con una imagen en escala de grises. Para
imágenes en color, deberíamos extraer la luminancia, uno de sus canales RGB individuales, su canal V del espacio
HSV, o cualquier otro que nos sirva.

2. Invertir la máscara (Image > Invert, o simplemente presionar Ctrl-I).

3. Desenfocar la máscara ligeramente. Esto no es estrictamente necesario, pero es recomendable ya que una máscara
más uniforme puede proporcionar transiciones más suaves y valores del fondo más consistentes.

4. Usar Histogramas para ajustar el brillo y contraste de la máscara.

5. En PixInsight, es una buena práctiva el asignar identificadores significativos a la máscara (Image > Set Identifier). Por
ejemplo, "SGBNR_mask" puede ser una buena opción. Esto ayuda a identificar la máscara en las siguientes
operaciones.

Para desenfocar una imagen en PixInsight LE 1.0.1, que no tiene incluido el proceso Convolution, se puede usar wavelets. Es
muy simple: se deshabilitan algunas capas de wavelets, lo cual equivale a aplicar un filtro de paso bajo a la imagen.

Los ajustes de histogramas en el paso 4 son necesarios para hacer que las áreas del cielo de fondo sean blancas (lo que
significa que no serán protegidas por la máscara) y los objetos a proteger más oscuros (o incluso negros, lo que implica una
protección total). Cada caso es diferente; un poco de sentido común y algo de experiencia son de gran ayuda aquí.

No debería preocuparnos el proteger las estrellas y otros elementos de gran contraste al construir la máscara para SGBNR. El
mecanismo de protección de bordes de SGBNR puede realizar siempre un trabajo excelente protegiendo este tipo de objetos.
Sólo debemos concentrarnos en obtener una buena protección sobre regiones de bajo contraste, que es donde SGBNR puede
encontrar problemas.
[Paso 2. Duplicado invertido, agrandado a 2:1]
[Paso 3. Máscara desenfocada al deshabilitar capas de wavelets]
[Paso 4. La máscara para SGBNR, después de un ajuste de
histograma]

Estos son los pasos principales que son necesarios para construir
una efectiva máscara para SGBNR. Hay que mantener en mente
que los píxeles blancos en la máscara permitirán un
procesamiento total por parte de SGBNR, mientras que los píxeles
negros lo bloquearán completamente.

En el presente ejemplo, nuestra intención es lograr una buena


proteccion en las nebulosas y una fuerte reducción de ruido en
regiones de fondo.

Una vez terminada, ésta es la apariencia general de nuestra máscara para SGBNR:

5.3 Aplicar SGBNR mediante una máscara

Ahora que tenemos nuestra máscara para SGBNR lista, tan sólo tenemos que activarla para la imagen a procesar. Haga lo
siguiente:

1. Seleccione la imagen a trabajar. Desde el menú principal, seleccione Mask > Select Mask o pulse Ctrl-M.
2. La caja de diálogo Select Mask aparece. Aquí se debe seleccionar la imagen que actuará como máscara, en una lista
de imágenes compatibles. Si ha seguido nuestro consejo y asignó un identificador significativo a la máscara (como
SGBNR_mask, en este ejemplo), las cosas serán más sencillas para usted.

Ahora la máscara ha sido seleccionada y está activada. Por defecto, las máscaras son mostradas en PixInsight. A menos que
usted haya cambiado este comportamiento en preferencias globales, la imagen se verá de esta forma tras seleccionar la
máscara:

Esta apariencia tiene por objeto informarle sobre qué áreas de la imagen están siendo protegidas y cómo. Esto no cambia la
imagen en ninguna manera; es tan sólo un modo de representación visual. Para desactivar este estado y volver al modo
normal de visualización, seleccione Mask > Show Mask desde el menú principal, o haga clic sobre la correspondiente opción
en la barra de tareas para Máscaras (Mask).

La siguiente figura demuestra el poder de SGBNR al ser aplicado mediante una máscara apropiada.
[Imagen procesada con wavelets, agrandada a 2:1]
[SGBNR recursivo, enmascarado]
[SGBNR recursivo, sin enmascarar]

Una máscara apropiada puede marcar una gran diferencia al aplicar SGBNR
sobre una imagen complicada (esto es, con severo ruido y débiles
variaciones de contraste).

En este ejemplo, el efecto protectivo de la máscara conserva todos los


detalles en las regiones nebulares, pero permite una reducción de ruido
agresiva donde realmente es requerida: en el cielo de fondo y en muchas
otras áreas de bajo contraste.

6. Ajustes finales
Como una buena consecuencia de un proceso eficiente de reducción de ruido, la distribución de los valores de los píxeles es
ahora mucho más uniforme. Esto se puede observar en las funciones de histograma.

Ahora podemos aplicar ajustes de histograma y curvas para lograr un buen contraste y brillo. Esto depende particularmente de
nuestras preferencias personales. Los ajustes que mostramos son tan sólo nuestras opciones, pero en ningún caso deben ser
tomados como las mejores alternativas posibles.

La máscara usada para SGBNR, en la sección precedente, no la vamos a necesitar más; antes de continuar, por tanto, no se
olvide desabilitarla con Mask > Remove Mask o presionando Ctrl-Alt-M.

6.1 Cortar segmentos de histograma sin usar

El histograma refleja una gran ganancia en la suavidad del fondo como un segmento inicial sin utilizar. Obviamente queremos
cortar este segmento para maximizar el uso del rango dinámico disponible, pero debemos asegurarnos de que nungún pixel
será cortado (puesto a cero) en esta operación.
No es poco común que existan artefactos negros o blancos (o muy oscuros o brillantes) que puedan llevar a funciones de
histograma falsas. Esto ocurre con la imagen de este ejemplo, que tiene algunos cuadros negros como resultado de tomas
ligeramente dispares al momento de superponerlas. Cuando esto pasa, uno puede simplemente recortar la imagen en
cualquier paso del procesamiento, o incluso definir una previsualización grande para evitarnos estos píxeles problemáticos,
como hemos hecho en este caso.

Para cortar el histograma, usaremos el recorte automático (auto clipping). Para usar esta función, si no lo ha hecho con
anterioridad, haga lo siguiente:

1. Active la ventana Histograms y seleccione la imagen desde la lista de vistas (o haga clic con el botón derecho del
ratón sobre la imagen y seleccione View > Histogram). Esto calculará el histograma de la imagen, si es necesario, el
cual será mostrado en la ventana Histograms.

2. Pulse la tecla Control. El botón Auto Clip cambiará su leyenda por Setup.

3. Manteniendo Control pulsado, haga clic sobre le botón Setup.

4. La caja de diálogo de asjustes para el recorte automático (Histogram Auto-Clipping Setup) se abrirá. En este diálogo,
la caja de validación para la cantidad de recorte en las sombras (Shadows clipping) debe estar activada. La
correspondiente caja de validación para las altas luces se puede dejar desactivada si no se quiere recortar en las altas
luces (como usualmente es el caso). Introduzca el valor 0 para el recorte en las sombras. El diálogo deberá verse tal
como mostramos aquí:

5. De regreso a la ventana Histograms, haga clic en el botón Auto Clip. Los parámetros de recorte de las sombras serán
ajustados automáticamente para recortar cualquier segmento sin utilizar del histograma. Ya que el valor escogido de
corte es cero, ningún pixel será cortado.

Los ajustes del recorte automático serán recordados y permanecerán en uso hasta que usted los cambie nuevamente.

Abajo se aprecia la imagen tras cortar el segmento inicial sin utilizar.


[cursor afuera: segmento sin utilizar del histograma recortado]
[cursor encima: antes de cortar el histograma]

6.2 Ajustes finales de curvas

Estamos bastante contentos con los niveles que hemos logrado para los objetos no estelares para esta imagen. No creemos
que aclarar la nebulosa realce la imagen. Sin embargo el fondo está demasiado brillante en nuestra opinión. La única manera
de arreglar este problema es aplicar una transformación de curvas.

Esta es nuestra elección. La mitad derecha de la curva básicamente


define una transformación identidad, así que la curva no cambiará
los valores de los actuales píxeles brillantes. Los dos puntos
anteriores al último punto blanco han sido insertados para proteger
la curva ante variaciones incontroladas en la región de las altas
luces.

Los tres puntos situados después del punto negro inicial definen un
decremento de brillo para los valores de los píxeles existentes. Los
valores correctos tienen que ser determinados por lecturas directas
sobre la imagen.

En PixInsight se puede hacer clic en cualquier vista (imagen o


previsualización) en el modo de lectura (cuando el cursor es una
simple cruz) para obtener lecturas directas sobre las ventanas
Histograms, Curves y Color Saturation.
La figura que sigue nos muestra el resultado de esta transformación de curvas y los correspondientes histogramas.

[cursor afuera: después de la transformación final de curvas]


[cursor encima: antes de la transformación final de curvas]

Ajuste final de curvas.

Fíjese en el pico blanco (la línea vertical en el nivel más alto del
gráfico del histograma). Este pico corresponde a píxeles
saturados, y estrictamente hablando debe ser considerado como
un error en el procesamiento. Al inspeccionar el histograma a
una resolución de 16 bits, verificamos que sólo 2010 pixeles, un
0.06% del total de los píxeles de la imagen, son blancos
(saturados), así que este problema es bastante marginal en este
caso: afecta sólo a los píxeles centrales de estrellas muy
brillantes. Hemos saturado estos píxeles cuando incrementamos
el bias un poco exageradamente para la segunda capa de
wavelets —vea la correspondiente figura.

7. Evaluación de los resultados


Las próximas tres figuras comparan los mismos recortes de la imagen con y sin la reducción de ruido aplicada.

Para los recortes sin redución de ruido, todas las transformaciones de histogramas y curvas descritas en este tutorial han sido
aplicadas, pero las reducciones de ruido con wavelets y SGBNR han sido omitidas.

Para evaluar los procedimientos de reducción de ruido, le sugerimos buscar cuidadosamente pérdidas de detalles. Un buen
software de reducción de ruido debiera preservar siempre la información significativa. Degradar algunas estructuras o
introducir algunos artefactos de procesamiento para obtener una imagen artificialmente suave es siempre un precio demasiado
alto, en nuestra opinión.

Finalmente, tenga en cuenta que nuestro procesamiento no tiene por qué ser el más óptimo, de ninguna manera. Tal vez
usted piense que hemos ido muy lejos con la reducción de ruido. Hasta cierto punto, esto es una cuestión de preferencias
personales, y siempre un tema abierto para discusión. Sus sugerencias y críticas constructivas son muy bienvenidas.
Comparación #1 — Recorte a tamaño original
[cursor afuera: con reducción de ruido Wavelets+SGBNR aplicada]
[cursor encima: sin reducción de ruido, mismas transformaciones de histogramas y curvas]

Comparación #2 — Recorte ampliado a 2:1


[cursor afuera: con reducción de ruido Wavelets+SGBNR aplicada]
[cursor encima: sin reducción de ruido, mismas transformaciones de histogramas y curvas]
Comparación #3 — Recorte ampliado a 2:1
[cursor afuera: con reducción de ruido Wavelets+SGBNR aplicada]
[cursor encima: sin reducción de ruido, mismas transformaciones de histogramas y curvas]

8. Pruébelo usted
Hemos preparado un recorte de la imagen en bruto original que puede ser bajado como un archivo comprimido ZIP:

[sh2_240_crop.fit.zip (1.43 MB)]

Una vez descomprimido, tendrá una imagen en formato FITS de 16 bits que podrá cargar en PixInsight para practicar las
técnicas descritas en este tutorial.

Gracias a Richard Crisp por darnos el permiso para usar su imagen. Usted podrá usar este recorte de la imagen original
exclusivamente de forma personal para finalidades de aprendizaje. La imagen recortada conserva todos los derechos
reservados por Richard Crisp (Copyright © 2005 por Richard Crisp).

También hemos preparado un archivo con iconos de proceso que puede cargar en PixInsight. Este módulo contiene todos los
procesos definidos en este tutorial:

[sh2_240_noise_reduction.pi-psm.zip (870 bytes)]

Cuando este archivo es descomprimido, se genera un archivo con extensión ".pi-psm". Éste es un módulo de conjunto de
procesos (process set module). Para cargarlo debe:

1. Hacer clic con el botón derecho sobre el fondo de la ventana principal de PixInsight.

2. Desde el menú que aparecerá, seleccione Load Process Icons (esto es lo mismo que Process > Process Icons >
Load Process Icons desde el menú principal).

3. En la caja de diálogo seleccione el archivo correspondiente y haga clic en OK.

4. El módulo de conjunto de procesos será cargado y varios iconos aparecerán. Los iconos debieran aparecer en su
ventana principal, tal como aquí:
Si no ve los iconos claramente en su monitor, puede hacer clic con el botón derecho sobre el fondo de la ventana principal y
seleccionar Arrange Process Icons, para ordenarlos.

Para usar los iconos, puede por ejemplo hacer doble clic en cualquiera de ellos, para cargar sus parámetros en la
correspondiente ventana de procesamiento. Para aplicar uno de los iconos, tan sólo haga clic en él, arrástrelo y suéltelo sobre
la imagen, y espere a que los procesos terminen su ejecución.

Para reproducir nuestro procesamiento íntegramente, siga estos pasos:

1. Si no lo ha hecho, abra la imagen FITS recortada con File > Open.

2. Si no lo ha hecho, cargue los iconos, tal como se explica arriba (Load Process Icons, etc.)

3. Aplique el icono initial_histogram a la imagen.

4. Aplique el icono initial_curves a la imagen.

5. Aplique el icono small_scale_noise_reduction a la imagen.

6. Seleccione Image > Duplicate.

7. Aplique el icono SGBNR_mask a la imagen duplicada. Ahora la imagen duplicada es la máscara de SGBNR.

8. Seleccione la imagen a trabajar nuevamente (haga clic sobre su barra de título, por ejemplo).

9. Seleccione Mask > Select Mask o pulse Ctrl-M

10. En la caja de diálogo Select Mask, escoja la imagen SGBNR_mask desde la lista, y luego haga clic en OK.

11. Aplique el icono large_scale_noise_reduction a la imagen en que estamos trabajando (*no* sobre la máscara).

12. Seleccione Mask > Remove Mask o pulse Ctrl-Alt-M.

13. Aplique el icono background_levels_after_SGBNR a la imagen.

14. Aplique el icono final_curves a la imagen.

También podría gustarte