From Avisynth wiki
Revision as of 19:47, 26 September 2020 by Reel.Deal (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Author Chikuzen, Asd-g
Version v0.1.1
Download ReduceFlicker-
Category Luma Equalization
License GPLv2


[edit] Description

AviSynth 2.6 / AviSynth+ plugin to reduce temporal oscillations. This is a rewite of ReduceFlicker v0.5 which written by Rainer Wittmann. This plugin has only ReduceFlicker(). ReduceFluctuation() and LockClense() are not implemented.

ReduceFlicker performs controlled averaging of a frame with its two adjacent temporal neighbors. Controlled means that averaging only takes place in the presence of oscillations. Without such a restraint the filter would create massive ghosts.

ReduceFlicker is purely a temporal filter that can be used for all kinds of material, but it is are particularly useful for interlaced footage or progressive videos from digicams like my Canon Powershot S1 IS. It should be applied before deinterlacing. If done so, the motion detection of the deinterlacer is fooled less by flicker, whence more detail is preserved.

The type of flicker, which can be removed or at least reduced with ReduceFlicker, is more prevalent in camcorder material and the chroma of analog clips, especially clips captured from VHS tapes. In other words ReduceFlicker is suited for removing or reducing certain kinds of electronic noise, but it has virtually no effect on dust and film grain.

[edit] Requirements

*** vcredist_x86.exe is required for ReduceFlicker-x86
*** vcredist_x64.exe is required for ReduceFlicker-x64

[edit] Syntax and Parameters

ReduceFlicker (clip, int "strength", bool "aggressive", bool "grey", int "opt", bool "raccess", bool "luma")

clip   =
Input clip; must be planar YUV.

int  strength = 2
Specify the strength of ReduceFlicker. Higher values mean more aggressive operation.
  • 1 : makes use of 4(current + 2*previous + 1*next) frames.
  • 2 : makes use of 5(current + 2*previous + 2*next) frames. (default)
  • 3 : makes use of 7(current + 3*previous + 3*next) frames.

bool  aggressive = false
If set to true, then a significantly more aggressive variant of the algorithm is selected.

bool  grey = false
Whether chroma planes will be processed or not. If set to true, chroma planes will be garbage.

int  opt =
Controls which cpu optimizations are used.
Currently, this filter has three(C++, SSE2 and AVX2) routines.
  • 0 : Use C++ routine.
  • 1 : Use SSE2 routine.
  • Others (default) : Use AVX2 routine if possible.
  • If your machine does not have AVX2, fallback to 1.

bool  raccess = true
When the previous and next frames are accessed.
  • True (default) - the next frames are accessed first.
  • False - the previous frame are accessed first.

bool  luma = true
Whether luma plane will be processed or not. If set this to false, luma plane will be garbage.
Default value is true.

[edit] Examples

ReduceFlicker with default settings:

ReduceFlicker(strength=2, aggressive=false, grey=false)

[edit] Changelog

Version      Date            Changes
v0.1.1 2020/09/22 - Separated SSE2 and AVX2 code. - Registered as MT_NICE_FILTER. - Added support for all planar formats.
v0.1.0 2020/05/24 - Changes by asd-g - Added version. - Added support for 10..32-bit. - Fixed frame access when strength=2, raccess=false. - Added "luma" parameter. - Allowed AVX2 routine for AviSynth 2.6.
v0.0.1 2020/05/13 - Changes by asd-g - Added support for AviSynth+ v8 interface. - Removed /arch:AVX2 requirement to use the AVX2 routine.
v0.0.0 2016/05/05 - Initial release

[edit] External Links

  • GitHub - Source code repository.
  • GitHub - Source code repository (updated).

Back to External Filters

Personal tools