Denoise Tool

Denoise Tool

While some RenderMan plugins integrate the Denoise feature, RenderMan does ship with a tool for processing images after rendering. Keep in mind that the appropriate AOVs must be included for the Denoise filter to work.

Denoise Flags

Running denoise -h results in the following 'help' output:

-o name           Outputs to shotCam_name.exr instead of shotCam_filtered.exr
-outdir dir       Outputs to this directory instead of the input file's
                      directory.
-filtervariance   If a mix of variance and non-variance files are specified,
                      output includes filtered version of variance's color
                      channels too.
-crossframe       Cross-frame sequence mode: filters across frames
-skipfirst, -F    Doesn't output an image for the first frame
-skiplast, -L     Doesn't output an image for the last frame
-layers           Filter only render output layers matching these names.
                      Supports wildcards ?, *, [...].  Eg --layers 'diffuse,
                      specular,emission[45]'
-v name           Uses motion vectors with crossframe mode.  Motion vectors
                      are located based on the variance filename, changing
                      "/variance/" to "/<name>/", "variance." after "." or "_"
                      to "<name>.".
                      Note that "-v variance" will use the motion vectors from
                      the variance file itself.
-f configFiles    Filter definition file and/or overrides; format is
                      [baseFile.filter.json][+fileA.filteroverride.json]...
                      The default baseFile.filter.json is C:\Program Files\Pixa
                      r\RenderManProServer-20.1\/lib/denoise/default.filter.jso
                      n
                      Filteroverride files are json dicts of param.path: value,
                      eg: { "filterbanks.*.strength": 0.50 }
-override key val Override a value from filter definition file.  Can use
                      multiple times.  If last flag, follow with -- before input
                      file names. Examples: --override strength 0.5
                      --override 'kernels[1].params.sigma_albedo' 0.05
-b                Batch mode: input is a file list (one file per line)
-t nthreads       Number of threads; default is number of cores on machine
-h, --help        help; prints this block of options and examples

Denoise Filters

The Denoise tool comes with three filter presets:

default.filter.json

Used for most scenes. This filter achieves reasonable results without changes.

sigmaAlphaOnly.filter.json

Used to filter alpha.

volume.filter.json

Used for volumes rendered alone onto transparent black.

It's important to use the volume filter on images containing isolated volume elements or you may introduce more noise into the filtered image using the default filter.

You can override the default filter and settings using the -f or --override flags. You may also set a different environment override. The below examples are the same result with different methods.

setenv NOISE_FILTER_OVERRIDES '{"kernels[0].params.sigma_albedo":0.07}'
denoise --override 'kernels[0].params.sigma_albedo' 0.07 -- shot.variance.001.exr

Optional Pre-made Filter Controls

There are also several override filter settings that can be combined with the base filters. Notice these are named as filteroverride.

filterLayersIndependently.filteroverride.json

Filters EXR layers individually.

fireflyKiller.filteroverride.json

Removes fireflies (bright pixels) from an image.

linearWarp.filteroverride.json

Sets the noise filter's prev/next frame warp type to 'linear'.

nearestWarp.filteroverride.json

Sets the noise filter's prev/next frame warp type to 'nearest' (non-interpolated).

noAlbedoDivide.filteroverride.json

Turns off dividing by the albedo.

noDepth.filteroverride.json

Turns off use of the 'depth' feature to cue the noise filter.

noFireflyKiller.filteroverride.json

Turns off the firefly killer for the noise filter.

nonsplitVariances.filteroverride.json

Defines the parameters of the noise filter, using separate diffuse vs specular variances.

noUnpremultiplyColor.filteroverride.json

Turns off unpremultiply by color options.

splitVariances.filteroverride.json

Defines the parameters of the noise filter, using separate, diffuse vs specular variances.

unpremultiplyColor.filteroverride.json

Turns on unpremultiply by color.

unpremultiplyFeatures.filteroverride.json

Turns on both unpremultiply by color and features.

Example Usage

denoise -f +noDepth.filteroverride.json shot.variance.001.exr
denoise -f volume.filter.json+fireflyKiller.filteroverride.json+linearWarp.filteroverride.json shot.variance.001.exr

Custom Filter Controls

You may also create your own filter overrides based on your needs. Note that RenderMan looks for the filters under the RenderMan ProServer install directory /lib/denoise/ The following example creates a control that alters the overall strength of the denoising effect.

{
   "//": [
       "This file changes the strength of the noise filter."
   ],

   "filterbanks.*.strength": 0.2
}

Saved as strength0.2.filteroverride.json you can then use the following command:

denoise -f +strength0.2.filteroverride.json shot.variance.001.exr

Note that increasing the filter strength may take longer to process the image result.