Reducción de ruido en Cycles (Denoiser)

Esta vez vamos a hablar de otra de las grandes y muy bienvenidas adiciones a Cycles en Blender 2.79, el Denoiser!

Denoise o Noise reduction es el proceso de reducción/eliminación de ruido, que permite lograr imágenes completamente limpias en una fracción del tiempo que toma regularmente un render en Cycles.

En términos simples, el denoiser analiza y filtra la imagen un tile a la vez, lo compara con los tiles terminados alrededor y hace un promedio de los pixeles de la zona quitando la información que se determina como ruido, tratando de mantener tanto detalle como sea posible.

Los settings por defecto funcionan bien para la mayoría de los casos, pero vamos a revisarlos uno por uno para entender mejor cómo usarlo y que valores cambiar dependiendo de la escena en particular:

render_cycles_settings_scene_render-layers_denoising

Estos conceptos son sacados directamente del manual oficial

Radius: es el tamaño del área de la imagen que se usa para reducir el ruido de un pixel. Valores más altos logran una imagen más suavizada, pero puede reducir significativamente el detalle y toma más tiempo.

Strength: Es la fuerza, o la intensidad con la que se “limpia” el ruido. De manera más técnica, permite definir qué tan diferente (en términos de color) puede ser el área alrededor del pixel central de la zona que se está limpiando. Valores más bajos mantienen más detalle, pero el resultado final puede dejar algo de ruido.

Feature Strength: controla la eliminación de las partes de la imagen más ruidosas y redundantes antes de hacer el proceso de denoising. Puede ser necesario en algunos casos como motion blur o profundidad de campo (DOF) extremos, para evitar que la imagen se vea “manchada”. Puede causar que detalles pequeños en texturas o geometría sean borrados. Valores más bajos mantienen más detalle, pero el resultado final puede dejar algo de ruido.

Relative Filter: cuando se remueven características que no contienen información relevante para el denoiser, esta opción decide cuáles características se mantienen basada en la cantidad total de información visual. Puede limpiar rápidamente la imagen y evitar artefactos, pero puede causar pérdida de detalle sobre todo en los bordes de los objetos.

Passes: permite que seleccionemos cuáles passes van a ser limpiados de ruido y cuáles no. Muy útil si usamos posteriormente los render passes para componer la imagen final.
Se pueden seleccionar los passes directo e indirecto para: Diffuse, Glossy, Transmission y Subsurface Scattering.

Notas de los desarrolladores (fuente):

El denoiser cambiará en el futuro y algunas de las funciones no han sido implementadas aún. Si el proceso no producce buenos resultados, generalmente la solución está en aumentar el número de samples o usar clamping para reducir las posibilidades de pixeles muy brillantes en la imagen.

  • No se recomienda que el valor en Radius se use muy alto. Además de aumentar el tiempo de render significativamente, el resultado puede ser más suave pero no va a ser más exacto, ya que no hay información extra en la imagen. Si en un valor de 15 todavía no hay buenos resultados, probablemente sea mejor aumentar la cantidad de samples.
  • El denoiser todavía no puede ser usado para quemar texturas (Texture baking).
  • Puede ser usado para animación, sin embargo todavía es necesario usar muchos samples para tener buenos resultados. Con pocos samples es posible que se presente ruido de baja frecuencia (borroso) en la animación, incluso si no es aparente en imágenes estáticas. En un futuro, el denoiser podrá comparar entre frames, lo que facilitará el proceso para animación.
  • Si usas GPU para el render, el proceso puede consumir una gran cantidad de vRAM. Si la tarjeta de video se queda sin memoria pero funciona normal sin el denoiser, trata reduciendo el tamaño de los tiles, o hacer el render con CPU.

Antes de ver un ejemplo práctico, es necesario aclarar que el denoiser por si solo no hace milagros y, como cualquier otra herramienta de Cycles es una que debe ser usada en conjunto con las demás para mejorar los tiempos de render y lograr imágenes más limpias.

