VideoHelp Forum
+ Reply to Thread
Results 1 to 9 of 9
Thread
  1. This DVD has some pretty bad wobbling in the text as it's scrolling up after it has been deinterlaced.

    This is pretty bad. Is there anything that can be done about this?

    Here is a video sample.
    https://mega.nz/file/xwwGBBbS#9QyUpsOY9G9e7ip0dOkJXS1RJ8eUe4E1uLSnHhoOQVQ
    Last edited by killerteengohan; 12th Feb 2023 at 20:55.
    Quote Quote  
  2. I tried this, and it looks a lot better, but the wobble is still a problem.

    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=2, sourcematch=3, tr1=2, tr2=1, NoiseTR=2, sharpness=0.1)
    Quote Quote  
  3. Try:


    Code:
    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=1, sourcematch=3, tr1=2, tr2=1, NoiseTR=2, sharpness=0.1)
    QTGMC(InputType=2)
    #SelectEven() # if you want 30p
    Following up with yet another QTGMC(InputType=2) reduces the flicker even more. But it starts screwing up the animation thumbnail. You'd probably want to mask that to protect it.
    Last edited by jagabo; 12th Feb 2023 at 22:48.
    Quote Quote  
  4. Originally Posted by jagabo View Post
    Try:


    Code:
    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=1, sourcematch=3, tr1=2, tr2=1, NoiseTR=2, sharpness=0.1)
    QTGMC(InputType=2)
    #SelectEven() # if you want 30p
    Following up with yet another QTGMC(InputType=2) reduces the flicker even more. But it starts screwing up the animation thumbnail. You'd probably want to mask that to protect it.
    While a bit more destructive than I would like to the rest of the video, it did a great job with the text. Thanks!!

    Is there anything wrong with using FPSDivisor=2 in QTGMC to get 30fps, instead of adding SelectEven to the end?
    Quote Quote  
  5. Originally Posted by killerteengohan View Post
    While a bit more destructive than I would like to the rest of the video, it did a great job with the text. Thanks!!
    That's why I suggested using a mask to protect that part of the picture.

    Originally Posted by killerteengohan View Post
    Is there anything wrong with using FPSDivisor=2 in QTGMC to get 30fps, instead of adding SelectEven to the end?
    Giving the second QTGMC more (and temporally closer) frames to work with gave less flicker/wobble.
    Quote Quote  
  6. it doesn't matter if you use:
    Code:
    QTGMC(InputType=2)
    SelectEven() # if you want 30p
    or
    Code:
    QTGMC(InputType=2, FPSDivisor=2)
    for the second call.
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  7. Here's an example where I used a mask to limit the processing in the animated aread:

    Code:
    Mpeg2Source("VTS_01_1 Demuxed 2.demuxed.d2v", CPU2="ooooxx", Info=3) 
    
    # use the first frame to create a mask of the animation area (just a white box on a black background)
    pmask = Trim(1,1).mt_binarize(30).Blur(1.4).Blur(1.4).Blur(1.4)
    
    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=1, sourcematch=3, tr1=2, tr2=1, NoiseTR=2, sharpness=0.1)
    nofix = last
    QTGMC(InputType=2)
    onefix = last
    QTGMC(InputType=2)
    SelectEven()
    
    # overlay the less processed animated area (nofix or onefix) over the highly processed video
    Overlay(last, onefix, mask=pmask)
    Of course the less processed area has less effective flicker reduction. But only a little of the scrolling text passes over that area.

    The heavy processing of the two QTGMC(InputType=2) calls leads to some halos around the text. You can use lower sharpness values to reduce that.
    Quote Quote  
  8. Originally Posted by jagabo View Post
    Here's an example where I used a mask to limit the processing in the animated aread:

    Code:
    Mpeg2Source("VTS_01_1 Demuxed 2.demuxed.d2v", CPU2="ooooxx", Info=3) 
    
    # use the first frame to create a mask of the animation area (just a white box on a black background)
    pmask = Trim(1,1).mt_binarize(30).Blur(1.4).Blur(1.4).Blur(1.4)
    
    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=1, sourcematch=3, tr1=2, tr2=1, NoiseTR=2, sharpness=0.1)
    nofix = last
    QTGMC(InputType=2)
    onefix = last
    QTGMC(InputType=2)
    SelectEven()
    
    # overlay the less processed animated area (nofix or onefix) over the highly processed video
    Overlay(last, onefix, mask=pmask)
    Of course the less processed area has less effective flicker reduction. But only a little of the scrolling text passes over that area.

    The heavy processing of the two QTGMC(InputType=2) calls leads to some halos around the text. You can use lower sharpness values to reduce that.

    I suck at making masks, and really need to practice that. I'm good at almost everything else but making masks in avisynth.

    Thanks for that! This works great.

    I'm curious. Is there a good way to see exactly what a mask I make or use is effecting with colored or greyscale pixels like other things you have shown me in the past? That might help me with making my own masks when I play with them more.
    Quote Quote  
  9. You can return a mask just like any other video. So add a return after creating the mask:

    Code:
    # assuming "last"
    pmask = Trim(1,1).mt_binarize(30).Blur(1.4).Blur(1.4).Blur(1.4).GreyScale()
    return(pmask)
    Forcing mask to greyscale is helpful since only the luma channel is used and the chroma can interfere with the visualization of the mask itself.

    Or to reference the original video too:

    Code:
    # assuming "last"
    pmask = Trim(1,1).mt_binarize(30).Blur(1.4).Blur(1.4).Blur(1.4).GreyScale()
    return(Interleave(last, pmask))
    In this case the mask is the same for the entire clip. But sometimes you want to use a mask that varies based on color, brightness, motion, whatever -- Interleaving he original image and the mask is very helpful in cases like that.
    Quote Quote  



Similar Threads

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