View Single Post
Old 25th May 2006, 11:59   #29  |  Link
Heini011
Registered User
 
Join Date: Nov 2003
Posts: 148
Hi folks,

i wrote a simpler and less brutal script function for denoising modern high quality movies. it was aimed as a better replacement for mvdenoise.

you can modify the mvtools blocksize:
cbs = 4 sometimes better denoising caused by better block-matching, less blocking
cbs = 8 much faster and may preserve slightly more sharpness


Code:
function RemoveTempGrain(clip input, int _mode)
{
  rg = RemoveGrain(input, mode=_mode)
  return TemporalRepair(rg, input)
}

function RemoveDirt_HQ(clip input, int tlimit, int rgrain, bool "_grey")
{
  _dgr = 0.4+rgrain*0.25
  clensed = input.RemoveTempGrain(1).FluxSmoothST(tlimit,rgrain)
  restore = input.VagueDenoiser(threshold=_dgr, nsteps=6, chromaT=_dgr, percent=100).RemoveGrain(1)
  alt = restore
  return RestoreMotionBlocks(clensed, restore, neighbour=input, alternative=alt, pthreshold=3+2*rgrain, cthreshold=3+2*rgrain, gmthreshold=40, dist=1, dmode=1, debug=false, noise=tlimit+1, noisy=12, grey=false)
}

global idx_c = 4

function RemoveNoiseMC_HQ(clip,int "tlimit", int "rgrain", float "csharp")
{
  tlimit = default(tlimit,4)
  rgrain = default(rgrain,1)
  csharp = rgrain>1 ? default(csharp,0.14) : default(csharp,0.13)
  global idx_c = idx_c + 1
  cbs = 4
  ccf = cbs*cbs/64
  cpn = tlimit>6 ? 70*ccf : 75*ccf
  bvec1 = clip.MVAnalyse(isb=false, blksize=cbs, delta=1, pel=2, sharp=1, overlap=0, truemotion=true, pnew=cpn, idx=idx_c)
  fvec1 = clip.MVAnalyse(isb=true, blksize=cbs, delta=1, pel=2, sharp=1, overlap=0, truemotion=true, pnew=cpn, idx=idx_c)
  backw1 = clip.MVFlow(bvec1, idx=idx_c)
  forw1  = clip.MVFlow(fvec1, idx=idx_c)
  dnc = interleave(backw1,clip,forw1)
  dnc = dnc.RemoveDirt_HQ(tlimit,rgrain)
  dnc = dnc.SelectEvery(3,1)
  return csharp==0 ? dnc : \
    clip.SeeSaw(dnc, Sstr=csharp, Szp=12, SdampHi=20, bias=40)
}



function hqfilter(clip c)
{
  c=c.RemoveNoiseMC_HQ(tlimit=4,rgrain=1)
  c=c.LimitedSharpenFaster(Smode=4,strength=15,overshoot=1,wide=false,ss_x=1.3,ss_y=1.3)
  return c
}
27. may: very small update @ seesaw

Last edited by Heini011; 17th August 2006 at 20:07.
Heini011 is offline   Reply With Quote