View Full Version : EZdenoise
" live action???"
In theory it can be tested with FFDSHOW +AVS script RAW processing. So with some in-out capture-playback card (or may be easier with newer IP-based live video streaming) it can process live. Or a set of capture card + some video output card. I plan someday the MDegrain-based cleaner can be installed before MPEG4 live broadcast encoder to help with output quality. For 'large tr' and overlap processing it may be hardware accelerated with a set of DX12-ME accelerators arranged same as typical 'mining rig'. Or may be just with fast enough multicore CPU.
For live with low-delay it is required special mode of mvtools for 'backward search only'. So it can have about 1 frame delay only. But it will cause noise burst after scene change to about tr-number of frames. Or may be some 'intermediate asymetric search' mode with adjusted shift of forward and backward frames to balance between delay and noise burst at scene change.
In theory with MDegrainX (1-6) it can be simulated now with simply collecting MVs from asymetric forward-backward MAnalyse params. MAnalyse need special new shift param to control frames request from MDegrainN in multi mode.
takla
2nd June 2022, 10:57
Here my quick attempt
Hello. Thanks for joining the conversation. And thanks for that website. I'll make use of it in the future.
It would have been great if you had also provided some benchmarks for time spent with each filter.
The last time I tested other degrain filters TemporalDegrain2 was by far the best but also by far the slowest. Has this changed?
And as you correctly pointed out, comparing spatial-temporal denoising vs just temporal, the result is to be expected, especially for anime, where you can use strong sigma without many drawbacks.
lollo2
2nd June 2022, 11:25
Has this changed?
No. TD2 is still very very slow!
And thanks for that website. I'll make use of it in the future.
It is somehow useful, but it is just image comparison, which is not enough to judge. The artifacts of a denoise must be evaluated on the running video ;)
takla
2nd June 2022, 12:28
Here is another comparison. This time from a real world video.
https://imgsli.com/MTEwNjM4
I can confirm, the denoising is just as effective in motion.
Settings used:
ConvertBits(16)
EZdenoise(thSAD=200, TR=8, Chroma=true)
ConvertBits(10, dither=1)
lollo2
2nd June 2022, 13:11
I can confirm, the denoising is just as effective in motion.
I had no doubt! I was just saying that the evaluation should be done watching the video in addition to comparing the images, so my samples did not tell the complete story ;)
lollo2
2nd June 2022, 15:57
Comparizon with Topaz VEAI: https://imgsli.com/MTEwNjE3 with given settings TD2 removes more noise but blurs the edges more; changing its setting, TD2 can perform better.
I changed my mind. It is true that TD2 with that given setting sharpen less the edges, but is more accurate than Topaz VEAI (and eventually an edge enhacement can be added in the AviSynth script). Look to the diagonal lines https://ibb.co/f93tfnN while comparing watching https://imgsli.com/MTEwNjE3 and using full screen option.
The power of AviSynth!
The only doubt I have is that I resized the topaz image from takla for the comparison on imgsli, but I see the artifacts on the original topaz image as well.
P.S.: On the other hand the red stripes on the face are less "defined": a less aggressive denoise in TD2 is required anyhow.
kedautinh12
2nd June 2022, 18:08
That true TD2 better than Topaz cause it's slower than Topaz
takla
3rd June 2022, 02:47
I had no doubt! I was just saying that the evaluation should be done watching the video in addition to comparing the images
Yep. I agree and just wanted to clarify.
takla
1st July 2022, 18:19
Added ShowMe() (https://www.mediafire.com/file/jp4pugnxsrnm6km/ShowMe.avsi/file)
Can be used to more easily find a good thSAD value.
(Look at the top left corner during preview with AvsPmod)
(And make sure to ignore any value that is shown on frames right after a scene change)
Should be placed right after your Source filter (except for when your video has black bars, in which case you need to crop them first)
Example:
LWLibavVideoSource("C:\Users\Admin\Documents\INPUT.mkv")
Crop(0, 140, -0, -140)
ShowMe()
I recommend you view 5 different scenes, write down the displayed value, calculate an average, and round it up.
takla
17th October 2022, 15:57
EZdenoise can also work as "DeRainbow" very effectively.
Comparison here (https://imgsli.com/MTMwNjE0)
Used with
EZdenoise(Chroma=true, thSAD=0, thSADC=2000)
takla
28th October 2022, 15:35
Added EZdenoise v4 (https://www.mediafire.com/file/3ojdzwiat4ossw0/EZdenoise_v4.zip/file)
Hardcoded "Falloff" parameter.
Added "out16" parameter (which only supports 8bit sources).
Using out16=true is 15% faster than using ConvertBits(16), because MAnalyse now respects the bit depth of the input.
Previous versions had MAnalyse run at 16bit (if ConvertBits(16) was used) which didn't improve image quality and only wasted performance.
For 8bit inputs, I highly recommend you to use out16=true. Use something like this for maximum quality:
LWLibavVideoSource("C:\Users\Admin\Input.mkv")
EZdenoise(Chroma=true, out16=true)
ConvertBits(10, dither=1)
Prefetch(12, 48)
DTL
7th February 2023, 20:42
For better quality/performance tuning and if using 'post-2.7.45' version of mvtools with MdegrainN and interpolated overlap modes you can add some set of 'overlap-mode' param. Starting from that release https://forum.doom9.org/showthread.php?p=1972579#post1972579
4 interpolated overlap modes available in MDegrainN and standard overlap in MAnalyse.
So some possible overlap-mode settings in (expected) increasing performance order:
1. MAnalyse overlap = blocksize/2, MDegrainN IntOvlp=0 (full 4x blocks number MAnalyse search and degrain 'real searched' overlap, highest quality mode, slowest)
2. MAnalyse overlap = blocksize/4, MDegrainN IntOvlp=0 (lower blocks number MAnalyse search and degrain 'real searched' overlap, a bit faster)
3. MAnalyse overlap = 0, MDegrainN IntOvlp=1 (1x search blocks number, 4x interpolated blocks number overlapped degrain with SAD re-check)
4. MAnalyse overlap = 0, MDegrainN IntOvlp=2 (1x search blocks number, 4x interpolated blocks number overlapped degrain without SAD re-check)
5. MAnalyse overlap = 0, MDegrainN IntOvlp=3 (1x search blocks number, 2x interpolated blocks number overlapped degrain with SAD re-check)
6. MAnalyse overlap = 0, MDegrainN IntOvlp=4 (1x search blocks number, 2x interpolated blocks number overlapped degrain without SAD re-check)
7. MAnalyse overlap = 0, MDegrainN IntOvlp=0 (no overlap, lowest quality, fastest)
I typically use mode 5 for most encodings.
tormento
18th October 2024, 18:24
Can we have a modified ShowMe that makes an average of "played" frames, let's say in VirtualDub or AvsPmod?
DTL
18th October 2024, 20:27
Only if you have some OCR plugin for AVS to readback into integer value of mean SAD imprinted into frame data. Currently I do not know if any integer output interface from mvtools into AVS environment exist (or even if it possible from plugin). Standard return value (object) from filter to AVS environment is clip object.
May be some plugin to read imprinted numbers exist like timecode readers ? Or time/date from some home video cams.
There is a *OCR filter and it can return string (?) value as 'current_frame' property of returned clip as some hack to return something non-clip from filter https://github.com/lcferrum/segment-display-ocr ?
I see SetVal() plugin API function http://avisynth.nl/index.php/Filter_SDK/Cplusplus_API#SetVar - will try to use it to set some script-accessible variable (integer) like meanSAD and look how it work. It is documented can be used in GetFrame so each frame can return its stats value so script need to count sum and divide to frames number to calculate mean (or other) average over processed frames (but user need to process all frames in sequential order and with single threaded mode or with MT flag for sequential frame access).
takla
28th September 2025, 10:00
- EZdenoise v5 (https://www.mediafire.com/file/sm3gwt798v0km7v/EZdenoise_v5.zip/file)
-- Added Ternary operator (thanks @DTL) to avoid using UV planes, when Chroma is set to "False".
-- Set Chroma to "True" by default.
- Added EZdenoise for VapourSynth (https://www.mediafire.com/file/3abkiruq7weod68/EZdenoise_for_VapourSynth.zip/file)
For optimal performance, use this libmvtools.dll (https://github.com/Akatmks/vapoursynth-mvtools-pr/actions/runs/17664592612/artifacts/3992845122) (Requires you to login with a GitHub account or else the link 404s)
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.