Noise Reduction

Noise Reduction operator properties for Script Engine. Reduces video noise on the layer while keeping fine detail and edges intact. Useful for cleaning up grainy footage from low-light cameras, compressed feeds with visible noise, or sources with sensor grain. Combines two passes: temporal noise reduction (averaging across frames with motion detection so moving objects don't ghost) and an optional spatial bilateral filter for extra smoothing on still material. Includes visualisation modes that show the removed noise on its own, useful for tuning.

Property Type Access Description
Strength int get/set How aggressively the temporal denoiser smooths across frames. [min=0, max=100, default=50]. 0 disables the temporal pass. Higher values blend more of the previous frame in, removing more noise — but at high values, slow-moving objects can leave faint trails ("ghosting"). 30–60 is a good range for most material.
MotionThreshold int get/set How big a pixel change has to be before it counts as motion rather than noise. [min=1, max=50, default=8]. Pixels below the threshold are smoothed; pixels above it are left alone so motion stays sharp. Lower values denoise more aggressively but risk smearing fine motion. Higher values protect motion at the cost of letting more noise through.
Softness int get/set Width of the soft transition between "this is noise" and "this is motion". [min=0, max=50, default=10]. 0 gives a hard switch — pixels are either fully smoothed or fully unaffected, which can cause visible banding around moving edges. Higher values blend the two behaviours smoothly across a range of pixel-difference values, hiding the switch.
Method DifferenceMethod get/set How the operator measures the change between adjacent frames. [default=Luminance]. Luminance looks only at brightness changes — robust to chroma noise and the best default for most footage. Max Channel uses the largest of the R/G/B differences. RGB Magnitude uses the Euclidean distance across all three channels — strictest, flags more pixels as motion.
EnableSpatial bool get/set When true, an edge-preserving spatial filter runs after the temporal pass. [default=false]. Helps clean up noise that survives temporal denoising — typically on still or near-still footage where there's little frame-to-frame variation to average. Costs extra processing time, so leave off if temporal alone is sufficient.
SpatialStrength int get/set How aggressively the spatial filter smooths across similarly coloured neighbouring pixels. [min=1, max=100, default=30]. Lower values preserve more fine detail; higher values produce a softer, more painted look. Only takes effect when EnableSpatial is true.
SpatialRadius int get/set Pixel radius the spatial filter looks at around each pixel. [min=1, max=7, default=3]. Larger radii give smoother results at higher processing cost. Only used when EnableSpatial is true.
OutputMode NoiseOutputMode get/set What the operator produces on the output. [default=Denoised]. Denoised is the normal mode — the cleaned-up image. Noise Only shows just the noise that was removed (a uniformly grey image when nothing is being filtered) — useful for tuning thresholds. Side by Side puts the original on the left and the cleaned image on the right for direct comparison.
NoiseGain int get/set Brightness boost applied to the Noise Only view. [min=1, max=10, default=5]. Higher values make subtle noise easier to see when tuning. Only affects the Noise Only output mode — has no effect on the actual denoised image.
ClearHistoryCmd Command get Clear the temporal filter's frame history. Useful after a hard cut between scenes — without clearing, content from the previous shot can briefly bleed into the new one through the temporal averaging.
ResetCmd Command get Reset all settings to their defaults (50 strength, 8 motion threshold, 10 softness, Luminance method, spatial off, Denoised output).
Minilog FormattedMessage get/set Most recent status message from the operator (read-only). Reports things like "history cleared" or "output mode changed". Useful as a quick confirmation that an action took effect.

Inherits from: AbstractOperator, AbstractAudioMetering.

See also: Noise Reduction in Operators — user-facing introduction, screenshots, and section summaries.