VideoHelp Forum
+ Reply to Thread
Results 1 to 2 of 2
Thread
  1. Member Deter's Avatar
    Join Date
    Dec 2007
    Location
    United States
    Search Comp PM
    Was just wondering what are the best scripts to use for these filters:

    RemoveDirt & Descratch

    #1 to mask out VHS & Betamax drop outs

    #2 To clean up old video shot on film that have:
    A) An odd white spec in the video (Which doesn't also remove other white objects such as a baseball)
    B) Large random spots in an old film
    B) A damage frame with lines and black & white random dots in the video.
    Quote Quote  
  2. Descratch IMO has limited value

    RemoveDirtMC does a good job with most those things you listed if the defects or damage occur randomly and in 1 frame or field . It uses motion estimation to look at the differences between frames. It tends to be more selective and less damaging than the vanilla RemoveDirt. If you duplicate frames, you have to remove them first otherwise it won't detect the defects . Similarly if defect appears in same position in 2 adjacent frames, it won't detect it.

    You can adjust the strength , start low always and work your way up. If you have complex material, you can mask and combine a strongly filtered video with portions of weak filtered video. It doesn't work well with very large defects (like 1/2 the frame). Another approach to large defects is to reconstruct the entire frame (use mflowinter to generate the "inbetween" frame from surrounding "good" frames)

    If you want to preserve interlacing, apply it to odd/even fields , interleave and weave





    function RemoveDirt(clip input, int limit, bool _grey)
    {
    clensed=input.Clense(grey=_grey, cache=4)
    alt=input.RemoveGrain(2)
    return RestoreMotionBlocks(clensed,input,alternative=alt, pthreshold=6,cthreshold=8, gmthreshold=40,dist=3, dmode=2,debug=false,noise=limit,noisy=4, grey=_grey)
    # Alternative settings
    # return RestoreMotionBlocks(clensed,input,alternative=alt, pthreshold=4,cthreshold=6, gmthreshold=40,dist=1,dmode=2,debug=false,noise=li mit,noisy=12,grey=_grey,show=true)
    # return RestoreMotionBlocks(clensed,input,alternative=alt, pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,tolerance= 12,dmode=2,debug=false,noise=limit,noisy=12,grey=_ grey,show=false)
    }

    function RemoveDirtMC(clip,int limit, bool "_grey")
    {
    _grey=default(_grey, false)
    limit = default(limit,6)
    i=MSuper(clip,pel=2)
    bvec = MAnalyse(i,isb=false, blksize=8, delta=1, truemotion=true)
    fvec = MAnalyse(i,isb=true, blksize=8, delta=1, truemotion=true)
    backw = MFlow(clip,i,bvec)
    forw = MFlow(clip,i,fvec)
    clp=interleave(backw,clip,forw)
    clp=clp.RemoveDirt(limit,_grey)
    clp=clp.SelectEvery(3,1)
    return clp
    }
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!