What would be the best way to bob deinterlace this DVD that has 8bit pixelated game footage mixed with live action footage? I've been using QTGMC with the setting below but the game footage loses a lot of it's crisp pixelation.
HTML Code:QTGMC(TR0=2, TR1=2, TR2=1, Rep0=1, Rep1=0, Rep2=4, DCT=5, ThSCD1=300, ThSCD2=110, SourceMatch=3, Lossless=2, Sharpness=0.1, Sbb=0, MatchPreset="slow", NoiseProcess=2, GrainRestore=0.0, NoiseRestore=0.4, NoisePreset="slow", StabilizeNoise=false, NoiseTR=0, NoiseDeint="bob")
+ Reply to Thread
Results 1 to 7 of 7
-
-
Try is to lowering "ThSCD1=300, ThSCD2=110," to maybe ThSCD1=200 (or lower).
(side note: I would also add some deflickering)
1.: QTGMC(Input=clip, Preset="Fast", InputType=0, TFF=False, TR2=0, SourceMatch=0, Lossless=0, TR0=2, TR1=2, Rep0=1, Rep1=0, Rep2=4, DCT=5, ThSCD1=200, ThSCD2=120, Sbb=0, NoiseProcess=2, GrainRestore=0.0, NoiseDeint="bob") + deflickering
2.: QTGMC(as 1.) but with EdiExt using DDD (Vapoursynth only https://github.com/pifroggi/vs_deepdeinterlace)
Cu Selur
Ps.: Maybe also try bwdif instead of QTGMC.
PPs.: Applying CAS + SSIQ (for the rainbows) might also help with perceived 'crispyness' .Last edited by Selur; 11th Aug 2025 at 08:26.
users currently on my ignore list: deadrats, Stears555, marcorocchini -
The quality of DDD is amazing. I'm trying to set it up with VS. I'm only familiar with Avisynth. I'm having a difficult time finding information on DDD. Could you please let me know the VS script you used for test_2.mp4 so I can attempt to better understand the script and syntax?
Last edited by LaserBones; 13th Aug 2025 at 04:52.
-
Using DDD requires an NVIDIA card and a broadly expanded Vapoursynth setup.
I doubt you will have much fun/success trying to set this up, but I'll post a script later.users currently on my ignore list: deadrats, Stears555, marcorocchini -
-
Here's the script I used with DDD:
Code:# Imports import vapoursynth as vs # getting Vapoursynth core import ctypes import sys import os core = vs.core # Limit frame cache to 48473MB core.max_cache_size = 48473 # Import scripts folder scriptPath = 'F:/Hybrid/64bit/vsscripts' sys.path.insert(0, os.path.abspath(scriptPath)) # Loading Support Files Dllref = ctypes.windll.LoadLibrary("F:/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll") # loading plugins core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/FFT3DFilter/fft3dfilter.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/CTMF/CTMF.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/libmvtools_sf_em64t.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/TCanny.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/FrameFilter/ReduceFlicker/ReduceFlicker.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/ZSmooth/zsmooth.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/GrainFilter/AddGrain/AddGrain.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/EEDI3m_opencl.dll")# vsQTGMC core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/NNEDI3CL.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/libmvtools.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/fmtconv.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/DeinterlaceFilter/Bwdif/Bwdif.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/Support/akarin.dll") core.std.LoadPlugin(path="F:/Hybrid/64bit/vsfilters/SourceFilter/DGDecNV/DGDecodeNV_AVX2.dll") # Import scripts import degrain import vs_deepdeinterlace import qtgmc import validate # Source: 'C:\Users\Selur\Desktop\8bitliveaction.mkv' # Current color space: YUV420P8, bit depth: 8, resolution: 720x480, frame rate: 29.97fps, scanorder: bottom field first, yuv luminance scale: limited, matrix: 470bg, transfer: bt.601, primaries: bt.601 ntsc, format: mpeg-2 # Loading C:\Users\Selur\Desktop\8bitliveaction.mkv using DGSource clip = core.dgdecodenv.DGSource("J:/tmp/mkv_eef611459e181df982d88854ac42200d_853323747.dgi",fieldop=0)# 29.97 fps, scanorder: bottom field first frame = clip.get_frame(0) # setting color matrix to 470bg. clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT470_BG) # setting color transfer (vs.TRANSFER_BT601), if it is not set. if validate.transferIsInvalid(clip): clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT601) # setting color primaries info (to vs.PRIMARIES_BT470_BG), if it is not set. if validate.primariesIsInvalid(clip): clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT470_BG) # setting color range to TV (limited) range. clip = core.std.SetFrameProps(clip=clip, _ColorRange=vs.RANGE_LIMITED) # making sure frame rate is set to 29.97fps clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001) # making sure the detected scan type is set (detected: bottom field first) clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_BOTTOM) # bff # Deinterlacing using QTGMC clipEdiExt = clip # adjusting color space from YUV420P8 to RGBS for vsDDD clipEdiExt = core.resize.Bicubic(clip=clipEdiExt, format=vs.RGBS, matrix_in_s="470bg", range_s="limited") clipEdiExt = vs_deepdeinterlace.DDD(clip=clipEdiExt, tff=False, fp16=True, device="cuda") # Making sure content is preceived as frame based clipEdiExt = core.std.SetFrameProps(clip=clipEdiExt, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive # set frame rate to 59.94fps (progressive) clipEdiExt = core.std.AssumeFPS(clip=clipEdiExt, fpsnum=60000, fpsden=1001) clipEdiExt = core.resize.Bicubic(clip=clipEdiExt, format=vs.YUV420P8, matrix_s="470bg", range_s="limited", dither_type="error_diffusion") clip = qtgmc.QTGMC(Input=clip, Preset="Slower", InputType=0, TFF=False, TR2=1, SourceMatch=0, Lossless=0, opencl=True, EdiExt=clipEdiExt, TR0=2, TR1=2, Rep0=1, Rep1=0, Rep2=4, DCT=5, ThSCD1=200, ThSCD2=120, Sbb=0, NoiseProcess=2, GrainRestore=0.0, NoiseDeint="bob") # new fps: 59.94 # Making sure content is preceived as frame based clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive # removing flickering using ReduceFlicker clip = core.rdfl.ReduceFlicker(clip=clip, strength=3, aggressive=1) # adjusting output color from: YUV420P8 to YUV420P10 for NVEncModel clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10, range_s="limited") # set output frame rate to 59.94fps (progressive) clip = core.std.AssumeFPS(clip=clip, fpsnum=60000, fpsden=1001) # output clip.set_output()
Cu Selurusers currently on my ignore list: deadrats, Stears555, marcorocchini
Similar Threads
-
Issue Using Hybrid to Deinterlace (QTGMC/Bob)
By low-fat-al in forum RestorationReplies: 1Last Post: 9th Aug 2025, 09:09 -
Issue Using Hybrid to Deinterlace (QTGMC/Bob)
By low-fat-al in forum Video ConversionReplies: 12Last Post: 6th Aug 2025, 12:20 -
Best way to deinterlace pixelart so that it still looks pixelated?
By LaserBones in forum Newbie / General discussionsReplies: 4Last Post: 14th Jul 2024, 19:19 -
VLC can't bob-deinterlace video from Blu-ray properly. What's going on?
By AVR2 in forum Software PlayingReplies: 11Last Post: 26th Jul 2021, 18:17 -
Canon C100 8bit 4.2.0 AVCHD Footage and Upscaling (Topaz/Avisynth)
By dogmydog in forum Video ConversionReplies: 10Last Post: 7th Jun 2021, 13:39