VideoHelp Forum
+ Reply to Thread
Results 1 to 6 of 6
Thread
  1. Hi, I have flickering problem with multiple VHS captures and couldn’t find a solution which gives me the result I want. Here are two sample images:

    Image
    [Attachment 55377 - Click to enlarge]

    Image
    [Attachment 55378 - Click to enlarge]


    The first one has good colors, the second has a purple/green tint and this goes on like this over the whole capture. I tried multiple avisynth scripts /cnr2, MCTemporalDenoise/, Neat Video’s antiflicker option, Virtualdub + chroma noise reduction filter. I could correct the flickering with all of them but the problem with these solutions is that the two frames simply meet in the middle and this results in incorrect colors. Is there a software or a script where I can set a frame as source and the second frame matches the first one?

    Thanks in advance
    Quote Quote  
  2. I don't see a simple transform that will make the colors similar. But a video sample (no filtering, not reencoded) would be more usefule.
    Quote Quote  
  3. Thanks for the response, here is a small clip
    Image Attached Files
    Quote Quote  
  4. ttempsmooth is the right tool for this, see below:

    AVISource("capt10.avi")
    assumetff()
    ConvertToYV16(matrix="Rec601",interlaced=true)
    U = UToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    V=VToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    YToUV(U,V,last)
    converttoyv12(matrix="Rec601",interlaced=true)
    Image Attached Thumbnails Click image for larger version

Name:	original.jpg
Views:	51
Size:	276.0 KB
ID:	55545  

    Click image for larger version

Name:	after.jpg
Views:	34
Size:	273.0 KB
ID:	55546  

    *** DIGITIZING VHS / ANALOG VIDEOS SINCE 2001**** GEAR: JVC HR-S7700MS, TOSHIBA V733EF AND MORE
    Quote Quote  
  5. Originally Posted by themaster1 View Post
    ttempsmooth is the right tool for this, see below:

    AVISource("capt10.avi")
    assumetff()
    ConvertToYV16(matrix="Rec601",interlaced=true)
    U = UToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    V=VToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    YToUV(U,V,last)
    converttoyv12(matrix="Rec601",interlaced=true)
    If the OP is correct that the even numbered frames have the right color and the odd numbered frames have wrong colors, it would work better if one could transform the odd frames to be closer in color to the even frames. This code crudely matches the odd frame colors to the even frame colors, then applies your color averaging.

    Code:
    AviSource("capt10.avi") 
    AssumeBFF()
    
    even = SelectEven()
    odd = SelectOdd()
    odd = odd.Tweak(hue=-30).ColorYUV(cont_u=80, cont_v=-40).Tweak(Hue=30)
    Interleave(even,odd)
    
    U = UToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    V=VToY().ttempsmooth(maxr=1,lthresh=150, strength=1)
    YToUV(U,V,last)
    Quote Quote  
  6. Here's another option: replace the chroma of the odd (bad color) frames, with chroma motion interpolated from the even (good color) frames. If this was progressive video it would be very easy. Being interlaced makes it a bit harder.

    Code:
    AviSource("capt10.avi") 
    AssumeBFF()
    
    even = SelectEven()
    odd = SelectOdd()
    
    QTGMC(even)
    Interframe(GPU=false, Tuning="film", NewNum=75, NewDen=1, cores=4)
    #return(SelectEvery(6, 0,3,4,5)) # see full motion sequence
    SelectEvery(6, 4,5)
    SeparateFields()
    SelectEvery(4,0,3)
    oddchroma = Weave()
    odd = MergeChroma(odd, oddchroma)
    
    Interleave(even, odd)
    
    QTGMC()
    Motion interpolation often doesn't work well but it looks pretty good with this clip (we're using only the chroma anyway). You can tune Interframe() differently or try using other frame rate converters.
    Image Attached Files
    Quote Quote  



Similar Threads

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