VideoHelp Forum

+ Reply to Thread
Results 1 to 28 of 28
Thread
  1. I'm converting all my old VHS tapes to digital files, but I'm encountering some problems which I believe to be "dot crawl".

    Here's a little clip (the GIF has been optimized by Imgur, but you clearly see the vertical stripes moving):



    Is that dot crawl, or something else entirely?

    I've used several avisynth plugins to try to get rid of it:
    Checkmate, DeDot, DeCrawl, GuavaComb, Tcomb, ... None of them did anything.

    I'm actually capturing these tapes over an S-video cable, albeit an S-video cable plugged into a scart adapter.
    The original S-video out on my VCR doesn't seem to work anymore.
    Quote Quote  
  2. destripe work great for this generally
    DeStripe(2,3,16)
    Quote Quote  
  3. Formerly 'vaporeon800' Brad's Avatar
    Join Date
    Apr 2001
    Location
    Vancouver, Canada
    Search PM
    Not dot crawl. I blame the SCART adapter, though the last time this came up the poster disputed that as the source of the problem. Try a composite capture instead.
    Quote Quote  
  4. Well, if it isn't dot crawl, it certainly has similar characteristics in that it is much more prominent in the colored areas (especially red) and almost totally absent in the areas which are closer to B&W.

    I had a similar problem with some VHS captures recently and, like you, got the same thing with both the composite as well as the S-video outputs. I then played around with various settings in my JVC S-VHS VCR and found that the digital corrector was causing the problems. So, as one piece of advice, you might want to try playing around with the various setup settings on your VCR and see if you can change or remove the problem. Turn off all the "enhancements."

    I also had a very similar problem on an old Kinescope I was asked to restore. That transfer was done decades ago, and even though it was B&W, the dot crawl had been introduced during the transfer. Read this thread and see if it helps you design something that will remove your problem. I found that the convolution kernel worked extremely well, and I think it will work for your video as well:

    Reomve Cross Hatch Pattern

    If you don't have time to read the whole thread, here is the AVISynth convolution syntax:

    Code:
    .GeneralConvolution(0, "
    -1  2 -1
    2  0  2
    -1  2 -1 ", 1)
    IF you don't want sharpening, use this one instead:
    Code:
    .GeneralConvolution(0, "
    0 1 0
    1 0 1
    0 1 0 ",1)
    Last edited by johnmeyer; 2nd Mar 2016 at 10:35. Reason: Added convolution
    Quote Quote  
  5. A simple resize will get rid of most of it:
    Code:
    Spline36Resize(width/2,height).Spline36Resize(width,height)
    Last edited by jagabo; 2nd Mar 2016 at 10:41.
    Quote Quote  
  6. Thanks for the responses so far!

    I've tried DeStripe and Defreq, but so far their results aren't that great.
    The resize trick actually got rid of nearly everything, although there still is some kind of shimmering effect.

    I'll try capturing using the regular composite cable again, and see if that makes any difference.

    I'll also see if I can disable any VCR enhancements, I'll have to find that remote control first though

    I'm using a Samsung "S-VHS quasy playback" VCR, by the way.
    Haven't seen that pop-up on any "good vcrs to use", but it's the only one I have.
    Quote Quote  
  7. Originally Posted by skerit View Post
    I'm actually capturing these tapes over an S-video cable, albeit an S-video cable plugged into a scart adapter.
    That's your problem -- poor luma chroma separation. You'll probably get better results with composite because the capture device's comb filter will kick in. But you'll probably still have some dot crawl artifacts at colored edges and/or moving areas.
    Quote Quote  
  8. Did you try my convolution filter? I think it will do better than DeStripe and DeFreq, although I don't know about the resize trick.
    Quote Quote  
  9. I did try that, but it also didn't have any noticeable effect.

    I've also disabled "IPC" on the VCR itself, but that didn't change anything.

    I tried using the dedicated composite output on the VCR, but the same problem still occurs.
    Even on the default blue menu screen, when no tape is playing.
    Quote Quote  
  10. Video Restorer lordsmurf's Avatar
    Join Date
    Jun 2003
    Location
    dFAQ.us/lordsmurf
    Search Comp PM
    Originally Posted by jagabo View Post
    A simple resize will get rid of most of it:
    Code:
    Spline36Resize(width/2,height).Spline36Resize(width,height)
    I have to remember this for later.
    Quote Quote  
  11. Originally Posted by lordsmurf View Post
    Originally Posted by jagabo View Post
    A simple resize will get rid of most of it:
    Code:
    Spline36Resize(width/2,height).Spline36Resize(width,height)
    I have to remember this for later.
    And since it only scales horizontally it works with interlaced video. And it works pretty well for VHS because the resolution of the underlying picture is so low reducing the frame width by half doesn't hurt. If the video is progressive you can get even better results with a better upscaler like nnedi3:

    Code:
    Spline36Resize(width/2,height).TurnRight().nnedi3(dh=true).Turnleft()
    Sometimes I might also sharpen a bit horizontally while downscaled or after scaling back up. There's often a little bit of the dot crawl remaining. But since it's VHS, and you're probably going to do some noise reduction anyway, it will disappear along with the other noise.

    For sharper sources you can use a mask based on the saturation so that only the colorful areas are filtered.
    Quote Quote  
  12. By the way, for those doubting this is dot crawl: here an NTSC composite capture with a composite signal running to both the luma and chroma input if an s-video capture device, (ie, no separation of chroma from the luma, the cause of dot crawl artifacts):

    Click image for larger version

Name:	dotcrawl.png
Views:	892
Size:	533.6 KB
ID:	35977

    The pattern is a little different with PAL.
    Quote Quote  
  13. Formerly 'vaporeon800' Brad's Avatar
    Join Date
    Apr 2001
    Location
    Vancouver, Canada
    Search PM
    My objection was only due to the literal visual basis for the naming. Maybe pedantic, but I think it would be useful to have a common name for this crosstalk that actually describes its appearance.

    For PAL: http://www.techmind.org/vd/paldec.html
    Of note, U-axis colours (pure yellows or blues) appear as diagonal stripes \\\, while V-axis colours (pure reds or greens) appear as diagonals ///. Mixture colours, such as orange (red+yellow) give rise to a superposition of the two, ie cross-hatching.

    You could argue that the cause and fixes are the same, so what difference does it make? But from what I've seen, the resize fix doesn't appear quite as effective on these diagonal artifacts as it is with NTSC dots.
    Quote Quote  
  14. Defreq, fftquiver - ffmpeg is also able to perform filtering on video in frequency domain.
    http://avisynth.org.ru/defreq/defreq.html
    http://avisynth.nl/index.php/FFTQuiver
    Quote Quote  
  15. Video Restorer lordsmurf's Avatar
    Join Date
    Jun 2003
    Location
    dFAQ.us/lordsmurf
    Search Comp PM
    Isn't "crosshatching" the tech term?
    That's what this is.
    It's merely a type of crosstalk.
    Last edited by lordsmurf; 6th Mar 2016 at 20:47.
    Quote Quote  
  16. This actually worked wonders on a video that really needed this!!

    Wow, thanks jagabo. Quick question:

    Suppose I want to use the version for progressive video:
    Code:
    Spline36Resize(width/2,height).TurnRight().nnedi3(dh=true).Turnleft()
    Do I crop/addborders and resize before this or after?
    Quote Quote  
  17. And since it only scales horizontally it works with interlaced video. And it works pretty well for VHS because the resolution of the underlying picture is so low reducing the frame width by half doesn't hurt. If the video is progressive you can get even better results with a better upscaler like nnedi3:

    Code:
    Spline36Resize(width/2,height).TurnRight().nnedi3(dh=true).Turnleft()
    Sometimes I might also sharpen a bit horizontally while downscaled or after scaling back up. There's often a little bit of the dot crawl remaining. But since it's VHS, and you're probably going to do some noise reduction anyway, it will disappear along with the other noise.

    For sharper sources you can use a mask based on the saturation so that only the colorful areas are filtered.
    So I've done some experimenting with this, and I have to say it seems to be the only true effective way to get rid of that vertical junk that's baked into the film due to bad transfers. HOWEVER - there is a small hiccup that I wish to address. It removes an incredible amount of fine detail in the image. See my before image of the bridge - notice the vertical lines drawn on the buildings for detail. See my after filtration, where they're blurred out.

    But again, I DO want to go with this strategy - is there any way to avoid this and still get what I want?
    Image Attached Thumbnails Click image for larger version

Name:	before script.png
Views:	36
Size:	464.2 KB
ID:	59886  

    Click image for larger version

Name:	after script.png
Views:	38
Size:	465.9 KB
ID:	59887  

    Quote Quote  
  18. You can try downscaling less. Say, to a width of 400 or 480 rather than 360. But you'll get slightly less effective cleaning along with the lesser blurring. If you're running some other temporal noise reduction you can run it while the video is downsized to help eliminate the residual dot crawl. You can also use a mask to apply the dot crawl removal to only areas of high saturation, or only near edges, whatever -- depending on the nature of the residual dot crawl in the capture.
    Last edited by jagabo; 16th Jul 2021 at 19:13.
    Quote Quote  
  19. You can also use a mask to apply the dot crawl removal to only areas of high saturation
    Ahem uhm....y-yeah that's the thing. I actually created a new thread today asking for help with that. I'm a little embarrassed to say that I kind of need a little jump start on that (a very basic script for me to tweak, perhaps?)

    Here's my thread with a sample and a script. Think you can help adjust it?

    https://forum.videohelp.com/threads/402484-need-assistance-with-creating-a-line-mask-for-a-cartoon
    Quote Quote  
  20. Jagabo, is this an example of what you mean? Instead of 720/2 in the spline36resize script, I upped it to 940 to prevent aggressive blurring. Now, as you can see I added a sharpener right after the Spline36Resize. I decided to add my temporal smoother later in the script, but just to keep my details sharp, is this where I would add my sharpener?


    MPEG2Source("blah.d2v")
    Assumetff()
    TFM(d2v="blah.d2v")
    TDecimate(mode=1)

    Spline36Resize(940/2,height). Fastlinedarkenmod(60). TurnRight(). nnedi3(dh=true).Turnleft()
    Crop(8, 0, -8, 0)
    Lanczos4Resize(640,480)
    Santiag(). Santiag()
    Quote Quote  
  21. Yes, something like that. Why did you used 940/2 instead of just 470?
    Quote Quote  
  22. Because your script contains the argument "width/2"

    Oh and also, I notice that this strategy causes a change in my frame sequence. For example, the image that was frame 476 is now in frame 477. Is that normal? Does this cause any type of distortion in my resulting project?

    I checked the info - on my script with your strategy, it says bottom field first.
    On a script with just IVTC and not using your strategy it says assumed top field first.
    Last edited by Betelman; 17th Jul 2021 at 21:19.
    Quote Quote  
  23. Originally Posted by Betelman View Post
    Because your script contains the argument "width/2"
    The reason I used "/2" is because the variable "width" is the width of the current video -- regardless of whether it's 720, 704, or whatever it will reduced to half. You don't need to retain the /2 if you just want to set a specific size, just specify that size.

    Originally Posted by Betelman View Post
    Oh and also, I notice that this strategy causes a change in my frame sequence. For example, the image that was frame 476 is now in frame 477. Is that normal?
    That is not normal. About the only thing I see that could cause that is TDecimate(mode=1). On random seeks it might not return the same frame as during linear access. Or maybe a problem with the MPEG2 source.

    Originally Posted by Betelman View Post
    Does this cause any type of distortion in my resulting project?
    It probably won't be a problem when encoding.
    Quote Quote  
  24. Ok, now I understand. Funny, as soon as I just specified the size, the frame problem went away.

    So far so good, thanks for all your help.
    Quote Quote  
  25. This doesn't look too bad with the animated GIF in the first post:

    Code:
    LWLibavVideoSource("ak8HdY7.gif", cache=false, prefer_hw=2) 
    ConvertToYV12(interlaced=true)
    src = last
    QTGMC()
    
    BilinearResize(576, height)
    Santiag()
    TurnRight()
    Santiag()
    QTGMC(InputType=2) # or TemporalDegrain(sigma=4), or SMDegrain(), etc.
    TurnLeft()
    Spline36Resize(720, height)
    Image Attached Files
    Last edited by jagabo; 18th Jul 2021 at 00:06.
    Quote Quote  
  26. Looks good, Jagabo. Thanks for showing me that I can change the integer for the width in that resize in order to avoid detail loss. I was able to obtain the results I wanted with a lesser downscale (490 instead of 360), in conjunction with smdegrain. A couple of questions here:

    1. My source is NTSC, which requires the usual IVTC script. Now I notice that you used QTGMC (the acronyms read like "Cutie GMC" - something someone would use to show how much they love their truck ). Anyway, I am going to assume that you used this for the above source as needed, and that this would not do anything to help my case except destroy my video by throwing away important fields - since it IS a deinterlacer. Am I correct in this or is there something I'm missing here?


    2. Just to confirm, the place where I inserted my sharpening command line, was that okay or would I get better results inserting it AFTER the nnedi3 resize? FYI, I tested it and it looks perfect to me on my TV. However, I want to make sure, once again, that there's not a crucial detail I'm not seeing.

    Thanks
    Quote Quote  
  27. Originally Posted by Betelman View Post
    1. My source is NTSC, which requires the usual IVTC script. Now I notice that you used QTGMC (the acronyms read like "Cutie GMC" - something someone would use to show how much they love their truck ). Anyway, I am going to assume that you used this for the above source as needed, and that this would not do anything to help my case except destroy my video by throwing away important fields - since it IS a deinterlacer. Am I correct in this or is there something I'm missing here?
    Once again, QTGMC(InputType=2) is not deinterlacing, it's noise reduction for progressive frames. It may or may not help with an IVTC'd video. I used it in that video because the source was a GIF image with lots of noise. Notice the other options I listed there are noise reducers.

    Originally Posted by Betelman View Post
    2. Just to confirm, the place where I inserted my sharpening command line, was that okay or would I get better results inserting it AFTER the nnedi3 resize? FYI, I tested it and it looks perfect to me on my TV. However, I want to make sure, once again, that there's not a crucial detail I'm not seeing.
    You mean the Fastlinedarkenmod() in post #21? Line darkeners like that work best with lines of a certain thickness and darkness. Use it wherever it works best. Also try Hysteria(), another line darkener.
    Quote Quote