VideoHelp Forum
+ Reply to Thread
Page 1 of 4
1 2 3 ... LastLast
Results 1 to 30 of 97
Thread
  1. Guys I'm struggling with one really in bad condition tape to transfer it and to restore some of it on PC. First I tryed to fix the tape it self put it in the other housing ( the old one was squiling ) and fast forward it and rewind it couple of times because it had some wrinkles and the tape was like bend it self like from heat or something. I also put it in the old vcr and clean the tape it self with 98% alchocol and take some black garbage from it (no its not the tape couting if you think just garbage) ( althou many of you do not recomend that but i tried on couple of tapes that were mesing my vcr and it really worked they where clean and dont dropeed frames like before). I still didn’t backed the tape ( but I would like to try that in a regular owen so to see what will happen). I uploaded the mkv ( lagarith was to big ) file for you to see what is going on with the tape mind you that noise ( I will fix that in post processing ) and especially color shift is because of the bad antenna reception that I had in the time when the tape was recorded from aerial ( I have 2 or 3 with the same bad tv reception). The source vcr is FS nv 200 passtrough Panasonic dvd recorder ( tbc of the vcr is off because it makes bad jitter when on with these tape especially ). By the way the cleaning of the tape helped tremendously because before it was unwatchable at all ( the vcr head is regularly cleaned if you mean that) but it has some constant lines going up and down and periodical tripping I don’t have dropped frames by the way so I know it’s the tape the recording its in vdub lagarith 720x576 25 tff. I know that some will tell me to forget but can someone help with some software script ( no hardware ) that can at least minor this error i know that you guys know

    http://www.mediafire.com/?xt18n1g0ua6hdsc

    Thanks

    Tried with despot and descratch in avisynth ( even tries the doom forum that talks about this)but nothing happened, I played with the parameters probably the last resort is photoshop and frame by frame to mask the errors some suggestions are welcome

    1mb picture file link
    http://www.mediafire.com/?pwoyhbpbmdyovz8
    Last edited by mammo1789; 5th Feb 2012 at 20:35.
    Quote Quote  
  2. This script doesn't remove all artifacts but helps to mitigate them:
    Code:
    FFMPEGSource("C:\mendo22.mkv")
    BOB().SELECTEVEN() #input must be progressive, use here your preferred deinterlacer,
    #                                a smart bob if you want to reinterlace
    MERGECHROMA(AWARPSHARP().AWARPSHARP())# to mitigate that sort of chroma bleeding
    CLP=LAST
    PREFILT= CLP.FFT3DGPU(SIGMA=10,PLANE=4).Deen(mode="a3d", rad=4, thrY=255, thrUV=255,tthY=255,tthUV=255, min=1.0)
    
    BS=16
    
    
    
    #####################vectors computation#####################
    
    Super=MSuper(prefilt,pel=1,sharp=1)
    
    vf=MAnalyse(super,isb=false, delta=1, blksize=bs,overlap=bs/2, lambda=1000)
    vf1=MAnalyse(super,isb=false,delta=2, blksize=bs,overlap=bs/2, lambda=1000)
    vf2=MAnalyse(super,isb=false,delta=3, blksize=bs,overlap=bs/2, lambda=1000)
    vf3=MAnalyse(super,isb=false,delta=4, blksize=bs,overlap=bs/2, lambda=1000)
    vf4=MAnalyse(super,isb=false,delta=5, blksize=bs,overlap=bs/2, lambda=1000)
    vf5=MAnalyse(super,isb=false,delta=6, blksize=bs,overlap=bs/2, lambda=1000)
    
    vb=MAnalyse(super, isb=true, delta=1, blksize=bs,overlap=bs/2, lambda=1000)
    vb1=MAnalyse(super,isb=true, delta=2, blksize=bs,overlap=bs/2, lambda=1000)
    vb2=MAnalyse(super,isb=true, delta=3, blksize=bs,overlap=bs/2, lambda=1000)
    vb3=MAnalyse(super,isb=true, delta=4, blksize=bs,overlap=bs/2, lambda=1000)
    vb4=MAnalyse(super,isb=true, delta=5, blksize=bs,overlap=bs/2, lambda=1000)
    vb5=MAnalyse(super,isb=true, delta=6, blksize=bs,overlap=bs/2, lambda=1000)
    
    
    
    clp=clp.Awarpsharp(depth=6, cm=0, blurlevel=3)#Xsharpen(25, 255)
    
    superclp=MSuper(clp,pel=1,sharp=1)
    
    #####################rebuilding frame form original clip and vectors from prefiltered one #####################
    xf5=mflow(clp,superclp,vf5,thSCD1=220,thscd2=75)
    xf4=mflow(clp,superclp,vf4,thSCD1=220,thscd2=75)
    xf3=mflow(clp,superclp,vf3,thSCD1=220,thscd2=75)
    xf2=mflow(clp,superclp,vf2,thSCD1=220,thscd2=75)
    xf1=mflow(clp,superclp,vf1,thSCD1=220,thscd2=75)
    xf=mflow(clp,superclp,vf,thSCD1=220, thscd2=75)
    xb=mflow(clp,superclp,vb,thSCD1=220, thscd2=75)
    xb1=mflow(clp,superclp,vb1,thSCD1=220, thscd2=75)
    xb2=mflow(clp,superclp,vb2,thSCD1=220, thscd2=75)
    xb3=mflow(clp,superclp,vb3,thSCD1=220, thscd2=75)
    xb4=mflow(clp,superclp,vb4,thSCD1=220, thscd2=75)
    xb5=mflow(clp,superclp,vb5,thSCD1=220, thscd2=75)
    
    #####################average#####################
    
    o=Average(clp,0.01,xf5,0.012,xf4,0.018,xf3,0.028,xf2,0.042,xf1,0.115,xf,0.28,xb,0.28,xb1,0.115,
    \xb2,0.042,xb3,0.028,xb4,0.018,xb5,0.012)
    #####################final denoising step#####################
    
    dg123=MDegrain3(o,superclp, vb,vf,vb1,vf1,vb2,vf2, thsad=360)
    dg234=MDegrain3(o,superclp, vb1,vf1,vb2,vf2,vb3,vf3, thsad=360)
    dg456=MDegrain3(o,superclp, vb3,vf3,vb4,vf4,vb5,vf5, thsad=360)
    
    o=average(dg123,0.40,dg234,0.35,dg456,0.25)
    return o
    Quote Quote  
  3. If you capture the tape again are the lines in the same places in the same frames? Or do they vary with each cap? If the latter, you can use a median filter and 3 or 5 caps to eliminate most of them.

    https://forum.videohelp.com/threads/340963-Best-quality-and-speed-video-denoisers-2011?...=1#post2122313

    Then you can work on the other problems. I don't have multiple caps so I used your one cap with single frame offsets, backward and forward (as a rough approximation of 3 caps, since there's little motion) and a median of 3. First 5 seconds attached.
    Image Attached Files
    Last edited by jagabo; 6th Feb 2012 at 20:30.
    Quote Quote  
  4. I didn't address the colors or other issues; this just addresses the dropouts and line noise while maintaining interlace. It's based on a modifed script from "pirej", who has posted some scripts on VHS cleaning before

    It's a fairly strong filtered version, but still retains a decent amount of details. You can improve it by using a weaker filtered version , and composite them using feathered masks in after effects or a NLE or multiple layers - the point is using avisynth can reduce the amount of manual work for restoration .

    I replaced a bad section of frames using a mvtools modified function based on mflowinter ("RX, RP, R") . There are other scripts, that may give better results , but I'm just used to using these older functions. See the last few pages of this thread
    http://forum.doom9.org/showthread.php?t=152758

    If you want to use the older ones:
    R is for one frame, eg. R(101) would replace 101
    RP is for pair, e.g. RP(101) would replace 101,102
    RX is for any number, eg. RX(101,5), would replace 101-105
    I posted more info in another thread, use search if you want more info





    Code:
    FFVideoSource("mendo22.mkv", fpsnum=25, fpsden=1, seekmode=0)
    
    AssumeTFF()
    SeparateFields() 
    a=last
    
    clense(reduceflicker=false).merge(last,0.5).clense(reduceflicker=false)
    mot=removegrain(11,0).removegrain(20,0).DepanEstimate(range=2)
    take2=a.depaninterleave(mot,prev=2,next=2,subpixel=2)
    clean1=take2.TMedian2().selectevery(5,2)
    
    sup1 = clean1.minblur(1).removegrain(11,0).removegrain(11,0)
     \           .mt_lutxy(clean1,"x 1 + y < x 2 + x 1 - y > x 2 - y ? ?",U=2,V=2)
     \           .msuper(pel=2,sharp=0)
    sup2 = a.msuper(pel=2,levels=1,sharp=2)
    
    bv22=sup1.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    bv21=sup1.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    fv21=sup1.manalyse(isb=false,truemotion=false,global=true,delta=1,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    fv22=sup1.manalyse(isb=false,truemotion=false,global=true,delta=2,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
    
    interleave(a.mcompensate(sup2,fv22),a.mcompensate(sup2,fv21),a,a.mcompensate(sup2,bv21),a.mcompensate(sup2,bv22))
    TMedian2().selectevery(5,2)
    
    sup3 = last.msuper(pel=2,sharp=2)
    bv33=sup3.manalyse(isb=true, truemotion=false,global=true,delta=3,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    bv32=sup3.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    bv31=sup3.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    fv31=sup3.manalyse(isb=false,truemotion=false,global=true,delta=1,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    fv32=sup3.manalyse(isb=false,truemotion=false,global=true,delta=2,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    fv33=sup3.manalyse(isb=false,truemotion=false,global=true,delta=3,blksize=8,overlap=4,search=5,searchparam=4,DCT=5)
    
    last.mdegrain3(sup3,bv31,fv31,bv32,fv32,bv33,fv33,thSAD=499)
    
    Interleave() 
    Weave()
    
    ###
    #####interpolate bad frames and residual cleaning
    ###
    
    Super = msuper()
    bv1 = manalyse(Super, isb=true, delta=2)
    fv1 = manalyse(Super, isb=false, delta=2)
    bv2 = manalyse(Super, isb=true, delta=3)
    fv2 = manalyse(Super, isb=false, delta=3)
    global  CandidatesForN = mflowinter(Super, bv2, fv2, time=33.3, ml=100)
    global  CandidatesForO = mflowinter(Super, bv2, fv2, time=66.7, ml=100)
    global   CandidatesForC = mflowinter(Super, bv1, fv1, time=50.0, ml=100)
    
    last
    rx(104,12) #104-116 replaced
    
    AssumeTFF()
    SeparateFields() 
    f1=SelectEven().RemoveDirtMC(500,false).LSFMod(strength=50)
    f2=SelectOdd().RemoveDirtMC(500,false).LSFMod(strength=50)
    Interleave(f1,f2) 
    Weave()
    
    
    
    
    
    function MinBlur(clip clp, int r, int "uv")
    {
    uv   = default(uv,3)
    uv2  = (uv==2) ? 1 : uv
    rg4  = (uv==3) ? 4 : -1
    rg11 = (uv==3) ? 11 : -1
    rg20 = (uv==3) ? 20 : -1
    medf = (uv==3) ? 1 : -200
    
    RG11D = (r==0) ? mt_makediff(clp,clp.sbr(),U=uv2,V=uv2)
     \    : (r==1) ? mt_makediff(clp,clp.removegrain(11,rg11),U=uv2,V=uv2)
     \    : (r==2) ? mt_makediff(clp,clp.removegrain(11,rg11).removegrain(20,rg20),U=uv2,V=uv2)
     \    :          mt_makediff(clp,clp.removegrain(11,rg11).removegrain(20,rg20).removegrain(20,rg20),U=uv2,V=uv2)
    RG4D  = (r<=1) ? mt_makediff(clp,clp.removegrain(4,rg4),U=uv2,V=uv2)
     \    : (r==2) ? mt_makediff(clp,clp.medianblur(2,2*medf,2*medf),U=uv2,V=uv2)
     \    :          mt_makediff(clp,clp.medianblur(3,3*medf,3*medf),U=uv2,V=uv2)
    DD    = mt_lutxy(RG11D,RG4D,"x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?",U=uv2,V=uv2)
    clp.mt_makediff(DD,U=uv,V=uv)
    return(last)
    }
    
    # median of 5 clips from Helpers.avs by G-force
    Function Median2(clip "input_1", clip "input_2", clip "input_3", clip "input_4", clip "input_5", string "chroma")
    {
    chroma = default(chroma,"process") #default is "process". Alternates: "copy first" or "copy second"
    #MEDIAN(i1,i3,i5)
    Interleave(input_1,input_3,input_5)
    chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
    m1 = selectevery(3,1)
    #MAX(MIN(i1,i3,i5),i2)
    m2  = input_1.MT_Logic(input_3,"min",chroma=chroma).MT_Logic(input_5,"min",chroma=chroma).MT_Logic(input_2,"max",chroma=chroma)
    #MIN(MAX(i1,i3,i5),i4)
    m3  = input_1.MT_Logic(input_3,"max",chroma=chroma).MT_Logic(input_5,"max",chroma=chroma).MT_Logic(input_4,"min",chroma=chroma)
    Interleave(m1,m2,m3)
    chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
    selectevery(3,1)
    chroma == "copy first" ? last.MergeChroma(input_1) : chroma == "copy second" ? last.MergeChroma(input_2) : last
    Return(last)
    }
    
    function TMedian2(clip c) {
    Median2( c.selectevery(1,-2), c.selectevery(1,-1), c, c.selectevery(1,1), c.selectevery(1,2) ) }
    
    
    
    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=limit,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
    } 
    
    
    
    function R(clip Source, int N)
    {
     # N is number of the frame in Source that needs replacing. 
     # Frame N  will be replaced.
     
     Source.trim(0,-N) ++ CandidatesForC.trim(N-1,-1) ++ Source.trim(N+1,0)
    }
    
    
    function RP(clip Source, int N)
    {
     # N is number of the first frame in Source that needs replacing. 
     # Frames N and N+1(O) will be replaced.
     
     Source.trim(0,-N) ++ CandidatesForN.trim(N-1,-1) \
        ++ CandidatesForO.trim(N-1,-1) ++ Source.trim(N+2,0)
    }
    
    
    function RX(clip Source, int N, int X)
    {
     # N is number of the 1st frame in Source that needs replacing. 
     # X is total number of frames to replace
     #e.g. RX(101, 5) would replace 101,102,103,104,105 , by using 100 and 106 as reference points for mflowfps interpolation
     
    start=Source.trim(N-1,-1) #one good frame before, used for interpolation reference point
    end=Source.trim(N+X,-1) #one good frame after, used for interpolation reference point
     
    start+end
    AssumeFPS(1) #temporarily FPS=1 to use mflowfps
      
    super = MSuper()
    backward_vec = MAnalyse(super, isb = true)
    forward_vec = MAnalyse(super, isb = false)
    MFlowFps(super, backward_vec, forward_vec, blend=false, num=X+1, den=1) #num=X+1
    AssumeFPS(FrameRate(Source)) #return back to normal source framerate for joining
    Trim(1, framecount-1) #trim ends, leaving replacement frames
      
    Source.trim(0,-N) ++ last ++ Source.trim(N+X+1,0)
    }
    Image Attached Files
    Quote Quote  
  5. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    jagabo and poisondeathray, you both have enough in one post apiece to keep us all studying for a month. Very nice.
    Last edited by sanlyn; 21st Mar 2014 at 22:04.
    Quote Quote  
  6. My script was pretty simple:

    Code:
    # median of 3 clips from Helpers.avs by G-force
    Function Median1(clip input_1, clip input_2, clip input_3, string "chroma")
    {
     chroma = Default(chroma,"process") #default is "process". Alternates: "copy first" or "copy second"
    
     Interleave(input_1,input_2,input_3)
     chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
     SelectEvery(3,1)
    
     chroma == "copy first" ? last.MergeChroma(input_1) : chroma == "copy second" ? last.MergeChroma(input_2) : last
    
     Return(last)
    }
    
    
    # replace these with three separate caps
    # use Trim() to sync them.
    v1=ffMpegSource2("mendo22.mkv") 
    v2=Trim(v1, 1, 0)
    v3=Trim(v2, 1, 0)
    
    Median1(v1,v2,v3)
    The technique works best with video that's been time base corrected. And you need to have no dropped or inserted frames in the segment you're treating.
    Quote Quote  
  7. jagabo and poisondeathray, you both have enough in one post apiece to keep us all studying for a month. Very nice.
    I must say that I’m officially impressed from poisondeathray work on the clip, thanks librarian also but it seams that it leaves some lines where poisondeathray script is eliminating all little blurring maybe but really great, now I have to figure it out how to use it it looks like rocket science .
    One question is this works random ( automatically) on the clip or I have to specify which frames are bad ( I couldn’t understand that in doom forum)?

    If you capture the tape again are the lines in the same places in the same frames? Or do they vary with each cap? If the latter, you can use a median filter and 3 or 5 caps to eliminate most of them.
    Thanks jagabo I think always the same but maybe wrong, I will try that now is late night and I’m sleepy in here but in the morning for sure ( I can’t wait )
    Quote Quote  
  8. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by librarian View Post
    Code:
    PREFILT= CLP.FFT3DGPU(SIGMA=10,PLANE=4).Deen(mode="a3d", rad=4, thrY=255, thrUV=255,tthY=255,tthUV=255, min=1.0)
    Including FFT3DGPU is limiting for those of us who don't have the latest graphics cards. Would plain old FFT3D work in its place?
    Last edited by sanlyn; 21st Mar 2014 at 22:04.
    Quote Quote  
  9. Originally Posted by mammo1789 View Post
    One question is this works random ( automatically) on the clip or I have to specify which frames are bad ( I couldn’t understand that in doom forum)?
    Mostly automatic for the thin little dropouts, but there was a section that was very bad - with thick distortions or completely damaged frames - those are the sections you interpolate (generate new "inbetween" frames between 2 reference points).

    eg if you look at the script:
    rx(104,12) #104-116 replaced so 104-116 were completely replaced, because frames were too damaged. Order or filters is important, because you need clean frames to interpolate from (otherwise you propogate noise and errors). Interpolation
    Quote Quote  
  10. I'm trying this script but it return an error, i am missing msuper it seems, where can i get this

    It would be nice to have the full list of all the plugins/versions required
    Last edited by themaster1; 7th Feb 2012 at 09:34.
    *** DIGITIZING VHS / ANALOG VIDEOS SINCE 2001**** GEAR: JVC HR-S7700MS, TOSHIBA V733EF AND MORE
    Quote Quote  
  11. Banned
    Join Date
    Oct 2004
    Location
    New York, US
    Search Comp PM
    Originally Posted by themaster1 View Post
    I'm trying this script but it return an error, i am missing msuper it seems, where can i get this

    It would be nice to have the full list of all the plugins/versions required
    msuper is a function in newer version of mvtools.
    Last edited by sanlyn; 21st Mar 2014 at 22:05.
    Quote Quote  
  12. yeah i've managed to make it work the filters required are RemoveGrain.dll, DePanEstimate.dll, DePan.dll, mvtools2.dll(v2.5.10), RemoveDirt.dll
    *** DIGITIZING VHS / ANALOG VIDEOS SINCE 2001**** GEAR: JVC HR-S7700MS, TOSHIBA V733EF AND MORE
    Quote Quote  
  13. yeah i've managed to make it work the filters required are RemoveGrain.dll, DePanEstimate.dll, DePan.dll, mvtools2.dll(v2.5.10), RemoveDirt.dll
    Thanks master is that complete list of plugins or it need more. I’m still of process of capturing ( 4 th copy so far) and the cassette seems it leaves more junk now then in previous copies ( either the vcr is getting warmer 5 hours now, or the tape is losing oxide more and more )I’m trying to see will jagabo median script do something and I will let you know how it goes I will send you pm about the massage you send me. I think that this script will be ideal for my problem and I will try it in 1-2 hours from now, also I will try the script on my earlier problem tape which had the same strip moving lines from top to bottom .
    Quote Quote  
  14. Originally Posted by mammo1789 View Post
    I’m still of process of capturing ( 4 th copy so far)... I’m trying to see will jagabo median script do something
    You only need to look at two short caps to see if the lines are in the same place or not. If they're all in the same place the median technique will not work at all.
    Quote Quote  
  15. You only need to look at two short caps to see if the lines are in the same place or not. If they're all in the same place the median technique will not work at all.
    Yep I know that unfortunately the lines going from top to bottom are the same on same spot ( no surprise) there but random drop outs probably from bad tape and loose oxidation ( garbage trough screen is not on the same spots twice so median blend will help right?) for lines I think the poisontread script is perfect ( at least on the example that he send me ) but I have some script understanding problem ( I change to avisource for the lagarith file instead of ffsource but I don’t understand “fpsnum=25, fpsden=1, seekmode=0” probably not necessary right ?
    Image
    [Attachment 10811 - Click to enlarge]
    Quote Quote  
  16. Image
    [Attachment 10812 - Click to enlarge]

    Here we go again I get error on the script

    i put RemoveGrain.dll, DePanEstimate.dll, DePan.dll, mvtools2.dll(v2.5.10), RemoveDirt.dll

    what else ?
    Quote Quote  
  17. Good question, i have quite a few that autoload so i probably have missed some
    *** DIGITIZING VHS / ANALOG VIDEOS SINCE 2001**** GEAR: JVC HR-S7700MS, TOSHIBA V733EF AND MORE
    Quote Quote  
  18. poisondeathray I like you script but I don’t know how to make it work some help I will appreciate a lot is master right with needed plugins? Or is something else needed, I put them in plugins folder but I got this error also should I change the avisource instead of ffsource

    script

    FFVideoSource("D:\VIDEO OBR\snimak eden.avi", fpsnum=25, fpsden=1, seekmode=0)

    AssumeTFF()
    SeparateFields()
    a=last

    clense(reduceflicker=false).merge(last,0.5).clense (reduceflicker=false)
    mot=removegrain(11,0).removegrain(20,0).DepanEstim ate(range=2)
    take2=a.depaninterleave(mot,prev=2,next=2,subpixel =2)
    clean1=take2.TMedian2().selectevery(5,2)

    sup1 = clean1.minblur(1).removegrain(11,0).removegrain(11 ,0)
    \ .mt_lutxy(clean1,"x 1 + y < x 2 + x 1 - y > x 2 - y ? ?",U=2,V=2)
    \ .msuper(pel=2,sharp=0)
    sup2 = a.msuper(pel=2,levels=1,sharp=2)

    bv22=sup1.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=16,ov erlap=8,search=5,searchparam=4,DCT=5)
    bv21=sup1.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=16,ov erlap=8,search=5,searchparam=4,DCT=5)
    fv21=sup1.manalyse(isb=false,truemotion=false,glob al=true,delta=1,blksize=16,overlap=8,search=5,sear chparam=4,DCT=5)
    fv22=sup1.manalyse(isb=false,truemotion=false,glob al=true,delta=2,blksize=16,overlap=8,search=5,sear chparam=4,DCT=5)

    interleave(a.mcompensate(sup2,fv22),a.mcompensate( sup2,fv21),a,a.mcompensate(sup2,bv21),a.mcompensat e(sup2,bv22))
    TMedian2().selectevery(5,2)

    sup3 = last.msuper(pel=2,sharp=2)
    bv33=sup3.manalyse(isb=true, truemotion=false,global=true,delta=3,blksize=8,ove rlap=4,search=5,searchparam=4,DCT=5)
    bv32=sup3.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=8,ove rlap=4,search=5,searchparam=4,DCT=5)
    bv31=sup3.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=8,ove rlap=4,search=5,searchparam=4,DCT=5)
    fv31=sup3.manalyse(isb=false,truemotion=false,glob al=true,delta=1,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)
    fv32=sup3.manalyse(isb=false,truemotion=false,glob al=true,delta=2,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)
    fv33=sup3.manalyse(isb=false,truemotion=false,glob al=true,delta=3,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)

    last.mdegrain3(sup3,bv31,fv31,bv32,fv32,bv33,fv33, thSAD=499)

    Interleave()
    Weave()

    ###
    #####interpolate bad frames and residual cleaning
    ###

    Super = msuper()
    bv1 = manalyse(Super, isb=true, delta=2)
    fv1 = manalyse(Super, isb=false, delta=2)
    bv2 = manalyse(Super, isb=true, delta=3)
    fv2 = manalyse(Super, isb=false, delta=3)
    global CandidatesForN = mflowinter(Super, bv2, fv2, time=33.3, ml=100)
    global CandidatesForO = mflowinter(Super, bv2, fv2, time=66.7, ml=100)
    global CandidatesForC = mflowinter(Super, bv1, fv1, time=50.0, ml=100)

    last
    rx(104,12) #104-116 replaced

    AssumeTFF()
    SeparateFields()
    f1=SelectEven().RemoveDirtMC(500,false).LSFMod(str ength=50)
    f2=SelectOdd().RemoveDirtMC(500,false).LSFMod(stre ngth=50)
    Interleave(f1,f2)
    Weave()





    function MinBlur(clip clp, int r, int "uv")
    {
    uv = default(uv,3)
    uv2 = (uv==2) ? 1 : uv
    rg4 = (uv==3) ? 4 : -1
    rg11 = (uv==3) ? 11 : -1
    rg20 = (uv==3) ? 20 : -1
    medf = (uv==3) ? 1 : -200

    RG11D = (r==0) ? mt_makediff(clp,clp.sbr(),U=uv2,V=uv2)
    \ : (r==1) ? mt_makediff(clp,clp.removegrain(11,rg11),U=uv2,V=u v2)
    \ : (r==2) ? mt_makediff(clp,clp.removegrain(11,rg11).removegra in(20,rg20),U=uv2,V=uv2)
    \ : mt_makediff(clp,clp.removegrain(11,rg11).removegra in(20,rg20).removegrain(20,rg20),U=uv2,V=uv2)
    RG4D = (r<=1) ? mt_makediff(clp,clp.removegrain(4,rg4),U=uv2,V=uv2 )
    \ : (r==2) ? mt_makediff(clp,clp.medianblur(2,2*medf,2*medf),U= uv2,V=uv2)
    \ : mt_makediff(clp,clp.medianblur(3,3*medf,3*medf),U= uv2,V=uv2)
    DD = mt_lutxy(RG11D,RG4D,"x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?",U=uv2,V=uv2)
    clp.mt_makediff(DD,U=uv,V=uv)
    return(last)
    }

    # median of 5 clips from Helpers.avs by G-force
    Function Median2(clip "input_1", clip "input_2", clip "input_3", clip "input_4", clip "input_5", string "chroma")
    {
    chroma = default(chroma,"process") #default is "process". Alternates: "copy first" or "copy second"
    #MEDIAN(i1,i3,i5)
    Interleave(input_1,input_3,input_5)
    chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
    m1 = selectevery(3,1)
    #MAX(MIN(i1,i3,i5),i2)
    m2 = input_1.MT_Logic(input_3,"min",chroma=chroma).MT_L ogic(input_5,"min",chroma=chroma).MT_Logic(input_2 ,"max",chroma=chroma)
    #MIN(MAX(i1,i3,i5),i4)
    m3 = input_1.MT_Logic(input_3,"max",chroma=chroma).MT_L ogic(input_5,"max",chroma=chroma).MT_Logic(input_4 ,"min",chroma=chroma)
    Interleave(m1,m2,m3)
    chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
    selectevery(3,1)
    chroma == "copy first" ? last.MergeChroma(input_1) : chroma == "copy second" ? last.MergeChroma(input_2) : last
    Return(last)
    }

    function TMedian2(clip c) {
    Median2( c.selectevery(1,-2), c.selectevery(1,-1), c, c.selectevery(1,1), c.selectevery(1,2) ) }



    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
    }



    function R(clip Source, int N)
    {
    # N is number of the frame in Source that needs replacing.
    # Frame N will be replaced.

    Source.trim(0,-N) ++ CandidatesForC.trim(N-1,-1) ++ Source.trim(N+1,0)
    }


    function RP(clip Source, int N)
    {
    # N is number of the first frame in Source that needs replacing.
    # Frames N and N+1(O) will be replaced.

    Source.trim(0,-N) ++ CandidatesForN.trim(N-1,-1) \
    ++ CandidatesForO.trim(N-1,-1) ++ Source.trim(N+2,0)
    }


    function RX(clip Source, int N, int X)
    {
    # N is number of the 1st frame in Source that needs replacing.
    # X is total number of frames to replace
    #e.g. RX(101, 5) would replace 101,102,103,104,105 , by using 100 and 106 as reference points for mflowfps interpolation

    start=Source.trim(N-1,-1) #one good frame before, used for interpolation reference point
    end=Source.trim(N+X,-1) #one good frame after, used for interpolation reference point

    start+end
    AssumeFPS(1) #temporarily FPS=1 to use mflowfps

    super = MSuper()
    backward_vec = MAnalyse(super, isb = true)
    forward_vec = MAnalyse(super, isb = false)
    MFlowFps(super, backward_vec, forward_vec, blend=false, num=X+1, den=1) #num=X+1
    AssumeFPS(FrameRate(Source)) #return back to normal source framerate for joining
    Trim(1, framecount-1) #trim ends, leaving replacement frames

    Source.trim(0,-N) ++ last ++ Source.trim(N+X+1,0)
    Quote Quote  
  19. mammo - I can't see your attachments. Please fix them, use another hosting site, or type the error message out

    ( I change to avisource for the lagarith file instead of ffsource but I don’t understand “fpsnum=25, fpsden=1, seekmode=0” probably not necessary right ?
    Yes, AVISource is fine. The reason why that was used for FFVideoSource, was that sometimes the frame rate is a bit off, and seekmode=0 gives a bit more frame accuracy (when you do non linear seeks when tweaking the script, it can lose it's place, or give slightly different results - but if you go linearly you will get consistent results)
    Quote Quote  
  20. Yes, AVISource is fine. The reason why that was used for FFVideoSource, was that sometimes the frame rate is a bit off, and seekmode=0 gives a bit more frame accuracy (when you do non linear seeks when tweaking the script, it can lose it's place, or give slightly different results - but if you go linearly you will get consistent results)
    Thanks for explanation I got it now I use our site (videohelp) for uploading pictures but maybe something wrong sorry I’m uploading them now on imageshack
    The error message
    http://img826.imageshack.us/img826/2492/untited2.png
    I’m using avisynth mt version 2.5.8 this is my plugin folder
    http://img69.imageshack.us/img69/3224/avisynth.png

    So I will use FFVideoSource then your script just source file different
    Quote Quote  
  21. I posted the screenshot here, incase problems with imageshack

    What does that line correspond to? line 176, column 49? Upload your .avs file (the spaces and line order might make the script different than mine)
    Image Attached Thumbnails Click image for larger version

Name:	untited2.png
Views:	431
Size:	183.0 KB
ID:	10819  

    Quote Quote  
  22. BTW, I generally break the script out into sections using lossless encodes (e.g. lagarith) - this helps so you can tweak & fine tune settings when stacking filters

    e.g. I did an encode all the way upto
    ###
    #####interpolate bad frames and residual cleaning
    ###


    Then afterwards AVISoure() plus the rest in a 2nd script for the residual cleaning and interpolating frames (you need clean frames to interpolate from, so usually interpolation is done near the last)
    Quote Quote  
  23. Here is the avs script

    yes the source is lagarith also maybe Super = msuper() is problem
    Image Attached Files
    Quote Quote  
  24. By the way how do you know which line is which and which column is which in notepad is something counting them automaticly that I don’t know
    line 176, column 49?
    Quote Quote  
  25. I use avspmod, and you can see the line numbers easily

    Not sure of the error, that corresponds to the function RX

    line 176
    Code:
    Source.trim(0,-N) ++ last ++ Source.trim(N+X+1,0)
    It might be that I did it in sections, preceded by AVISource after the 1st half. Try it that way

    EDIT you're missing a "}"bracket

    You copy & pasted the code incorrectly
    Quote Quote  
  26. O and jagabo if i trimmed them the clips to match already in vdub no need for
    trim function right or wrong?
    # replace these with three separate caps
    # use Trim() to sync them.
    v1=ffMpegSource2("mendo22.mkv")
    v2=Trim(v1, 1, 0)
    v3=Trim(v2, 1, 0)

    Median1(v1,v2,v3)

    I saw it now my bad thanks but the error now says no function named FFvideosource am I missing some plugin for opening some files ( i uploaded the plugin folder something missing so the script will work ? or)
    Last edited by mammo1789; 7th Feb 2012 at 16:35.
    Quote Quote  
  27. I downloaded the avspmod and when opening it says that a plugin is having undisired symbols mt_mktools-25.dll rename them or use short style
    Quote Quote  
  28. You can ignore or change it. I chose to ignore
    Quote Quote  
  29. Originally Posted by mammo1789 View Post
    By the way how do you know which line is which and which column is which in notepad
    View -> Status Bar (word wrap must be off).

    Originally Posted by mammo1789 View Post
    O and jagabo if i trimmed them the clips to match already in vdub no need for
    trim function right or wrong?
    That's correct.

    Originally Posted by mammo1789 View Post
    the error now says no function named FFvideosource am I missing some plugin
    http://code.google.com/p/ffmpegsource/

    What type of file are you trying to open?
    Quote Quote  
  30. What type of file are you trying to open?
    lagarith yuv2 file is the source if i put ffvideosource i get error like that if i put avisource i get now different error only planar source should i put yv12 i tough there are no color conversation happening ?
    http://img12.imageshack.us/img12/3214/sdsog.png

    nope that way invalid mode 20 in remove grain ?!

    my plugin folder anything missing ? different versions
    http://img684.imageshack.us/img684/6351/65763674.png
    is there somewhere i can put planar= true ?
    Last edited by mammo1789; 7th Feb 2012 at 17:30.
    Quote Quote  



Similar Threads

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