Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
22nd September 2021, 01:20 | #1 | Link |
Registered User
Join Date: Mar 2021
Location: Germany
Posts: 11
|
Cleanup of heavy compression artifacts
Hi,
I've been working on a script to clean and upscale the official Invader Zim DVDs for a while now, and I've encountered a difficult to handle part in Episode 1 which has some pretty heavy compression artifacts. Untouched sample from the DVD re-encoded to lossless H265: https://keybase.pub/earthnuker/Zim_0..._artifacts.avi I'm talking about the scene where the camera pans, frame 12 to 16 in the clip. After de-interlacing two frames have artifacts, i tried reconstructing them using MVTool's FlowInter with little success, with scene detection it just does frame blending and without it results in messy interpolation artifacts. Any help would be appreciated. Best regards, Earthnuker
__________________
Hack the planet! |
22nd September 2021, 06:38 | #2 | Link |
Registered User
Join Date: Dec 2020
Posts: 87
|
Can you send a sample in .vob raw? It would be easier to find a solution.
#EDIT: Never mind, I think this avi is enough I tested the VFM here and it doesn't seem to have blend, just a very strong block, you will get the best result probably with dpir, but it is very slow. https://github.com/Irrational-Encodi...deblock.py#L15 Last edited by Julek; 22nd September 2021 at 06:49. |
23rd September 2021, 19:10 | #4 | Link |
Registered User
Join Date: Oct 2001
Location: Germany
Posts: 7,277
|
QTGMC + BasicVSR++ with Model 5:
Script I used: Code:
# Imports import os import sys import ctypes # Loading Support Files Dllref = ctypes.windll.LoadLibrary("I:/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll") import vapoursynth as vs # getting Vapoursynth core core = vs.core # Import scripts folder scriptPath = 'I:/Hybrid/64bit/vsscripts' sys.path.insert(0, os.path.abspath(scriptPath)) # Loading Plugins core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/GrainFilter/AddGrain/AddGrain.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/EEDI3.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/vsznedi3.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/libmvtools.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/temporalsoften.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/scenechange.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/Support/fmtconv.dll") core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/SourceFilter/FFMS2/ffms2.dll") # Import scripts import havsfunc # source: 'C:\Users\Selur\Desktop\Zim_01_compression_artifacts.avi' # current color space: YUV420P8, bit depth: 8, resolution: 720x480, fps: 29.97, color matrix: 470bg, yuv luminance scale: limited, scanorder: top field first # Loading source using FFMS2 clip = core.ffms2.Source(source="C:/Users/Selur/Desktop/Zim_01_compression_artifacts.avi",cachefile="E:/Temp/avi_5e80f5192093a24d3bd5bffe5fc965ee_853323747.ffindex",format=vs.YUV420P8,alpha=False) # making sure input color matrix is set as 470bg clip = core.resize.Bicubic(clip, matrix_in_s="470bg",range_s="limited") # making sure frame rate is set to 29.970 clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001) # Setting color range to TV (limited) range. clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1) # setting field order to what QTGMC should assume (top field first) clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2) # Deinterlacing using QTGMC clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=True) # new fps: 29.97 # make sure content is preceived as frame based clip = core.std.SetFieldBased(clip, 0) clip = clip[::2] # adjusting color space from YUV420P8 to RGBS for vsBasicVSRPPFilter clip = core.resize.Bicubic(clip=clip, format=vs.RGBS, matrix_in_s="470bg", range_s="limited") # Quality enhancement using BasicVSR++ from vsbasicvsrpp import BasicVSRPP clip = BasicVSRPP(clip=clip, model=5) # adjusting output color from: RGBS to YUV420P10 for x265Model clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10, matrix_s="470bg", range_s="limited") # set output frame rate to 29.970fps clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001) # Output clip.set_output() Cu Selur |
23rd September 2021, 19:50 | #5 | Link | |||
Registered User
Join Date: Mar 2021
Location: Germany
Posts: 11
|
Hi,
Quote:
Quote:
The error i get is Code:
AttributeError: There is no function named Degrain Quote:
thanks everyone for the help Best regards, Earthnuker
__________________
Hack the planet! |
|||
17th October 2021, 21:42 | #6 | Link | |
Mt. Fuji Encoding Alumni
Join Date: Nov 2016
Location: Netherlands
Posts: 5
|
Quote:
Last edited by LightArrowsEXE; 17th October 2021 at 21:43. Reason: further questioning |
|
Tags |
cleanup, compression, invader zim |
Thread Tools | Search this Thread |
Display Modes | |
|
|