En la práctica, si una imagen necesita 2500 samples y aún tiene algo de ruido, puede limpiarse completamente con 1000 o 1500 samples usando el denoiser. No es para nada práctico tratar de hacer un render interior con 10 fuentes de luz usando sólo 100 samples + el denoiser… Ese caso puede sonar exagerado pero es un buen ejemplo, para que la eliminación de ruido funcione bien es necesario que la imagen tenga suficiente información visual, es decir, que se haya renderizado lo suficiente como para que el algoritmo pueda diferenciar entre el ruido y los detalles pequeños en las texturas o en la geometría.

Ejemplo:

Este es un ejemplo un tanto extremo, para mostrar claramente los resultados y los artefactos que pueden generarse con el denoiser. Es una escena interior, con una sola fuente de luz externa (HDRI), y muchas superficies reflectivas.

Normalmente una escena como esta debería apoyarse en el uso de luces interiores o aperturas en las paredes fuera de cámara para reducir el ruido, pero en este caso, como prueba para el denoiser usamos sólo el HDRI para la iluminación.

Descarga la escena

Render settings:

Render_settings

Denoising: settings por defecto, no se modificó nada.
Sampling: 900.
Clamp direct e indirect: 100, un valor muy alto pero que funciona si se usa Filmic y se quieren evitar pixeles muy brillantes en la escena.
Light Paths: Max bounces 2

Bano5_filmic_noise
Sin denoiser
Bano5_filmic
Con denoiser – Radius: 8
Bano6_filmic
Con denoiser – Radius: 5
Bano7_filmic
Con denoiser – Radius: 10
Bano8_filmic.png
Con denoiser – Radius: 8 – Relative filter: activado

A primera vista no parece haber mucha diferencia, así que veamos las zonas con más ruido comparadas lado a lado:

Comparacion.jpg
Abre la imagen en otra pestaña para ver las diferencias claramente

En esta comparación se hacen más evidentes los problemas que puede causar el uso de denoiser en situaciones complejas o con pocos samples. Muchas veces el ruido se suaviza por partes, lo que genera parches de ruido más grandes y suavizados que parecen manchas.

Para este ejemplo el mejor resultado lo da un radius de 8 y Relative filter activado, pero CUIDADO! esto no quiere decir que se deben usar estos settings como una fórmula mágica todo el tiempo. Para cada escena hay que testear las opciones hasta encontrar la mejor combinación. Además en esta prueba no hice ningún cambio a otros settings como Strenght o Feature Strenght, que también pueden afectar mucho el resultado final.

Y otra prueba debería hacerse usando los render passes en composición…

Como lo mencioné antes, generalmente la mejor opción es aumentar el número de samples; por ejemplo la imagen de abajo usa también un radius de 8 pero en vez de 900 usé 1500 samples. Repito, un render más claro en primer lugar asegura un mejor resultado del denoiser (Al menos por ahora, faltan muchas cosas por implementar).

Bano9_filmic.png
Con denoiser – Radius: 8 – Relative filter: activado – Samples: 1500

Ahora, aquí está la misma escena pero usando algunas luces interiores; este sería un caso más realista, en el que primero trato de reducir tanto ruido como sea posible y luego, como detalle final uso el denoiser sólo para reducir un poco el tiempo de render.

Con la nueva iluminación volví a 900 samples, y sin embargo en algunas zonas aparece mucho más limpia que la versión de 1500 samples.

Bano10_filmic.png
Luces de área internas + HDRI – Denoiser radius: 8 – Relative filter: activado – Samples: 900

Ok, espero que este nuevo artículo haya sido de ayuda y sobre todo sea claro acerca del uso del denoiser. Habría que hacer más pruebas, explorar todas las opciones detalladamente y hacer una tabla de relaciones para cada setting que existe, pero por ahora esta introducción debería ser suficiente.

Por favor, no duden en comentar y hacerme saber si cometí algún error o pasé por alto algún pedazo de información importante para este tema, con gusto lo corregiré para que no confundamos otros usuarios 🙂

Pueden descargar el archivo aquí.

3 thoughts on “Reducción de ruido en Cycles (Denoiser)

  1. muy bueno para mi el mejor render es el Con denoiser – Radius: 8 – Relative filter: activado – Samples: 1500.
    Gracias por compartir la información y por publicarlo en blender hoy

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s