MaskTools v1
Abstract
Authors : Manao
Version : 1.0 alpha 2
Download : http://manao4.free.fr/
Category : Misc Plugins
Requirements : YV12 Colorspace
Table of contents
I) Introduction
AnisoTools's dll contains a set of filters articulated around a filtering idea named
anisotropic filtering. Anisotropic filtering is a recursive filtering technic that uses local gradient values
into an iterative formula in order to achieve the goal of the filtering. It can be use
for various purposes, such as denoising, sharpening, inpainting, etc...
II) Filters list
Here is an exhaustive list of the filters contained in this dll :
III) Filters description
at_denoise
at_denoise
: float sstep(0.8f), float tstep(0.8f),
float edge(1.0f), float edgey, float edgeu, float edgev,
float motion(1.0f), float motionv, float motionv, float motionv,
int iterations(5), int center(4),
string fedge("0 x edge / abs - exp"), string fedgey, string fedgeu, string fedgev,
string fmotion("0 x motion / abs - exp"), string fmotiony, string fmotionu, string fmotionv
at_denoise
is a spatio-temporal mo-comped anisotropic denoiser. It is quite versatile, allowing at the
same time both strong denoising and yet no edge blurring.
- sstep defines the amount of spatial filtering applied at each iteration
of the algorithm. Too high values (that is, values over 1.0) will result in unstable filtering
(you shouldn't want that). Too low values ("too low" depends on other settings) will result
in the filter not filtering spatially (since internal computations are made with limited precision).
Values inbetween should be fine. Small steps are theorically better but may require too much
iterations to achieve the wanted level of filtering, and the limited precision might have
unwanted side effect with small values anyway.
- tstep defines the amount of temporal filtering applied at
each iterations of the algorithm. All other comments about sstep applies.
- edge controls the edge protection. The lower, the better protected the edges
will be. Of course, setting it too low will result in the filter mistaking any noise pixel for
an edge (thus filtering nothing spatially). Too big values, however, will make the filter
completely edge-unaware, thus transforming it into a slow & dumb spatial blur (quite like a recursive
Blur()).
- edgey/u/v, if defined, allows to specify a different edge value for each luma and chroma planes.
- motion controls the motion protection. The lower, the better protected against
false motion the filter will be. Set too low, it will disable temporal filtering. Too high will
create blocking artifacts that come from block-based motion compensation, and ghosting.
- motiony/u/v, if defined, allows to specify a different edge value for each luma and chroma planes.
- iterations is number of iterations for the algorithm. The bigger, the better
and the slower (speed is inversely proportionnal to the number of iterations). There's a threshold
over which you won't see any differences, and that threshold should be the value to be used. The
lower the step, the bigger the needed number of iterations for reaching stability will be.
- center controls the computation of local spatial gradients. Those gradients are
computed on a blurred version of the frame, to make gradient a bit less sensitive to noise. The
bigger, the less blurred the frame will be. Minimum value is 1.
- fedge defines the formula used to protect the edges. It's a reverse polish expression,
in which "edge" is replaced by edge, while "x" is replaced by the local directionnal gradient
(and thus can be negative, ranging from -255 to 255).
- fedgey/u/v allows to define a specific edge formula for each planes.
- fmotion defines the formula used to protect against temporal artifacts. It's a reverse polish
expression, in which "motion" is replaced by motion, and "x" by the local temporal gradient
along the motion compensation (it can be negative, ranging from -255 to 255).
- fmotiony/u/v allows to define a specific motion formula for each planes.
IV) Changelog
Alpha 3 :
- added : proper documentation (avisynth's style)
- added : per plane specific parameters
- added : edge and motion protection formulas.
- fixed : support for edge = 0 or motion = 0.
Alpha 2 :
- renamed : at_spatial into at_denoise
- changed : parameters influence for at_denoise
- added : temporal denoising
- added : motion compensated temporal denoising
- added : resolution restriction to mod 16 horizontally & vertically
Alpha 1 :