VideoHelp Forum
+ Reply to Thread
Results 1 to 19 of 19
Thread
  1. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    Hello how are you? I'm a little newbie with avisynth. I have tried a lot for more than surfing the internet, to restore my VHS tapes transfers by this means, but I do not succeed.
    Here there are many lines and points in the image. And I have catches of VHS-C have many streaks.
    Can you help me?
    Last edited by Andy2018; 24th Jan 2019 at 20:53.
    Quote Quote  
  2. Search on:

    "VHS Restoration"

    both in this forum, and at doom9.org.

    This is one of several scripts I use. I always tweak the settings for each tape.

    Code:
    Loadplugin("C:\Program Files\AviSynth 2.5\plugins\MVTools\mvtools2.dll")
    LoadPlugin("c:\Program Files\AviSynth 2.5\plugins\CNR\Cnr2.dll")
    
    #Modify this line to point to your video file
    source=AVISource("E:\fs.avi").killaudio().AssumeBFF()
    
    #Only use chroma restoration for analog source material
    chroma=source.Cnr2("oxx",8,16,191,100,255,32,255,false) #VHS
    
    #Set overlap in line below to 0, 2, 4, 8. Higher number=better, but slower
    #For VHS, 4,0 seems to work better than 8,2. Most of difference is in shadows
    #However, 8,0 is good enough and MUCH faster. 8,2 doesn't seem to make much difference on VHS.
    
    output=MDegrain2i2(chroma,8,0,400,0)  
    
    return output
    
    #Enable the following block to see original frame followed by denoised frame
    /*
    return Interleave(
    \    source
    \  , output
    \ )
    */
    
    #-------------------------------
    
    function MDegrain2i2(clip source, int "blksize", int "overlap", int "denoising_strength", int "dct")
    {
    Vshift=0 # 2 lines per bobbed-field per tape generation (PAL); original=2; copy=4 etc
    Hshift=0 # determine experimentally 
    overlap=default(overlap,0) # overlap value (0 to 4 for blksize=8)
    denoising_strength=default(denoising_strength, 400)
    dct=default(dct,0) # use dct=1 for clip with light flicker
    
    fields=source.SeparateFields() # separate by fields
    
    #This line gets rid of vertical chroma halo
    #fields=MergeChroma(fields,crop(fields,Hshift,Vshift,0,0).addborders(0,0,Hshift,Vshift))
    #This line will shift chroma down and to the right instead of up and to the left
    #fields=MergeChroma(fields,Crop(AddBorders(fields,Hshift,Vshift,0,0),0,0,-Hshift,-Vshift))
    
    super = fields.MSuper(pel=2, sharp=1)
    backward_vec2 = super.MAnalyse(isb = true, delta = 2, blksize=blksize, overlap=overlap, dct=dct)
    forward_vec2 = super.MAnalyse(isb = false, delta = 2, blksize=blksize, overlap=overlap, dct=dct)
    backward_vec4 = super.MAnalyse(isb = true, delta = 4, blksize=blksize, overlap=overlap, dct=dct)
    forward_vec4 = super.MAnalyse(isb = false, delta = 4, blksize=blksize, overlap=overlap, dct=dct)
    
    MDegrain2(fields,super, backward_vec2,forward_vec2,backward_vec4,forward_vec4,thSAD=denoising_strength ) 
    
    #UnsharpMask( clip , int "strength" , int "radius" , int "threshold" ) 
    #strength: strength. The default is 64.
    #radius: the scope of the blurring process. The default is 3.
    #threshold: threshold. Absolute value of the processing component is greater than the threshold blur. The default is 8.
    
    #unsharpmask(60,3,0) #not sure whether to put this before or after the weave.
    
    Weave()
    }
    
    function IResize(clip Clip, int NewWidth, int NewHeight) {
      Clip
      SeparateFields() 
      Shift=(GetParity() ? -0.25 : 0.25) * (Height()/Float(NewHeight/2)-1.0)
      E  = SelectEven().Spline36resize(NewWidth, NewHeight/2, 0,    Shift)
      O  = SelectOdd( ).Spline36resize(NewWidth, NewHeight/2, 0,   -Shift)
      Ec = SelectEven().Spline36Resize(NewWidth, NewHeight/2, 0,  2*Shift)
      Oc = SelectOdd( ).Spline36Resize(NewWidth, NewHeight/2, 0, -2*shift)
      Interleave(E, O)
      IsYV12() ? MergeChroma(Interleave(Ec, Oc)) : Last
      Weave()
    }
     
    
    function Remove_Tears(clip source) {
    
    #Create mask
    ml           = 100 # mask scale
    scene_change = 400 # scene change
    
    super = MSuper(source,pel=2, sharp=1)
    
    vf = MAnalyse(super,isb=false) # forward vectors 
    vb = MAnalyse(super,isb=true)  # backward vectors 
    
    cf = MFlow(source,super,vf,thSCD1=scene_change) # previous compensated forward
    cb = MFlow(source,super,vb,thSCD1=scene_change) # next compensated backward 
    
    sadf = MMask(super,vf, ml=100,kind=1,gamma=1, thSCD1 = scene_change)
    msadf= sadf.Binarize() # binary inverted forward SAD mask
    
    sadb = MMask(super,vb, ml=ml, gamma=1, kind=1, thSCD1 = scene_change) # backward SAD mask
    msadb= sadb.Binarize() # binary inverted backward SAD mask
    
    msad = Logic(msadf,msadb,"OR") # combined inverted SAD mask
    msad = msad.Expand() # expanded inverted SAD mask
    msadi = Interleave(msad, msad, msad) # interleaved 3-frame inverted SAD mask
    
    Interleave(cf,source,cb) # interleave forward compensated, source, and backward compensated
    
    #DeSpot
    
    (show=0,p1percent=10,dilate=1,maxpts=400,p2=12,mthres=18,p1=24,pwidth=40,pheight=12,mwidth=7,mheight=5,merode=33,interlaced=false,seg=1,s
    
    ign=1,ranked=true,extmask=msadi)
    
    DeSpot
    
    (show=0,p1percent=3,dilate=3,maxpts=400,p2=6,mthres=9,p1=12,pwidth=140,pheight=4,mwidth=7,mheight=5,merode=33,interlaced=false,seg=1,sign
    
    =-1,ranked=true)
    
    SelectEvery(3,1)
    }
    Quote Quote  
  3. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    ohh!! Thank you very much!!Which are the requeriments??
    Quote Quote  
  4. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    sorry for my english
    Quote Quote  
  5. A quick trick to get rid of that herringbone noise with VHS is do reduce the width to about half, then stretch it back. This doesn't hurt the resolution very much because VHS isn't sharp horizontally anyway.

    Code:
    Spline36Resize(width/2, height) # half width
    Spline36Resize(width*2, height) # back to full width
    Other filtering can often be done while the frame is half width to speed it up.
    Quote Quote  
  6. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    HI I'm back. Always I have problems with any script in avisynth. Not work.
    Quote Quote  
  7. Originally Posted by Andy2018 View Post
    HI I'm back. Always I have problems with any script in avisynth. Not work.
    Then you need to investigate each filter to make sure you both have the filters and also have the other requirements to make the filters work. Most filters have their own page at the AviSynth site. Most are not included in the AviSynth installation. When a script doesn't work, post both the complete script and the Virtual Dub error message. Just saying "Not work" doesn't help you or the people willing to help you.
    Quote Quote  
  8. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    I'm sorry if I said something bad. I just said that no script worked for me. I did not say it in a bad way.��
    Quote Quote  
  9. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    1qBut it's okay. but like I said I'm a newbie
    Quote Quote  
  10. Member
    Join Date
    May 2014
    Location
    Memphis TN, US
    Search PM
    Originally Posted by Andy2018 View Post
    I'm sorry if I said something bad. I just said that no script worked for me. I did not say it in a bad way.��
    No, you didn't say it in a bad way. No one is accusing you. All that manono said was that "script doesn't work" does not give enough information to help you.
    - Post a copy of your Avisynth script that isn't working.
    - If you get an error message, exactly what does the error message say?
    No one can help you without that information.
    Last edited by LMotlow; 10th Dec 2018 at 19:11.
    - My sister Ann's brother
    Quote Quote  
  11. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    Ohh i understand.
    thank you very much to all.
    Quote Quote  
  12. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    in a few minutes and I send an image with what appears.
    Quote Quote  
  13. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    Image
    [Attachment 47446 - Click to enlarge]
    this message appears to me
    Quote Quote  
  14. Member
    Join Date
    May 2014
    Location
    Memphis TN, US
    Search PM
    Thanks, but we can't use a partial picture of the bottom portion of your script. We need your script, period. You do realize that your Avisynth script is plain text, right ? In your text editor you can select the complete text with your mouse and copy it to your clipboard. Then you can open a reply window in this forum and paste the text into the reply box.

    Either do that, or attach a copy of your avs script as a .txt file.
    The problem is that the part of your script that defines "output" is not visible in the image that you posted.
    - My sister Ann's brother
    Quote Quote  
  15. Also, this looks like something - a part of something - that you got from somewhere else (johnmeyer above) and have no idea what it's supposed to do. My suggestion is to simplify. Open the video and then add needed filters one-by-one. A sample of the video might be helpful and then someone can suggest filters you can use. Your script (or piece of script) is way too complex for someone just starting out.
    Quote Quote  
  16. Actually, the "output" line (5) is visible in his image -- but the first 4 lines are missing.
    Quote Quote  
  17. Member
    Join Date
    May 2014
    Location
    Memphis TN, US
    Search PM
    Apparently nothing in the script defines "output". Will probably get something if "return output" is replaced with "return last". What he'll get, who knows.
    - My sister Ann's brother
    Quote Quote  
  18. You need to post your entire script. It looks like you copied mine, but I just copy/pasted from my post above, and the script does work as posted, i.e., there is no error in the script that would cause you to get an error about not being able to find the variable "output."
    Quote Quote  
  19. Member
    Join Date
    Dec 2018
    Location
    South America
    Search Comp PM
    Well, I see. thanks to everyone. I'll keep trying.
    Quote Quote  



Similar Threads

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