VideoHelp Forum

Try DVDFab and copy Ultra HD Blu-rays and DVDs! Or rip iTunes movies and music! Download free trial !
+ Reply to Thread
Results 1 to 6 of 6
Thread
  1. Video Restorer lordsmurf's Avatar
    Join Date
    Jun 2003
    Location
    dFAQ.us/lordsmurf
    Search Comp PM
    What can be done about mild kinescope flicker?

    @johnmeyer: I read the doom9 post where you and StainlessS made the Zebra plugin.
    Does that have some sort of automation?
    The attached sample is nowhere near as bad as that, but that may mean it will work better?
    Image Attached Files
    Quote Quote  
  2. This is a completely different thing from that amateur Kinescope StainlessS helped me fix over at doom9.org.

    Bad 1950s Kinescope - Hopeless?

    A Kinescope is a video taken of a CRT TV screen. It was used before Ampex invented the first video recorder in 1958 (i.e., for the first ten years of television) and continued to be used extensively for almost twenty more years because videtape was expensive and difficult to work with.

    When done professionally, the film and TV scan rate are synced so as not to create a crawling interference bar, like seen in the samples I showed in that thread I linked to above. However, because the film was usually run at standard 24 fps sound film rates, and video is 60 fields per second, there were lots of issues with frame blending that must be dealt with, even with a professional Kinescope. Interlacing also presents an issue (up and down movement, depending on how much of one field you get compared to the other). This introduced a problem called wobble and there were half a dozen different technical "solution" that were used.

    I looked at your short clip field-by-field. It is almost progressive, but there are some frames which have a slight bit of movement between fields from the same frame. However, this is so slight, that I don't think you need to deal with it.

    Fixing the flicker in your video can be done with 100% success simply by using the Deflicker AVISynth plugin. Just add it, without any parameters, and it should fix the problem completely.

    Avisource(e:\myvideo.avi).Deflicker()

    That's all you need.

    I would also desaturate the video to get rid of the chroma that has crept into the capture, as often happens when capturing B&W material.

    You can also use MDegrain2, from the MVToools2 package and set DCT=1 (default is DCT=0). However, when you use this setting it slows down the noise reduction by a factor of ten, so I would only go this route if the first idea doesn't work out.

    I've done a lot of work with real Kinescopes, and restoring them can be very rewarding. I even figured out how to get rid of most of the film artifacts and, using motion estimation, create a true 60 field per second result, so that it looks like the show was videotaped, rather than stored on film at 24 fps progressive. I was so successful that, over in the doom9.org forum, some guy who had built his company restoring shows like "What's My Line" threatened to sue me, even though my invention was done completely independently and even though he hadn't secured any patents. Here's a link to that thread:

    Kinescope restoration back to 60i

    I don't think your clip is actually from a Kinescope, but if it is, you might find some additional useful pointers in the restoration notes I provided in that old thread.

    John

    P.S. Here's another link where I describe the issues of dealing with fields within a true Kinescope capture:

    Separating Kinescope Fields -- Not As Easy As I Hoped

    This might also provide a few more pointers.
    Quote Quote  
  3. This has nothing to do with Smurf's basketball video, but since he mentioned the noise bar Kinescope, and since I also referenced it, I thought I should provide a link to the "before/after" video showing the improvement I was able to make. If it had been a paid job I would have spent another few hours on it and I think I could have made the result almost perfect.

    NFL Football Kinescope Restoration Before/After

    I'm pretty proud of how this turned out, although I acknowledge a great debt of gratitude to StainlessS who modified one of his RT_Stats function so it would track the average luma changes (which is how I detected both the placement and strength of the overexposure).
    Quote Quote  
  4. Video Restorer lordsmurf's Avatar
    Join Date
    Jun 2003
    Location
    dFAQ.us/lordsmurf
    Search Comp PM
    This isn't exactly kinescope. More like 70s non-VHS video camera recording 16mm film from special monitor. But it has some properties of kinescope problems.

    The first thing I tried was VirtualDub's deflicker. Almost no changes there.
    Then Avisynth's deflicker, which also did nothing.
    Then Avisynth ReduceFlicker. Some changes, but the video still pulses.

    The flicker isn't whole-frame. It has a moving partial-frame pattern that isn't too different from kinescope, but is much fainter.

    I'm just going to leave the framerate alone for now. Maybe 29.97fps progressive to process as needed, but not trying to restore film 24p/etc. I think that's been too lost, and it's really making it overly blurry or unwatchable anyway.

    Yes, some desaturating may be wise. But I actually found that it got harder to watch as true B&W (mostly grays) signal.

    Yep, saw all those links above. Good job on the football game!
    But I'm still not sure about my issues, if Zebra could help, if it's automated, and what usage/settings are.

    EDIT:

    This reduces most blurring:
    Code:
    bob(-0.2,0.6)
    SRestore(frate=29.97)
    This heavily reduces the noise
    Code:
    QTGMC(InputType=1)
    ReduceFlicker(strength=3, aggressive=true, opt=1)
    It still has some flicker "warble", but far less noticeable. But still looking for ways to reduce, not given up yet.
    Last edited by lordsmurf; 14th Sep 2020 at 06:28.
    Quote Quote  
  5. Well, as I said, if the Deflicker function didn't work, use MDegrain2. I tried it, and it fixes 98% of the flicker. I attached the result.

    Here is the script. It is designed for interlaced video. Since, as I mentioned in a previous post, there is still some temporal difference between fields, rather than try to fix that, I just treated the video as interlaced (it never hurts to do this, BTW).

    If you want more or less denoising, change the thSAD=400 to some other number.

    [edit]I desaturated the video in Vegas before serving into the script.

    Code:
    #Deflicker for interlaced video using MDegrain2
    
    #Modify this line to point to your video file
    source=AVISource("E:\fs.avi").killaudio()
    
    output=MDegrain2i2(source,8,0,1)  #The DCT=1 setting really helps nail the flicker
    
    #stackvertical(source,output)
    #stackhorizontal(source,output)
    return output
    
    /*
    Interleave(
    \    source
    \  , output
    \ )
    */
    
    #-------------------------------
    
    function MDegrain2i2(clip source, int "blksize", int "overlap", int "dct")
    {
    X=4   #X is a special parameter for reducing the autolevels effect on the whites
    X2=4  #X2 is a special parameter for reducing the autolevels effect on the blacks 
    
    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)
    dct=default(dct,0) # use dct=1 for clip with light flicker
    
    fields=source.SeparateFields()
    
    #This line gets rid of vertical chroma halo
    fixed_fields=MergeChroma(fields,crop(fields,Hshift,Vshift,0,0).addborders(0,0,Hshift,Vshift))
    
    fixed_fields=fixed_fields.deflicker(debug=false,scene=200,percent=60,lag=25,lmax=225,lmin=20,noise=10,border=0)
    
    super = fixed_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(fixed_fields,super, backward_vec2,forward_vec2,backward_vec4,forward_vec4,thSAD=400) #original setting 400
    
    Weave()
    }
    P.S. If you really want to see something, I could put this through my film restoration script. I think a little bit of degraining and sharpening would really make this come alive.
    Image Attached Files
    Last edited by johnmeyer; 14th Sep 2020 at 23:39.
    Quote Quote  
  6. Video Restorer lordsmurf's Avatar
    Join Date
    Jun 2003
    Location
    dFAQ.us/lordsmurf
    Search Comp PM
    As a final update, I'm still liking my script better ... for this video.

    But I'm keeping your script in my library. The next video may looks better with it.

    As always, thanks.
    Quote Quote  



Similar Threads