Flujo no lineal RGB (castellano)

Mi procesado no lineal básico, de una imagen RGB de principio a fin

En el siguiente artículo, veremos cual es mi flujo de trabajo básico, para procesar una imagen de tres canales de color (RGB), obtenida con una cámara OSC del inglés One Shot Color, o lo que viene siendo una cámara a color de toda la vida, en este caso concreto se trata de una cámara dedicada y refrigerada para la astrofotografía, con un sensor APS (Sony IMX-571), similar al de una réflex convencional, aunque con una eficiencia cuántica (QE) mayor, y un rango dinámico más profundo (16 bits) que el de la mayoría de DSLR’s convencionales (12/14 bits), cuyo único filtro es un vidrio de protección que corta el UV y el IR.

Las tomas se realizaron en noviembre de 2024 desde Cinctorres, un pueblo del interior de Castellón que dispone de un cielo relativamente oscuro (Bortle 3), siendo B1 lo más oscuro, equivalente a estar en medio del océano alejado de la costa y B9 que sería lo más iluminado, equivalente a mirar el cielo desde el centro de una gran ciudad como Madrid o Barcelona.

Si queréis consultar el mapa de contaminación lumínica, entrad en este LINK

Son 13 horas de integración total en tomas individuales (subframes) de 300″ a -10º y ganancia 101, con un telescopio de gran campo, el Askar FMA 180 Pro, que junto al tamaño de píxel de la cámara (3.76µ), me ofrece una resolución de 4.31″ de arco por píxel y un campo de 7.47° x 4.99°, un campo muy amplio.

Si queréis saber la resolución de vuestro conjunto óptico (cámara/tubo), podéis pinchar en este LINK

Dicho esto, vamos al meollo de la cuestión, recordemos que ya hemos acabado todo el proceso lineal, podéis verlo en este ARTÍCULO , y ahora toca iluminar y dar contraste, también conocido en inglés por las siglas DDP o Digital Development Process o proceso de desarrollo o revelado digital, en castellano.

Antes de empezar a meternos en harina, me gustaría hacer un pequeño inciso sobre la configuración de Masked Stretch, si definimos un preview de fondo que esté lo menos afectado posible por objetos de primer plano como nebulosas, estrellas, etc, obtendremos un estirado más intenso, pongo comparativa con preview de fondo y sin preview, es decir, tomando el total de la imagen como modelo evaluativo. Yo prefiero sin preview, para poder ir estirando después poco a poco, y preservar mejor los detalles y los colores, pero bueno, para gustos eso, los colores.

PS: Para definir la muestra del fondo, he utilizado el script FindBackground de SetiAstro

Aquí la comparativa:

Llegados a este punto, empiezo revisando el histograma, pero sobre todo me fijo en las estadísticas, si tengo en cuenta que es una imagen de banda ancha, sin ningún tipo de filtro, a excepción del IR/UV que trae la cámara en la ventana protectora, el color verde no puede dominar la escena, por eso inspecciono la foto, primero en visual, y ya veo un tono verdoso, leo las estadísticas y veo que la iluminación del canal verde está más alta que la del azul, y muchísimo más que la del rojo, en principio no pasaría nada porque nuestro sensor es RGGB es decir, la información que ha caído en cada píxel, el canal verde ha sido doblemente protagonista independientemente de la intensidad y la composición de este objeto, que como todos sabemos es una nebulosa de reflexión de la luz de estrellas jóvenes y muy calientes que como todos sabemos, son del tipo espectral B, ergo la luz reflejada en el polvo circundante debería tener como mucho, una dominante azulada y no verdosa, ese exceso de verde hay que equilibrarlo o bien restándole ruido cromático con SCNR, o bien igualando el valor de las medianas de cada canal manualmente, a lo old school.

He decir que yo aplico ambos métodos combinados, primero igualo la iluminación de los tres canales y luego quito ruido cromático con SCNR, si continúa siendo muy obvio, utilizo la función Average Neutral, y si es más contenido utilizo Maximum Neutral

Veamos las estadísticas y como el canal verde está más iluminado:

