FFT3DFilter
Raffriff42 (Talk | contribs) m (link fix) |
(FFT3DFilter: add documentation (WIP)) |
||
Line 1: | Line 1: | ||
− | + | {{FilterCat5|External_filters|Plugins|Plugins_x64|Denoisers|Spatial-Temporal_Denoisers}} | |
− | {{ | + | {{Filter3 |
+ | | {{Author/Fizick}}, martin53, {{Author/pinterf}} | ||
+ | | v2.6 | ||
+ | |[https://github.com/pinterf/fft3dfilter/releases FFT3dFilter-v2.6.7z] | ||
+ | | Denoisers | ||
+ | | [https://www.gnu.org/licenses/gpl-2.0.txt GPLv2] | ||
+ | |6=[https://forum.doom9.org/showthread.php?t=85790 Doom9 Forum (original)] | ||
+ | [https://forum.doom9.org/showthread.php?t=174347 Doom9 Forum (2.6 update)] | ||
+ | }} | ||
+ | |||
+ | == Description == | ||
+ | FFT3DFilter uses Fast Fourier Transform method for image processing in frequency domain. It is based on some advanced mathematical algorithms of optimal filtration. It works not locally, but makes some de-localized (block) processing. In 3D mode, it results in effect similar to partial motion compensation. This filter can reduce noise without visible quality loss and artifacts, even with quite strong settings. It can greatly improve compression and reduce encoded file size. | ||
+ | Also it has option of limited sharpening without both noise amplifying and over-sharpening (haloing). | ||
+ | <br> | ||
+ | <br> | ||
+ | |||
+ | == Requirements == | ||
+ | * [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6.0] | ||
+ | * [x64]: [[AviSynth+]] | ||
+ | * Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]; YUV(A) | ||
+ | <br> | ||
+ | |||
+ | == [[Script variables|Syntax and Parameters]] == | ||
+ | {{Template:FuncDef|FFT3DFilter (clip, float "sigma", float "beta", int "plane", int "bw", int "bh", int "bt", int "ow", int "oh", float "kratio", float "sharpen", float "scutoff", float "svr", float "smin", float "smax", bool "measure", bool "interlaced", int "wintype", int "pframe", int "px", int "py", bool "pshow", float "pcutoff", float "pfactor", float "sigma2", float "sigma3", float "sigma4", float "degrid", float "dehalo", float "hr", float "ht", int "ncpu")}} | ||
+ | |||
+ | <br> | ||
+ | ::{{Par2| |clip| }} | ||
+ | :::Input clip | ||
+ | <br> | ||
+ | ::{{Par2|sigma|float|2.0}} | ||
+ | :::Given noise value for all (or highest) frequencies. Only values greater that 0.0 | ||
+ | <br> | ||
+ | ::{{Par2|beta|float|1.0}} | ||
+ | :::Noise margin (float>=1.0, default=1.0 for no noise left): control noise amount left in the restoration for Wiener filter, so max filter noise attenuation = <code>(beta-1)/beta</code>. | ||
+ | <br> | ||
+ | ::{{Par2|plane|int|0}} | ||
+ | :::Processed color plane: | ||
+ | :::* 0 : luma(Y) | ||
+ | :::* 1 : chroma U | ||
+ | :::* 2 : chroma V | ||
+ | :::* 3 : chroma planes U and V | ||
+ | :::* 4 : both luma and chroma | ||
+ | <br> | ||
+ | ::{{Par2|bw|int|48}} | ||
+ | ::{{Par2|bh|int|48}} | ||
+ | :::Block width and height. | ||
+ | <br> | ||
+ | ::{{Par2|bt|int|3}} | ||
+ | :::Block temporal size, number of frames. | ||
+ | :::*0 : all previous frames (switch Kalman filter mode) | ||
+ | :::*1 : only current frame (spatial 2D Wiener filter) | ||
+ | :::*2 : previous and current frame (3D Wiener filter) | ||
+ | :::*3 : previous, current and next frame (3D Wiener filter) | ||
+ | :::*4 : two previous, current and next frame (3D Wiener filter) | ||
+ | :::*5 : two previous, current and two next frames (3D Wiener filter) | ||
+ | :::*-1 : sharpen only (2D) | ||
+ | <br> | ||
+ | ::{{Par2|ow|int|bw/3}} | ||
+ | ::{{Par2|oh|int|bh/3}} | ||
+ | :::Overlap width and height. | ||
+ | <br> | ||
+ | ::{{Par2|kratio|float|2.0}} | ||
+ | :::Ratio of threshold to sigma to reset Kalman filter. Variation threshold = <code>sigma*kratio</code>, good value is about from 1.5 to 3.0 | ||
+ | <br> | ||
+ | ::{{Par2|sharpen|float|0.0}} | ||
+ | :::Sharpening strength (default=0 - do not sharpen). Good values are about 0.3 to 1.0 (negative values results in reverse effect) | ||
+ | <br> | ||
+ | ::{{Par2|scutoff|float|0.3}} | ||
+ | ::: Sharpening cutoff frequency, relative to max. | ||
+ | <br> | ||
+ | ::{{Par2|svr|float|1.0}} | ||
+ | :::Sharpening (and dehalo) vertical ratio (to horizontal) (default=1.0 - same as horizontal, 0 - no vertical sharpening) | ||
+ | <br> | ||
+ | ::{{Par2|smin|float|4.0}} | ||
+ | ::{{Par2|smin|float|20.0}} | ||
+ | ::: Minimum and maximum limit (approximate noise margin) for sharpening stage. | ||
+ | <br> | ||
+ | ::{{Par2|measure|bool|true}} | ||
+ | :::Select the most optimal (fastest) FFT method by speed measure (with longer init stage) instead of simple estimation. | ||
+ | <br> | ||
+ | ::{{Par2|interlaced|bool|false}} | ||
+ | :::Separate fields processing. | ||
+ | <br> | ||
+ | ::{{Par2|wintype|int|0}} | ||
+ | :::weighting windows type: | ||
+ | :::*0 : same analysis and synthesis half-cosine window, used in all versions before 1.4. | ||
+ | :::*1 : intermediate between 0 and 2 | ||
+ | :::*2 : flat analysis window, rised cosine (Hanning) synthesis window. | ||
+ | <br> | ||
+ | ::{{Par2|pframe|bool|false}} | ||
+ | :::Noise pattern frame number. | ||
+ | <br> | ||
+ | ::{{Par2|px|int|0}} | ||
+ | ::{{Par2|py|int|0}} | ||
+ | :::Noise pattern block horizontal X position and vertical Y position. If <code>px=py=0</code>, then the pattern block is defined automatically with minimal power spectral density. | ||
+ | <br> | ||
+ | ::{{Par2|pshow|bool|false}} | ||
+ | :::Show noise pattern block and its properties. | ||
+ | <br> | ||
+ | ::{{Par2|pcutoff|float|0.1}} | ||
+ | :::Noise pattern cutoff frequency (relative to max). | ||
+ | <br> | ||
+ | |||
+ | |||
+ | <br> | ||
+ | |||
+ | == Changelog == | ||
+ | Version Date Changes<br> | ||
+ | v2.1.1 2007/02/20 - Last release by fizick, see included docs for full changelog | ||
+ | |||
+ | |||
+ | <br> | ||
+ | <br> | ||
+ | ----------------------------------------------- | ||
+ | '''Back to [[External_filters#Spatio-Temporal_Denoisers|External Filters]] ←''' |
Revision as of 19:57, 24 March 2020
Abstract | |
---|---|
Author | Fizick, martin53, pinterf |
Version | v2.6 |
Download | FFT3dFilter-v2.6.7z |
Category | Denoisers |
License | GPLv2 |
Discussion | Doom9 Forum (original) |
Contents |
Description
FFT3DFilter uses Fast Fourier Transform method for image processing in frequency domain. It is based on some advanced mathematical algorithms of optimal filtration. It works not locally, but makes some de-localized (block) processing. In 3D mode, it results in effect similar to partial motion compensation. This filter can reduce noise without visible quality loss and artifacts, even with quite strong settings. It can greatly improve compression and reduce encoded file size.
Also it has option of limited sharpening without both noise amplifying and over-sharpening (haloing).
Requirements
- [x86]: AviSynth+ or AviSynth 2.6.0
- [x64]: AviSynth+
- Supported color formats: Y8, YV12, YV16, YV24, YV411; YUV(A)
Syntax and Parameters
FFT3DFilter (clip, float "sigma", float "beta", int "plane", int "bw", int "bh", int "bt", int "ow", int "oh", float "kratio", float "sharpen", float "scutoff", float "svr", float "smin", float "smax", bool "measure", bool "interlaced", int "wintype", int "pframe", int "px", int "py", bool "pshow", float "pcutoff", float "pfactor", float "sigma2", float "sigma3", float "sigma4", float "degrid", float "dehalo", float "hr", float "ht", int "ncpu")
- clip =
- Input clip
- clip =
- float sigma = 2.0
- Given noise value for all (or highest) frequencies. Only values greater that 0.0
- float sigma = 2.0
- float beta = 1.0
- Noise margin (float>=1.0, default=1.0 for no noise left): control noise amount left in the restoration for Wiener filter, so max filter noise attenuation =
(beta-1)/beta
.
- Noise margin (float>=1.0, default=1.0 for no noise left): control noise amount left in the restoration for Wiener filter, so max filter noise attenuation =
- float beta = 1.0
- int plane = 0
- Processed color plane:
- 0 : luma(Y)
- 1 : chroma U
- 2 : chroma V
- 3 : chroma planes U and V
- 4 : both luma and chroma
- Processed color plane:
- int plane = 0
- int bw = 48
- int bh = 48
- Block width and height.
- int bw = 48
- int bt = 3
- Block temporal size, number of frames.
- 0 : all previous frames (switch Kalman filter mode)
- 1 : only current frame (spatial 2D Wiener filter)
- 2 : previous and current frame (3D Wiener filter)
- 3 : previous, current and next frame (3D Wiener filter)
- 4 : two previous, current and next frame (3D Wiener filter)
- 5 : two previous, current and two next frames (3D Wiener filter)
- -1 : sharpen only (2D)
- Block temporal size, number of frames.
- int bt = 3
- int ow = bw/3
- int oh = bh/3
- Overlap width and height.
- int ow = bw/3
- float kratio = 2.0
- Ratio of threshold to sigma to reset Kalman filter. Variation threshold =
sigma*kratio
, good value is about from 1.5 to 3.0
- Ratio of threshold to sigma to reset Kalman filter. Variation threshold =
- float kratio = 2.0
- float sharpen = 0.0
- Sharpening strength (default=0 - do not sharpen). Good values are about 0.3 to 1.0 (negative values results in reverse effect)
- float sharpen = 0.0
- float scutoff = 0.3
- Sharpening cutoff frequency, relative to max.
- float scutoff = 0.3
- float svr = 1.0
- Sharpening (and dehalo) vertical ratio (to horizontal) (default=1.0 - same as horizontal, 0 - no vertical sharpening)
- float svr = 1.0
- float smin = 4.0
- float smin = 20.0
- Minimum and maximum limit (approximate noise margin) for sharpening stage.
- float smin = 4.0
- bool measure = true
- Select the most optimal (fastest) FFT method by speed measure (with longer init stage) instead of simple estimation.
- bool measure = true
- bool interlaced = false
- Separate fields processing.
- bool interlaced = false
- int wintype = 0
- weighting windows type:
- 0 : same analysis and synthesis half-cosine window, used in all versions before 1.4.
- 1 : intermediate between 0 and 2
- 2 : flat analysis window, rised cosine (Hanning) synthesis window.
- weighting windows type:
- int wintype = 0
- bool pframe = false
- Noise pattern frame number.
- bool pframe = false
- int px = 0
- int py = 0
- Noise pattern block horizontal X position and vertical Y position. If
px=py=0
, then the pattern block is defined automatically with minimal power spectral density.
- Noise pattern block horizontal X position and vertical Y position. If
- int px = 0
- bool pshow = false
- Show noise pattern block and its properties.
- bool pshow = false
- float pcutoff = 0.1
- Noise pattern cutoff frequency (relative to max).
- float pcutoff = 0.1
Changelog
Version Date Changes
v2.1.1 2007/02/20 - Last release by fizick, see included docs for full changelog
Back to External Filters ←