ReduceFlicker
Abstract | |
---|---|
Author | Chikuzen, Asd-g |
Version | v0.1.1 |
Download | ReduceFlicker-0.1.1.7z |
Category | Luma Equalization |
License | GPLv2 |
Discussion |
Contents |
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.
Requirements
- [x86]: AviSynth+ or AviSynth 2.6
- [x64]: AviSynth+
- Supported color formats: Y8, YV12, YV16, YV24, YV411
- AviSynth+: all planar Y and YUV(A) formats (8/10/12/14/16/32-bit) are supported.
- *** vcredist_x86.exe is required for ReduceFlicker-x86
- *** vcredist_x64.exe is required for ReduceFlicker-x64
Syntax and Parameters
- ReduceFlicker (clip, int "strength", bool "aggressive", bool "grey", int "opt", bool "raccess", bool "luma")
- clip =
- Input clip; must be planar YUV.
- clip =
- 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.
- Specify the strength of ReduceFlicker. Higher values mean more aggressive operation.
- int strength = 2
- bool aggressive = false
- If set to true, then a significantly more aggressive variant of the algorithm is selected.
- bool aggressive = false
- bool grey = false
- Whether chroma planes will be processed or not. If set to true, chroma planes will be garbage.
- bool grey = false
- 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.
- int opt =
- 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.
- When the previous and next frames are accessed.
- bool raccess = true
- 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.
- bool luma = true
Examples
ReduceFlicker with default settings:
ReduceFlicker(strength=2, aggressive=false, grey=false)
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
External Links
Back to External Filters ←