Lo que yo hago ahora es igualar los valores de iluminación de los tres canales, insertando el valor de la mediana de cada canal, en la casilla de medios tonos del histograma, canal por canal, y una vez hecho, bajar el canal RGB hasta la misma altura que la campana de abajo, la que no se ha movido, así lo que consigo es ecualizar el color y deshacerme de cualquier dominante de intensidad. Obviamente, tendré que corregir si queda alguna zona verde, recordemos que excepto los cometas y las nebulosas planetarias, no hay ningún objeto que emita en el visible que sea verde.

Vamos allá, copio el valor de la mediana del canal rojo y lo inserto como valor de medios tonos del mismo canal, esto también lo hago en el canal verde y en el canal azúl, cada vez que pego un valor, le doy al enter para que se aplique.

Canal rojo:

Canal verde:

Canal azúl:

El combinado (RGB), lo igualamos en intensidad con el estado anterior, desplazando la flecha de medios tonos hacia la derecha, hasta que la nueva campana coincida con la campana anterior, la de abajo.

Aplicamos y echamos un vistazo a la imagen, por si detectamos todavía dominante verde, a simple vista parece que no….peroooo……

No podemos fiarnos solo de nuestra vista, hay que revisar las estadísticas para asegurarnos de forma más precisa y objetiva

Vemos que nuestros ojos todavía están en forma jejeje, tenemos una imagen de banda ancha, bien equilibrada, sin dominantes verdes ni de ningún otro color, vemos que la imagen de M 45 es lo que se espera de ella, nebulosidad azul cuanto más cerca de las estrellas y de un tono más rojizo cuanto más nos alejamos, bién.

El siguiente paso es iluminar el panorama de un manera ponderada, a mi me gusta mucho hacerlo con el icono de la radiación nuclear jejeje, de los dos que hay, el de la izquierda hace una transferencia de pantalla más suave que el de la derecha, lo que hago es hacer click en ese icono, abrir STF y transferir esos ajustes al histograma para que se apliquen «de verdad», lanzando el triángulo de la esquina inferior izquierda, sobre la parte baja de la ventana del histograma.

Hago clic en el icono de radiación nuclear:

Ahora abro STF y transfiero esos ajustes al histograma:

Con el track view activado, reseteo para no llevarme un susto después

Y aplico la transformación del histograma

Ahora tengo una imagen bien estirada, nada plana, con suficiente contraste, lista para continuar con el procesado.

A continuación voy a tratar el color, a mi personalmente me gustan las imágenes cañeras, con el contraste justo pero que el color de cada elemento se vea bien visto, por eso voy a las curvas y juego con el equilibrio Luminancia vs Crominancia, canal L vs canal C.

Comienzo subiendo la curva de la crominancia y observo cómo afecta a los distintos colores de la imagen.

Me gusta, veo que empieza a aflorar verde en zonas donde se supone que el color debe ser más neutro, lo tendré muy presente en el siguiente paso. Ahora SIN APLICAR, jugaré con la curva de Luminancia para intentar dar más contraste, es decir, oscurecer zonas demasiado iluminadas para que se vea transición entre las distintas partes de la foto, que no se vea plana. Ya podemos aplicar la transformación, tenemos una imagen con un buen contraste y un buen color, tened en cuenta que la luminancia y la crominancia son antagonistas, es decir, si subes una, baja la otra y viceversa.

Ahora sí, aplicamos clicando el cuadradito o lanzando el triángulo sobre la imagen:

El color y el contraste son muy buenos a excepción del verde que pulula por ahí, como he dicho antes voy a probar entre Average Neutral y Maximum Neutral, aquí lo que ocurre es que, si quitamos mucho verde daremos un tinte rosáceo a zonas del rojo donde el verde contribuye a darle un aspecto mas amarillento, mas de polvo galáctico, entonces hay que ser cuidadosos y hacer pruebas hasta que demos con la tecla.

Después de hacer varias pruebas y fijarme mucho en las estadísticas, me he decidido por el método Maximum Neutral de SCNR, aun a pesar de no existir documentación, la experiencia que tengo con SCNR me lleva a pensar que la máscara para proteger el color, la hace empleando los valores máximos del canal deseado, en cambio, con Average Neutral construye la máscara basándose en una media aritmética de valores, por eso una protege más que otra y elimina más color una que otra, yo me he quedado con Maximum, porque me han parecido mas equilibradas las estadísticas.:

