Filters

Filtering parameters are used to specify details about the three filtering stages used to alter and improve the look of the final output image.

Density

This is sometimes referred to as density estimation, or DE. This is a misnaming as there is no estimation taking place. Rather, a variable width Gaussian filter is applied to each log scaled histogram cell after all iteration is complete. The Xml fields estimator_minimum and estimator_radius specify the minimum and maximum widths that the filter can be. The estimator_curve field specifies the decay curve for how quickly the filter’s values drop off when extending outward from the pixel being filtered.

Spatial

After iterating and density filtering are done, final color correction to the output image is computed. Spatial filtering is applied during this step. The Xml fields filter_shape and filter specify the type and width of the filter. This gives very fine adjustment over what the final image looks like. Note that some filters can produce strange artifacts.

Temporal

In addition to creating a still image, the algorithm can be used to create a series of still images where each represents a frame in an animation. This is done by adjusting the affine transforms slightly for each frame and interpolating (blending) between two different flames. Sometimes, even slight changes in the flame parameters can cause a large change in the final output image.

To mitigate this effect, each frame splits its render into a number of temporal samples. This does not increase the number of iterations. Instead, it breaks the total number of iterations into chunks. Each chunk renders an interpolated flame at a specific time between the current frame and the next one to be rendered. The histogram is not cleared between temporal samples, so all iteration values are accumulated to produce a motion blurring effect. A temporal samples value of 100 – 1000 is commonly used for animation. When rendering a single frame, the number of temporal samples is always set to 1 since there is nothing to interpolate.

Two fields in the Xml govern how temporal filtering is done:

temporal_samples

The number of steps to divide each animation frame into, to achieve the motion blurring effect.

temporal_filter_type

The type of filter used when generating the temporal steps used in each frame of an animation. Values are box, gaussian or exp with a default of box.

temporal_filter_width

How wide the temporal filter is. The default value is 1.

Interpolation

While not technically a filter, it’s listed here because it governs how frames are blended between keyframes when generating an animation sequence. The two fields which govern it are:

interpolation

The interpolation method used for determining the time steps of each frame in between two keyframes when generating a sequence. Values are linear and smooth with a default of smooth. The only value that can be used on the first and last keyframes of a sequence is linear.

interpolation_type

The interpolation method used for interpolating affine transforms when generating a sequence. Values are linear or log with a default of log.