VideoHelp Forum
+ Reply to Thread
Results 1 to 13 of 13
Thread
  1. Hi everyone!
    I'm trying to improve the recording I have of a concert. And it has this dented look when in motion with very very thin lines moving around all the time.
    I've already tried standard deinterlacing methods, but I can't seem to get rid of it.
    This is a clip of the source video (also attached): https://www.mediafire.com/file/wu0xskfa3tnuev4/Copenhagen01-001-CLIP.mp4/file

    I have Hybrid as software. Therefore I'd really appreciate your guidance of a method that is compatible with Hybrid or another free tool.
    Thanks!
    Image Attached Files
    Quote Quote  
  2. An interlaced PAL source was resampled (upscaled) progressively while still in fields. This causes artifacts that you see

    25fps to 29.97fps was done by introducing duplicates

    You can try reversing the process by decimating the duplicates and reversing the upsampling using a reverse kernel

    Code:
    LSmashVideoSource("Copenhagen01-001-CLIP.mp4")
    TDecimate(cycler=1, cycle=6)
    DeBilinearResizeMT(720,576, accuracy=2)
    AssumeTFF().QTGMC(preset="faster", border=true, sharpness=0.25)
    Image Attached Files
    Quote Quote  
  3. Originally Posted by poisondeathray View Post
    An interlaced PAL source was resampled (upscaled) progressively while still in fields. This causes artifacts that you see

    25fps to 29.97fps was done by introducing duplicates

    You can try reversing the process by decimating the duplicates and reversing the upsampling using a reverse kernel

    Code:
    LSmashVideoSource("Copenhagen01-001-CLIP.mp4")
    TDecimate(cycler=1, cycle=6)
    DeBilinearResizeMT(720,576, accuracy=2)
    AssumeTFF().QTGMC(preset="faster", border=true, sharpness=0.25)
    You got it! Thanks so much!
    And would there be a way to do this without reducing the resolution - keeping it 720 (960x720 with corrected aspect ratio )?
    Quote Quote  
  4. This is your source?
    1. It has a really uncommon resolution 1258x720 and a 1:1 PAR (I suspect the source par should be 10:11).
    2. the file is encoded progressive, but clearly was interlaced and got resized without deinterlacing
    What you could do is:
    1. separate the fields, throw vinverse at it to get rid of some of the artifacts
    2. resize the height to 576, before deinterlacing
    3. add some denoise and sharpen to get some details back
    but the result would still contain ghosting and not be really nice.
    => I would strongly suggest to look for a better source that hasn't been mangled that much
    (script: https://pastebin.com/NUrN0iZ5)

    Cu Selur

    Ps.: poisondeathray was faster.
    Image Attached Files
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  5. Originally Posted by MJ_Chile View Post

    And would there be a way to do this without reducing the resolution - keeping it 720 (960x720 with corrected aspect ratio )?
    You can upscale it after (you can add an upscaler to the script) , but it's important to downscale first with an inverse kernel
    Quote Quote  
  6. And would there be a way to do this without reducing the resolution - keeping it 720 (960x720 with corrected aspect ratio )?
    No. The source was 576 or even a bit less before wrongly resizing
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  7. Thank you guys, I'm understanding now that this was more about a wrong method of upscaling (done by somebody else on the original capture and I need to fix it).

    I really wanted to check your sample @Selur but the file attached gives me an unplayable error.
    Quote Quote  
  8. Thanks! I'm understanding now the issue was caused by some upscaling done by the person who captured it (I'm trying to fix it).

    Selur, I wanted to check your sample but it's unplayable (?)

    Also, where to find/set decimation and vinverse parameters in Hybrid?
    I apologize but I'm quite new at using it.
    Quote Quote  
  9. Selur, I wanted to check your sample but it's unplayable (?)
    Works fine here. It's using av1 as video format. Seems like the player you use doesn't support av1.

    Also, where to find/set decimation and vinverse parameters in Hybrid?
    Filtering->Vapoursynth->Frame->Misc->Vinverse
    Hybrid doesn't have TDecimate as an option on it's own, you would need to add a custom section, load the filter, apply the filter and let Hybrid know that you changed the frame count and frame rate. (I used Filtering->Vapoursynth->Frame->Reduction->sRestore in my example)

    Cu Selur

    Ps.: To recreate the script I used you will also need to change the filter order under Filtering->Vapoursynth->Misc->Filter Order/Queue.
    Last edited by Selur; 6th Jan 2024 at 14:21.
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  10. Originally Posted by poisondeathray View Post
    An interlaced PAL source was resampled (upscaled) progressively while still in fields. This causes artifacts that you see

    25fps to 29.97fps was done by introducing duplicates

    You can try reversing the process by decimating the duplicates and reversing the upsampling using a reverse kernel

    Code:
    LSmashVideoSource("Copenhagen01-001-CLIP.mp4")
    TDecimate(cycler=1, cycle=6)
    DeBilinearResizeMT(720,576, accuracy=2)
    AssumeTFF().QTGMC(preset="faster", border=true, sharpness=0.25)
    @poisondeathray: Did you do more things to it? I noticed that your sample has the frame rate doubled too which makes it smooth.
    And for some reason, this sample, even while having a lower resolution, has more definition that Selur's sample hehe.
    I hope you can share a few more tricks
    In the meantime, I'll try to learn how to use the script, as I'm getting nowhere with Hybrid on its own (I'm probably missing a step too).

    Thank you guys both.
    Quote Quote  
  11. Originally Posted by MJ_Chile View Post
    @poisondeathray: Did you do more things to it? I noticed that your sample has the frame rate doubled too which makes it smooth.
    Yes, it's in the script - QTGMC is a deinterlacer . In double rate mode, each field becomes a frame

    If you had the original interlaced PAL source, it would be 25 fields/sec interlaced, and if you double rate deinterlaced it (or just watched it on a regular HDTV, which would do that for you), it would show 50 frames per second.

    I think some other GUI's like staxrip might have all those filters bundled too, not sure . Gathering all the dependencies for various filters /plugins can be a hassle . If some GUI bundles everything it can save you time
    Quote Quote  
  12. @poisendeathray:
    Looking at:
    Code:
    LSmashVideoSource("Copenhagen01-001-CLIP.mp4")
    TDecimate(cycler=1, cycle=6)
    DeBilinearResizeMT(720,576, accuracy=2)
    AssumeTFF().QTGMC(preset="faster", border=true, sharpness=0.25)
    Isn't the output frame rate of your clip 49.95fps?
    'TDecimate(cycler=1, cycle=6)' changing the frame rate from 29.97 to 24.975 (29.97*5/6)
    and
    'QTGMC(preset="faster", border=true, sharpness=0.25)' doubling the frame rate to 49.95fps.

    Cu Selur
    Last edited by Selur; 7th Jan 2024 at 04:52. Reason: , => .
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  13. Originally Posted by Selur View Post
    Isn't the output frame rate of your clip 49.95fps?
    'TDecimate(cycler=1, cycle=6)' changing the frame rate from 29.97 to 24.975 (29.97*5/6)
    and
    'QTGMC(preset="faster", border=true, sharpness=0.25)' doubling the frame rate to 49.95fps.
    The correct math for 1 in 6 decimation .

    But because of NTSC drop frame timecode (It's 30000/1001 , not 30000/1000 or 30/1) , every 1000 frames would have a duplicate 1 in 7 pattern for some types of PAL => NTSC conversions. So "fixed" 1 in 6 decimation will miss a duplicate every 1001 frames, or drop the incorrect "good" frame

    => A way around that would be Tdecimate(mode=7, rate=25)

    But there are slight differences in how PAL<=>NTSC format conversions are done, and you'd need to check a longer sample, and also sync. For example, did the prior conversion use 30000/1001 , or 30/1 ? It's common for mistakes to be make for "internet" files and to have multiple generation errors

    A common method is a ChangeFPS type conversion, where you (mostly) get every 1 in 6 frame duplicated, except for every 1001 frames, and the pattern is broken . tdecimate(mode=7, rate=25) solves this type of pattern and results in 25/1 fps, whereas tdecimate(cycler=1, cycle=6) drops a wrong frame

    You can check this "synthetically":
    Code:
    blankclip(30000, pixel_type="YV12").killaudio()
    showframenumber().assumefps(25) #display original, original source PAL frame numbering
    changefps(30000,1001)
    #tdecimate(mode=7, rate=25)
    #tdecimate(cycler=1, cycle=6)
    Quote Quote  



Similar Threads

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