A continuación, el siguiente paso es conseguir mayor definición en las estructuras, lo que llamamos frentes de onda, es decir, donde acaba una estructura y comienza otra, podemos hacer dos cosas, aumentar el contraste local, es decir cambiar la luz de forma muy localizada, a estructuras de distintos tamaños y/o deconvolucionar estas estructuras, ojo con la deconvolución, porque al estar la imagen tan estirada, puede provocar artefactos con suma facilidad, por eso hay que ser suaves y tomar previews, hacer pruebas y tener paciencia.

Estos ajustes me han gustado, con la ventana de tiempo real es suficiente, aquí no hace falta hacer previews, eso si, cuidadin con esta herramienta que es muy golosa y a la que te das cuenta te has pasado cuatro pueblos jeje, en otro articulito explicaré como funciona LocalHistogramEqualization, es muy simple, pero lo veremos más adelante, de momento la recomendación es no ser agresivos y poner la resolución del histograma cuanto más alta mejor, más precisión, eso sí, el proceso será mucho más lento, pero vale la pena.

Antes/después:

Bien, ahora le toca el turno al «afilado» de las estructuras, para ello emplearé BlurXterminator en modo solo «Sharpen Nonstellar» dejaré todos los demás parámetros inactivos y a cero y me centraré exclusivamente en este, teniendo muchísimo cuidado de no crear artefactos, que con esta herramienta es muy fácil pasarse de rosca. Después de bastantes previews de diferentes zonas del cielo, he decidido dejarlo al 66% de agresividad, consiguiendo un buen resultado y sin rastro de artefactos.

El cambio es notable, y aunque introduzca ruido de gran escala, vale la pena:

Para solucionar el tema del ruido de gran escala, o ruido producido por el propio procesado, a mi me gusta recurrir a mi viejo GreycStoration que en imágenes muy luminosas funciona a las mil maravillas, apliqué los parámetros que vienen por defecto y el resultado es altamente satisfactorio.

Zoom

Ahora vamos a tratar de darle el último golpe de gracia a nuestro color, antes de añadir las estrellas. A mi me sigue chirriando ese verduzco que se ve en las estructuras circundantes, que en realidad es polvo galáctico y no sabemos a ciencia cierta que color es el «auténtico», entrecomillo mucho ese termino, en fin, yo me dejo guiar por mis prejuicios y mis influencias de ver fotos durante muchos años y voy a dejarlas con un color que me cuadre según mis estándares, vuelvo a reiterarme en que llegados a este punto, el procesado se convierte en algo muy personal y mientras no pintes las Pléyades de fucsia o de amarillo, todos estos matices son totalmente legítimos y muy personales, que conste en acta.

Bien, lo que voy a hacer es alterar la composición del color de ciertas estructuras para adecuarlas a lo que yo quiero,esas estructuras circundantes tan amarillas, me gustaria verlas más amarronadas, luego imagino que son estructuras rojas que tienen demasiado verde (rojo+verde=amarillo), pues bien, voy a crear una mascara con la luminancia del rojo mas la luminancia del verde y asi tendre una máscara para el color amarillo, se puede hacer manualmente, pero podéis sacarlas mas rápidamente aunque no tan perfectas como las manuales, con el script nativo Color Mask

Nos fabrica la máscara del amarillo y la aplicamos sobre la imagen lanzando la pestaña sobre la barra lateral de la ventana

Se supone que ahora tenemos todo protegido menos las estructuras amarillas o amarillentas, o sea son estructuras que tienen parte de rojo y parte de verde, por eso son amarillas, lo que haremos, si lo que queremos es cambiar ese color a uno más amarronado, es bajar el verde o subir el rojo y asi cambiaremos la tonalidad de esas estructuras, vamos a ello.

Me quedo con estos ajustes y aplico sobre la imagen.

Las estructuras amarillentas son mas marrones y las mas verdes han quedado más neutras. Acordémonos de quitar la máscara.

