PDA

View Full Version : how put other denoiser than mdegrain to TGMC


Terka
20th April 2009, 13:45
TG in part
# final temporal filter for stabilisation, motion-compensated
want to try other denoiser, mo-compensated fluxsmoothT:
interleave(bvec3,bvec2,bvec1,last,fvec1,fvec2,fvec3). fluxsmoothT(50).selectevery(7,3)
but have problems with:
videos must be of the same size
or with colorspace which is supported by fluxsmoothT()
could someone help?

Sagekilla
20th April 2009, 15:08
Because you're interleaving the -completely- wrong thing. bvec3 implies a motion vector. What you want to do is:


bc3 = MCompensate(super, bvec3)
bc2 = MCompensate(super, bvec2)
bc1 = MCompensate(super, bvec1)
fc1 = MCompensate(super, fvec1)
fc2 = MCompensate(super, fvec2)
fc3 = MCompensate(super, fvec3)

Interleave(bc3,bc2,bc1,last,fc1,fc2,fc3)
FluxSmoothT(50).SelectEvery(7,3)

Terka
20th April 2009, 15:17
thank you.

Didée
20th April 2009, 15:23
Haven't come round yet to answer in the other thread, sorry.

With ^that^ code, you are interleaving *vector* clips. That can't work. You need to interleave compensations of the processed clip. Also, FluxSmooth has a temporal radius of 1 frame, so there's no need to interleave +/-3 wing frames. +/-1 wing frame is sufficient.

You want to replace this part:
# final temporal filter for stabilisation, motion-compensated
stage2 = (tr2==0) ? stage1b
\ : (tr2==1) ? stage1b.MVDegrain1(bvec1,fvec1, thSAD=_thSAD2,thSCD1=_SCth1,thSCD2=_SCth2,idx=8)
\ : (tr2==2) ? stage1b.MVDegrain2(bvec1,fvec1,bvec2,fvec2, thSAD=_thSAD2,thSCD1=_SCth1,thSCD2=_SCth2,idx=8)
\ : stage1b.MVDegrain3(bvec1,fvec1,bvec2,fvec2,bvec3,fvec3,thSAD=_thSAD2,thSCD1=_SCth1,thSCD2=_SCth2,idx=8)

with this:
# final temporal filter for stabilisation, motion-compensated
comp_fw1_2 = (tr2>0) ? stage1b.MVCompensate(fvec1,thSCD1=_SCth1,thSCD2=_SCth2,idx=8) : nullclip
comp_bw1_2 = (tr2>0) ? stage1b.MVCompensate(bvec1,thSCD1=_SCth1,thSCD2=_SCth2,idx=8) : nullclip
stage2 = (tr2==0) ? stage1b
\ : interleave(comp_fw1_2,stage1b,comp_bw1_2).fluxsmootht(50).selectevery(3,1)

Note that's still the code syntax for the older MVTools [MVxxx()].

Terka
20th April 2009, 15:41
yes, thank you both, i understand.
1 frame temporal radius i see.
another question to TGMC_beta1mod.avsi:
should i set MT = true to be using mvtools2?
im playing with this, because my sources are DV and have a lot of noise.
and i think its waste of time to denoise and after it deinterlace. need something more agressive on the source.