Scintilla's Guide to AVISynth Postprocessing Filters: Temporal Smoothers

FaeryDust - FluxSmooth - TemporalCleaner

( Home - Spatial Smoothers - Spatio-Temporal Smoothers - Sharpeners - Dealing with Dot Crawl - Dealing with Rainbows )


While the more intuitive spatial smoothers smooth out the differences between different pixels in the same frame, temporal smoothers aim to improve compressibility and/or visual quality by smoothing out the changes of pixels between different frames. Though this usually doesn't have as noticeable of an effect (unless it causes ghosting artifacts, natch!), it can often improve compressibility more than spatial smoothing. This is because distribution codecs such as MPEG-1, XviD, and DivX use P-frames and B-frames that only store differences between the current frame and the previous (or previous and next) one instead of storing an entire image.

But because the visual differences are so slight, I'm going to dispense with screenshots for this page and just give the straight-up 411.
The temporal filter from the Dust family.

Type: Plugin
Found in file: DustV5.dll
Author: Steady
Homepage: None
Colorspaces: RGB24, RGB32, or YUY2 (note: NO YV12 SUPPORT)
Interlacing: Progressive only (I believe)
Speed: Slow to very slow (7-14 fps at default settings, depending on scene changes, crossfades, etc.)

Defaults: FaeryDust(limit=2)
Parameters: Usage notes: FaeryDust is the temporal-only filter from the Dust family of filters, coded by Steady for AVISynth 2.0.x (a version for 2.5.x was never released). All I know about its theory of operation is that it uses some kind of motion compensation. According to Steady, it should preserve the maximum detail of all the Dust filters, but raising the limit setting too far may negate this.
Personally, I don't use it that much, probably because it's just as slow as PixieDust but doesn't offer nearly as impressive compressibility gains. However, it definitely doesn't cause as much blockiness as PixieDust. Still, I would suggest trying SpaceDust before FaeryDust, if only because of the speed issue. Back to top
Targets fluctuating pixels. Comes in two flavors.

Type: Plugin
Found in file: FluxSmooth.dll
Author: SansGrip
Colorspaces: YUY2 or YV12
Interlacing: Progressive or interlaced (FluxSmoothT), or progressive only (FluxSmoothST)
Speed: Fast! (300+ fps for FluxSmoothT; 140+ fps for FluxSmoothST)

Defaults: FluxSmoothT(temporal_threshold=7)
or FluxSmoothST(temporal_threshold=7, spatial_threshold=7)

Parameters: Usage notes:

Many of you may be looking at FluxSmoothST and wondering "WTH? That's a spatio-temporal smoother! Why is it on this page?" Well, in order to answer that, I have to explain the theory of operation of FluxSmooth.
FluxSmooth only corrects a pixel if it has a value that's either lower or higher than the values of BOTH its temporal neighbor pixels (a.k.a. the same pixel in the previous and next frames). SansGrip refers to these as fluctuating pixels, hence the filter's name. The idea is that such a pixel is more likely to be noise than signal.
So you see, in order to decide which pixels should be changed, FluxSmooth makes only temporal considerations, no spatial ones. That's why it goes on the temporal smoothers page.

In my experience, FluxSmooth (at least FluxSmoothST) is very good at preserving detail while still helping compressibility, and it would probably make a good filter to go before other, more heavy-duty smoothers. Personally, what I'd really like to see is another threshold that could be used to ignore pixels that are fluctuating by more than a certain amount... Back to top

Simple, fast, safe temporal smoother.

Type: Plugin
Found in file: TemporalCleaner.dll
Author: Vlad59 after Jim Casaburi
Homepage: None
Colorspaces: YUY2 or YV12
Interlacing: Progressive or interlaced
Speed: FAST! (300+ fps)

Defaults: TemporalCleaner(ythresh=5, cthresh=10)

Parameters: Usage notes:

TemporalCleaner's theory of operation is very simple: if a pixel differs from the same pixel in the previous frame by less than a threshold, the pixel is replaced by the average of itself and the previous pixel. That's it (but see the note above about the chroma).
Personally, I haven't found TemporalCleaner to be as effective as the other temporal smoothers such as FluxSmooth. However, it's undeniably very fast, and I've never seen it introduce any artifacts or wreck any details at the default settings. Back to top

Home - Spatial Smoothers - Spatio-Temporal Smoothers - Sharpeners - Dealing with Dot Crawl - Dealing with Rainbows

Last updated on 3/20/08
Questions? Comments? Concerns? Contact Scintilla
Fight Spam! Click Here!