Heavyweight Denoisers, in order of percieved quality (to me):
-mvdenoise1/2/3 (pick your slowness) + fft3d for high sad picture areas
-mvdenoise1/2/3
-mvdenoise1/2/3 + predenoised motion prediction clip (stronger denoising)
-tnlmeans (technically this can ouperform mvdegrain, but its just too crazily slow with those esettings)
- Two stage fft3d (to avoid ringing, example later)
-dfttest
- fft3d
-tbilateral (sometimes better then fft3d on some content)
-Vaguedenoiser with prediction (sometimes better then fft3d, fast)
-dctfun (basically just blurs)
-frfun7 (basically just blurs and turns things to oil painting squiggles)
-deen various thresholded blurs, good when combined with more sophisticated methods
Lightweight Denoisers, in order of percieved quality (to me):
-ttempsmooth great temporal lockdown/stabilization, nonexisten/minor artifacts with default settings
-denoise3d (via ffavisynth) fast, powerful spatio temporal smoother, I have never seen it cause temporal artifacts.
-fluxsmoothST good spatio temporal 3x3x3 smoother
-degrainmedian Very powerful, fast, 3x3x3 median filter, tends to cause artifacts in anything less then mode=3, not very powerful in mode=3
-deen (in one of its temporal modes) very strong, but lots of artifacts
two stage fft3d example script:
Code:
strength = 6
fft3dfilter(bw=6, bh=6, ow=3, oh=3, plane=0, bt=1, sigma=strength)
fft3dfilter(bw=216, bh=216, ow=108, oh=108, plane=0, bt=1, sigma=strength/8, sigma2=strength/4, sigma3=strength/2, sigma4=strength)
Vaugedenoiser with prediction and temporal stabilization:
Code:
Aux = Deen("c3d", 1, 4, 8)#.ttempsmooth(maxr=7)
vaguedenoiser(nsteps=8, auxclip=aux, wiener=true, wratio=1.0, chromaT=1, threshold=1)
FluxsmoothT(3)
gradfun2db(1.51)
mvdegrain2+fft3d+temporal stabilization and debanding:
Code:
source = last
pred = source # to get stronger denoising, put denoisers here, they will change how motion vectors are predicted
backward_vec2 = pred.MVAnalyse(isb = true, delta = 2, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
backward_vec1 = pred.MVAnalyse(isb = true, delta = 1, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
forward_vec1 = pred.MVAnalyse(isb = false, delta = 1, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
forward_vec2 = pred.MVAnalyse(isb = false, delta = 2, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
maskp1 = mvmask(kind=1, vectors=forward_vec1, ysc=255).UtoY()
maskp2 = mvmask(kind=1, vectors=forward_vec2).UtoY()
maskp3 = mvmask(kind=1, vectors=backward_vec1, ysc=255).UtoY()
maskp4 = mvmask(kind=1, vectors=backward_vec2).UtoY()
maskf = average(maskp1, 0.25, maskp2, 0.25, maskp3, 0.25, maskp4, 0.25).spline36resize(source.width, source.height)
smooth = pred.fft3dfilter(bw=16, bh=16, ow=8, oh=8, bt=1, sigma=4, plane=0)
source2 = maskedmerge(source, smooth, maskf)
source3 = source2.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400,idx=2)
source3
ttempsmooth(maxr=7)
gradfun2db(1.51)