Reconstruction filters#

Image reconstruction filters are responsible for converting a series of radiance samples generated jointly by the sampler and integrator into the final output image that will be written to disk at the end of a rendering process. This section gives a brief overview of the reconstruction filters that are available in Mitsuba. There is no universally superior filter, and the final choice depends on a trade-off between sharpness, ringing, and aliasing, and computational efficiency.

Desirable properties of a reconstruction filter are that it sharply captures all of the details that are displayable at the requested image resolution, while avoiding aliasing and ringing. Aliasing is the incorrect leakage of high-frequency into low-frequency detail, and ringing denotes oscillation artifacts near discontinuities, such as a light-shadow transition.

Box filter (box)#

This is the fastest, but also about the worst possible reconstruction filter, since it is prone to severe aliasing. It is included mainly for completeness, though some rare situations may warrant its use.

<rfilter type="box"/>

Tent filter (tent)#

Parameter

Type

Description

Flags

radius

float

Specifies the radius of the tent function (Default: 1.0)

Simple tent (triangular) filter. This reconstruction filter never suffers from ringing and usually causes less aliasing than a naive box filter. When rendering scenes with sharp brightness discontinuities, this may be useful; otherwise, negative-lobed filters may be preferable (e.g. Mitchell-Netravali or Lanczos Sinc).

<rfilter type="tent">
    <float name="radius" value="1.25"/>
</rfilter>

Gaussian filter (gaussian)#

Parameter

Type

Description

Flags

stddev

float

Specifies the standard deviation (Default: 0.5)

This is a windowed Gaussian filter with configurable standard deviation. It often produces pleasing results, and never suffers from ringing, but may occasionally introduce too much blurring.

When no reconstruction filter is explicitly requested, this is the default choice in Mitsuba.

<rfilter type="gaussian">
    <float name="stddev" value="0.25"/>
</rfilter>

Mitchell filter (mitchell)#

Parameter

Type

Description

Flags

A

float

A parameter in the original paper (Default: \(1/3\))

B

float

B parameter in the original paper (Default: \(1/3\))

Separable cubic spline reconstruction filter by Mitchell and Netravali [MN88]. This is often a good compromise between sharpness and ringing.

<rfilter type="mitchell">
    <float name="A" value="0.25"/>
    <float name="B" value="0.55"/>
</rfilter>

Catmull-Rom filter (catmullrom)#

Special version of the Mitchell-Netravali filter with constants B and C configured to match the Catmull-Rom spline. It usually does a better job at at preserving sharp features at the cost of more ringing.

<rfilter type="catmullrom"/>

Lanczos filter (lanczos)#

Parameter

Type

Description

Flags

lobes

integer

Sets the desired number of filter side-lobes. The higher, the closer the filter will approximate an optimal low-pass filter, but this also increases ringing. Values of 2 or 3 are common (Default: 3)

This is a windowed version of the theoretically optimal low-pass filter. It is generally one of the best available filters in terms of producing sharp high-quality output. Its main disadvantage is that it produces strong ringing around discontinuities, which can become a serious problem when rendering bright objects with sharp edges (a directly visible light source will for instance have black fringing artifacts around it). This is also the computationally slowest reconstruction filter.

<rfilter type="lanczos">
    <integer name="lobes" value="4"/>
</rfilter>