Vamos a por los azules, a mi me gustaría que el azul circundante a las Pléyades, fuese más extenso, más sólido y con mejor contraste, para ello he fabricado dos mascarás, una con el cyan evidente que se ve en la imagen, y otra con el azúl, las he mezclado en Pixelmath haciendo una suma de máximos para tener lo más iluminado de cada una de ellas, y luego las he desenfocado en Convolution para que no me cree artefactos alrededor de la máscara

Luego he ido a las curvas y he aplicado esta instancia:

Llegados a este punto, toca ya estirar y procesar las estrellas, recordemos que las teníamos separadas antes del primer estirado, solamente están deconvolucionadas, pero permanecen lineales, sin estirar. vamos a estirarlas usando el histograma, ponemos a 8 bits y subimos la flecha de los medios tonos hasta donde empieza (o acaba, según se mire) la campana de datos, siempre lo hago asi mas que nada para tener una referencia y hacer siempre lo mismo, lo he hecho tantas veces y se que funciona, que me resisto a cambiar de método.

El histograma no lo resetearemos, puesto que si las estrellas nos parecen que están poco estiradas, bastará con volverlo a aplicar tal como está, de la misma manera.

Ahora nos iremos a las curvas y las saturaremos para que se vea mejor el color

Y por último aplicaremos mediante una fórmula de Pixel Math, recordemos que podemos aplicar diferentes formulas para obtener el mismo o parecido resultado, lo que todas tienen en común es que el fondo de la foto de las estrellas no se agrega a la foto de las nebulosas, aunque podemos hacerlo mediante una suma reescalada, pero la foto quedaria mucho mas oscura al sumarle los valores de las sombras de la foto de solo estrellas. Yo uso una fórmula muy común, la tengo guardada en un icono de proceso y cuando voy a añadir las estrellas no tengo que escribirlo cada vez, es muy fácil de guardar, simplemente arrastramos el triangulito de Pixel Math (o de cualquier otra herramienta) al fondo del escritorio, y se convierte en un icono que podemos guardar y renombrar, incluso podemos incrustar una pequeña documentación por si se nos olvida para que lo hemos guardado jeje. Bién, la formula que yo uso es esta : ~((~)*(~)) y se escribe tal que así:

~((~imagen con estrellas)*(~ imagen sin estrellas))

También podemos utilizar esta formula, mas simple e igual de efectiva: Max(,)

Max(imagen con estrellas,imagen sin estrellas) donde solo se mezclan los valores máximos de cada imagen

Al aplicar vemos que nos hemos quedado cortos, pues nada, volvemos al histograma que NO hemos reseteado, y les damos otro estirón

Volvemos a Curves Transform, y con los parámetros de antes, volvemos a saturar, recordemos que cuando estiramos una imagen y gana luz, pierde color, así que debemos recuperar el color perdido.

Ahora volvemos a la imagen de solo nebulosas, hacemos undo para quitar las estrellitas y aplicamos otra vez la instancia de PixelMath

A mi me gustan como están, pero si os gustan con más presencia, bastará con lanzar la instancia de Pixel Math, las veces que creamos necesario hasta alcanzar el aspecto deseado, por ejemplo, después de lanzar PixelMath cuatro veces (comparad con la de arriba):

Ahora solo falta el toque final, que a mi entender sería pasar SCNR por si queda algo de verde, tanto en las nebulosas como en las estrellas, sobre todo en estas últimas, fijaos como la nebulosa se vuelve más azúl, y sobre todo la estrella esa de la derecha que parece amarilla, se vuelve más anaranjada.

Zoom

Y ya tendríamos la imagen terminada, ahora ya dependería del gusto de cada uno si quitarle mas ruido, si saturar más los colores, firmarla, etc etc.

Yo suelo guardarla en .XISF y en. jpeg a mitad de tamaño para ponerla en internet, lo hago con Geometry/Integer Resample/Downsample(2) y la guardo en jpeg al 100% de calidad, si quiero que ocupe menos espacio, pues bajo la calidad al 80%, etc.

Si queréis procesarla vosotros mismos, aqui teneis el master, pinchad en este LINK, si queréis compartir vuestro procesado y que mejorariais, o que no haríais, o si lo haríais de manera diferente, así aprendemos los unos de los otros.

Y colorín colorado este tuto se ha acabado, saludos, espero que os haya gustado y que os sea de provecho.

Hasta la próxima!!!