View Full Version : The venerable old CNR2 has been redeveloped by AI's into CNR3


hydra3333
18th July 2026, 02:45
Hello. The venerable old CNR2 has been redeveloped by AI's into CNR3.

https://github.com/hydra3333/vapoursynth-cnr3

Targetted for use on noisy VHS/VHS-C analogue capture files, CNR3 is a temporal denoiser designed to denoise only the chroma (colour), and is derived from the Cnr2 family of filters. According to the original author, this style of filter is suited for stationary rainbows and noisy analog captures.

CNR2 relied on VapourSynth APIv3, which is being phased out, and additionally depended on a serial (in-number-order) output frame request mode which is strongly recommended against under VapourSynth R76+.

Based on CNR2, CNR3 fully implements its recursive temporal model — each output frame depends on the previous filtered output frame, not the previous source frame — which is inherently serial. CNR3 therefore uses the supported vapoursynth APIv4 and the supported fmParallelRequests mode, and implements an internal output-frame cache (with checkpointing and bounded recovery) to deal correctly with out-of-order output frame requests. Output from CNR3 is not bit exact with CNR2, since CNR3 uses slightly more accurate arithmetic.

Latest test result from vspipe to .y4m:
Output 957 frames in 2.67 seconds (358.89 fps)

Refer to the github project README.md for details.

IMPORTANT NOTE:

A new better CNR4, inspired by CNR2, has been developed
https://github.com/adworacz/zsmooth#cnr4
which uses a different algorithm to CNR2, however is said to yield a much better result.

While Cnr4 is inspired by Cnr2, it provides several key improvements over the original:
- Multithreading friendly (the original Cnr2 was limited to serial processing).
- Roughly 2x faster single-threaded and 10x faster multithreaded.
- Better denoising quality due to the use of past and future frames. Cnr2 only used past frames.
- Significantly reduced ghosting.
- Adjustable temporal radius.
- Configurable temporal handling and weighting modes.

Hence CNR3 is a redeveloped CNR2, more for posterity than anything else.

Cheers.

Selur
19th July 2026, 05:41
Nice, thanks for the info :)