FluxSmooth
From Avisynth wiki
(Difference between revisions)
(Archived Downloads) |
m (→Links: add link) |
||
Line 103: | Line 103: | ||
*[http://forum.doom9.org/showthread.php?t=38296 Doom9 Forum] - FluxSmooth discussion. | *[http://forum.doom9.org/showthread.php?t=38296 Doom9 Forum] - FluxSmooth discussion. | ||
*[http://forum.doom9.org/showthread.php?t=114051 Doom9 Forum] - FluxSmooth v1.1b discussion. | *[http://forum.doom9.org/showthread.php?t=114051 Doom9 Forum] - FluxSmooth v1.1b discussion. | ||
+ | *[http://forum.doom9.org/showthread.php?t=158245 Doom9 Forum] - 64-bit FluxSmooth with [[SSE2]] and [[SSSE3]]. | ||
<br> | <br> | ||
<br> | <br> |
Revision as of 12:04, 7 September 2014
Abstract | |
---|---|
Author | SansGrip |
Version | v1.1b |
Download | FluxSmooth-1.1b.zip |
Category | Spatial-Temporal Denoisers |
License | "There is no copyright on this code, and there are no conditions on its distribution or use. Do with it what you will" |
Discussion |
Contents |
Description
- One of the fundamental properties of noise is that it's random. One of the fundamental properties of motion is that it's not.
- This is the premise behind FluxSmooth, which examines each pixel and compares it to the corresponding pixel in the previous and last frame.
- Smoothing occurs if both the previous frame's value and the next frame's value are greater, or if both are less, than the value in the current frame.
- I like to call this a "fluctuating" pixel, then I like to wipe that pixel from existence by averaging it with its neighbours.
- For FluxSmoothST, this is (by default) done in a spatio-temporal manner, in that for each fluctuating pixel its 8 immediate spatial neighbours
- as well as its 2 temporal neighbours (the above mentioned corresponding pixel from the previous and next frames) are considered for inclusion in the average.
- If the value of each pixel is within the specified threshold, it is included. If not, it isn't. FluxSmoothT performs only temporal averaging.
Requirements
- - AviSynth 2.5.8 or later
- - Progressive input only
- - Supported color formats: YUY2, YV12
Syntax and Parameters
- FluxSmoothT (clip, int "temporal_threshold")
- FluxSmoothST (clip, int "temporal_threshold", int "spatial_threshold")
- int temporal_threshold = 7
- Temporal neighbour pixels within this threshold from the current pixel are included in the average.
- If set to -1, no temporal smoothing occurs. (FluxSmoothT cannot be set to -1)
- int temporal_threshold = 7
- int spatial_threshold = 7
- Spatial neighbour pixels within this threshold from the current pixel are included in the average.
- If set to -1, no spatial smoothing occurs.
- int spatial_threshold = 7
Examples
FluxSmoothT with default settings:
AviSource("Blah.avi") FluxSmoothT(temporal_threshold=7)
FluxSmoothST with default settings:
AviSource("Blah.avi") FluxSmoothST(temporal_threshold=7, spatial_threshold=7)
Known Issues/Limitations
- The very edges of the frame are unprocessed.
- The very first and very last frame of a clip is unprocessed.
Changelog
Version Date Changes
v1.1b 2006/11/09 - Changes by tritical. - Fixed assuming previous and next frame pitches were the same as the current frame pitch.
v1.1a 2004/07/29 - Yet another "oops" release. - Current pixel is once again considered in the averaging code -- I found the lack of it too aggressive, especially during fast motion. - Also fixed stupid "3am bug" involving a couple of variables I'd declared static that shouldn't have been. - Thanks to krieger2005 for spotting that one, and ARDA for diagnosing it.
v1.1 2003/07/26 - Changed the averaging code so that the current pixel is excluded, which produces better noise reduction. - Also split the code into two different filters, FluxSmoothT and FluxSmoothST. - FluxSmoothT does temporal-only smoothing (equivalent to setting "spatial_threshold=-1" in FluxSmoothST) and is about 50% faster. - Removed Avisynth 2.0x version to tidy up the code base. Does anyone actually use it any more? - My thanks to fabrice and sh0dan for the 1.01 release during my extended absence :).
v1.01 2003/??/?? - Added by sh0dan: - Removed leak in AviSynth 2.5 YV12 mode (code by fabrice) - Aligned tables and variables. - Use AviSynth BitBlt for copying chroma. - Don't use streaming store. (movntq) - All in all an approximate 15% speedup compared to previous version. - All changes are marked with "sh0:".
v1.0 2003/01/08 - First "stable" release. I think it's been tested enough, but wait for a bunch of bugs to emerge and make me a liar... - Fixed a bug that, in conjunction with a bug in the built-in resizers, caused an access violation under certain circumstances. Thanks to sh0dan for spotting that one :). - Added "SetCacheHints" and upgraded to "AvisynthPluginInit2" in 2.5 version.
v0.4 2002/12/16 - Implemented iSSE-optimized version, which runs roughly double the speed of the C++ version. - Some small optimizations to C++ version. - Now smooths chroma as well as luma.
v0.3 2002/11/19 - Fixed bad bug that caused incorrect smoothing: no more in-place filtering. - Changed defaults back to what they were, now that the algorithm works correctly. - Spent some time benchmarking and tweaking various pieces of code, so should now be significantly faster.
v0.2 2002/11/16 - Fixed non-fatal bug that caused a request for one frame beyond the end of the clip. - Changed to in-place filtering so could squeeze a few optimizations here and there. - Changed too-high defaults. - First AviSynth 2.5/YV12 release.
v0.1 2002/11/16 - First release; alpha code.
Archived Downloads
Version | Download | Mirror |
---|---|---|
v1.1b | FluxSmooth-1.1b.zip | FluxSmooth-1.1b.zip |
Links
- Doom9 Forum - FluxSmooth discussion.
- Doom9 Forum - FluxSmooth v1.1b discussion.
- Doom9 Forum - 64-bit FluxSmooth with SSE2 and SSSE3.
Back to External Filters ←