I've been trying to do this for a while.
Kodomo no Omocha was produced on film, but transfered to video via telecine, and when edited and mastered into analog videotape (Type-C or Betacam SP).
Since it's a telecined analog taped source and the original film masters are probably lost (i think), i'm thinking of remastering from the taped source using the japanese DVD.
The restoration filters used are:
- De-rainbow and dot-crawl removal (analog videotape)
- Color correction
- De-haloing (with mask)
I've been looking on doing some episode-specific artifacts:
- Some episodes has chromatic aberration from (probably) the telecine machine
- Ghosting
Any help from feedback is greatly appreciated.
Here's the script i'm using:
Code:SetFilterMTMode("DEFAULT_MT_MODE", 2) SetFilterMTMode("DirectShowSource", 3) ## Video file (ripped using MakeMKV) ep_file = "F:\title_t00.mkv" ## Load video file FFVideoSource(ep_file) ## Load audio file aud = FFAudioSource(ep_file) ## Rainbowing removal DFMDerainbow(maskthresh=10, mask=False, interlaced=True) ## Dot-crawl removal Tcomb(mode=2, fthreshl=4, fthreshc=5, othreshl=5, othreshc=6, map=False, scthresh=12.0) AssumeTFF() ## Temporary IVTC TFM(order=1, slow=2) TDecimate(rate=24.000/1001) ## De-halo #dehalo = FineDehalo(rx=2.0, ry=2.0, thmi=80, thma=128, thlimi=50, thlima=100, darkstr=0.8, brightstr=1.0, showmask=0, contra=0.0, excl=true) dehalo = Dehalo_alpha_mt(rx=4.0, ry=3.0, darkstr=1.0, brightstr=1.0) dehalomask = mt_edge(mode="prewitt", thy1=100, thy2=200).mt_expand().mt_expand().Blur(1.4).GreyScale() Overlay(last, dehalo, mask=dehalomask) ## Tweaking Tweak(hue=-10) ConvertToRGB32() Levels(16,1,241,0,255) ConvertToYV12() Prefetch(8) ## For comparison shots /*episode = episode.KillAudio() episode = episode.Crop(0,0,360,-0) Crop(360,0,-0,-0) StackHorizontal(episode,last)*/ AudioDub(last,aud)
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays!
+ Reply to Thread
Results 1 to 30 of 71
Thread
-
-
Share a short sample of your (unfiltered/modified) source (in example created by mkvtoolnix gui; tell it to split the file in x MB chunks and share one of those chunks) unless you want advice on image filtering and not video filtering.
users currently on my ignore list: deadrats, Stears555 -
Main issue I see is the ghosting, at least for me:
Code:TFM(order=1, slow=2) TDecimate(rate=24.000/1001)
About the cleaning: I would probably add some strong denoising (with invered edgemask) to cleanup the areas more.users currently on my ignore list: deadrats, Stears555 -
Here's what I came up with:
Code:LWLibavVideoSource("title_t00_clip1.mkv", cache=false, prefer_hw=2) AssumeTFF() ColorYUV(gain_y=60, off_y=-26, cont_u=60, cont_v=60) # levels, saturation ConvertToRGB().RGBAdjust(r=249.0/230.0, b=249.0/228.0, rb=-15).ConvertToYV12() #white balance QTGMC() # undo the field blended PAL to NTSC frame rate conversion SRestore() dehalo = Dehalo_alpha(rx=3.5, ry=3.5, darkstr=1.0, brightstr=1.0) dehalomask = mt_edge(mode="prewitt", thy1=50, thy2=150).mt_expand().mt_expand().Blur(1.0).Blur(1.0).GreyScale() Overlay(last, dehalo, mask=dehalomask) SMDegrain (tr=3, thSAD=1000, refinemotion=true, contrasharp=false, PreFilter=4, mode=0, truemotion=true, plane=4, chroma=false) Prefetch(8)
-
I usually use Vapoursynth not Avisynth.
For Avisynth and the cleanup I would invert the dehalo_mask and then probably use MCTemporalDenoise with something like the settings I would use in Vapoursynth in preset 'very high' with it:
Code:### +-------------+----------------------+----------------------+----------------------+----------------------+----------------------+ ### | SETTINGS | VERY LOW | LOW | MEDIUM | HIGH | VERY HIGH | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | radius | 1 | 2 | 3 | 2 | 3 | ### | pfMode | 3 | 3 | 3 | 3 | 3 | ### | sigma | 2 | 4 | 8 | 12 | 16 | ### | twopass | false | false | false | true | true | ### | useTTmpSm | false | false | false | false | false | ### | limit | -1 | -1 | -1 | -1 | 0 | ### | limit2 | -1 | -1 | -1 | 0 | 0 | ### | post | 0 | 0 | 0 | 0 | 0 | ### | chroma | false | false | true | true | true | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | deblock | false | false | false | false | false | ### | useQED | true | true | true | false | false | ### | quant1 | 10 | 20 | 30 | 30 | 40 | ### | quant2 | 20 | 40 | 60 | 60 | 80 | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | edgeclean | false | false | false | false | false | ### | ECrad | 1 | 2 | 3 | 4 | 5 | ### | ECthr | 64 | 32 | 32 | 16 | 16 | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | stabilize | false | false | false | true | true | ### | maxr | 1 | 1 | 2 | 2 | 2 | ### | TTstr | 1 | 1 | 1 | 2 | 2 | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | bwbh | HD?16:8 | HD?16:8 | HD?16:8 | HD?16:8 | HD?16:8 | ### | owoh | HD? 8:4 | HD? 8:4 | HD? 8:4 | HD? 8:4 | HD? 8:4 | ### | blksize | HD?16:8 | HD?16:8 | HD?16:8 | HD?16:8 | HD?16:8 | ### | overlap | HD? 8:4 | HD? 8:4 | HD? 8:4 | HD? 8:4 | HD? 8:4 | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | bt | 1 | 3 | 3 | 3 | 4 | ### | ncpu | 1 | 1 | 1 | 1 | 1 | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | thSAD | 200 | 300 | 400 | 500 | 600 | ### | thSADC | thSAD/2 | thSAD/2 | thSAD/2 | thSAD/2 | thSAD/2 | ### | thSAD2 | 200 | 300 | 400 | 500 | 600 | ### | thSADC2 | thSAD2/2 | thSAD2/2 | thSAD2/2 | thSAD2/2 | thSAD2/2 | ### | thSCD1 | 200 | 300 | 400 | 500 | 600 | ### | thSCD2 | 90 | 100 | 100 | 130 | 130 | ### |-------------+----------------------+----------------------+----------------------+----------------------+----------------------| ### | truemotion | false | false | false | false | false | ### | MVglobal | true | true | true | true | true | ### | pel | 1 | 2 | 2 | 2 | 2 | ### | pelsearch | 1 | 2 | 2 | 2 | 2 | ### | search | 4 | 4 | 4 | 4 | 4 | ### | searchparam | 2 | 2 | 2 | 2 | 2 | ### | MVsharp | 2 | 2 | 2 | 1 | 0 | ### | DCT | 0 | 0 | 0 | 0 | 0 | ### +-------------+----------------------+----------------------+----------------------+----------------------+----------------------+
In Vapoursynth I would either use MCTemporalDegrain or DPIR to clean the source
Code:QTGMC() # undo the field blended PAL to NTSC frame rate conversion SRestore()
I'll give it a go later,..users currently on my ignore list: deadrats, Stears555 -
I don't know if FineDehalo will work on dehaloing though.
The AviSynth plugin description said to preserve as best details while dehaloing.
I've tried comparing the dehalo filters.
1 - Original
2 - @jagabo's dehalo script
3 - FineDehalo
For me, Dehalo_alpha seemed... i don't know... blurry, for reason... -
played around a bit (not using ml filters)
Code:# Imports import vapoursynth as vs import os import ctypes # Loading Support Files Dllref = ctypes.windll.LoadLibrary("i:/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll") import sys # 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/Support/TCanny.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/ColorFilter/Retinex/Retinex.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DenoiseFilter/TTempSmooth/TTempSmooth.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/DCTFilter.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DeblockFilter/Deblock/Deblock.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DerainbowFilter/SSIQ/libssiq.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/libvs_placebo.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/ColorFilter/TimeCube/vscube.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/GrainFilter/RemoveGrain/RemoveGrainVS.dll") 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/EEDI3m.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/NNEDI3CL.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/libmvtools.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/MiscFilter/MiscFilters/MiscFilters.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll") # Import scripts import mvsfunc as mvf import masked import havsfunc # source: 'C:\Users\Selur\Desktop\title_t00_clip1.mkv' # current color space: YUV420P8, bit depth: 8, resolution: 720x480, fps: 29.97, color matrix: 470bg, yuv luminance scale: limited, scanorder: top field first # Loading C:\Users\Selur\Desktop\title_t00_clip1.mkv using LWLibavSource clip = core.lsmas.LWLibavSource(source="C:/Users/Selur/Desktop/title_t00_clip1.mkv", format="YUV420P8", cache=0, fpsnum=30000, fpsden=1001, prefer_hw=0) # Setting color matrix to 470bg. clip = core.std.SetFrameProps(clip, _Matrix=5) clip = clip if not core.text.FrameProps(clip,'_Transfer') else core.std.SetFrameProps(clip, _Transfer=5) clip = clip if not core.text.FrameProps(clip,'_Primaries') else core.std.SetFrameProps(clip, _Primaries=5) # Setting color range to TV (limited) range. clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1) # making sure frame rate is set to 29.970 clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001) # 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, opencl=True) # new fps: 59.94 # make sure content is preceived as frame based clip = core.std.SetFieldBased(clip, 0) # adjusting color space from YUV420P8 to RGB24 for vsTimeCube clip = core.resize.Bicubic(clip=clip, format=vs.RGB24, matrix_in_s="470bg", range_s="limited") # color adjustment using TimeCube clip = core.timecube.Cube(clip=clip, cube="I:/Hybrid/64bit/vsfilters/ColorFilter/TimeCube/color/Presetpro - Summit.cube") # adjusting color space from RGB24 to YUV444P16 for vsGLSLSaturation clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P16, matrix_s="470bg", range_s="limited") with open("i:/Hybrid/64bit/vsfilters/GLSL/parameterized/bSat.hook.glsl") as glslf: glsl = glslf.read() glsl = glsl.replace('#define SatFactor 2.43', '#define SatFactor 1.5') clip = core.placebo.Shader(clip=clip, shader_s=glsl, width=720, height=480) # adjusting color space from YUV444P16 to YUV420P8 for vsSSIQ clip = core.resize.Bicubic(clip=clip, dither_type="error_diffusion", format=vs.YUV420P8, range_s="limited") # rainbow removal using SSIQ clip = core.ssiq.SSIQ(clip=clip, interlaced=0) clip = havsfunc.DeHalo_alpha(clip, darkstr=1.50, brightstr=1.50) # denoising using MCTemporalDenoise clip = havsfunc.MCTemporalDenoise(i=clip, settings="very high", ncpu=1) ## Starting applying 'EdgeMask (Retinex)' masked filtering for vsFastLineDarken clipFiltered = clip clipFiltered = havsfunc.FastLineDarkenMOD(c=clipFiltered,strength=128,threshold=5) clipMask = clip clipMask = masked.retinex_edgemask(src=clipMask) clipMask = core.resize.Bicubic(clip=clipMask, format=vs.GRAY8) clip = core.std.MaskedMerge(clip, clipFiltered, clipMask) ## Finished applying 'Edgemask (Retinex)' masked filtering for vsFastLineDarken # adjusting frame count and rate with sRestore clip = havsfunc.srestore(source=clip, frate=23.9760, omode=6, speed=9, thresh=16, mode=2) # adjusting output color from: YUV420P8 to YUV420P10 for x265Model clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10, range_s="limited") # set output frame rate to 23.976fps clip = core.std.AssumeFPS(clip=clip, fpsnum=24000, fpsden=1001) # Output clip.set_output()
Cu Selurusers currently on my ignore list: deadrats, Stears555 -
The field blending is referred to as "Temporal Scanline Blending" on the bottom of this classic page: https://www.animemusicvideos.org/guides/avtech31/video-analyze.html
There is no way to fully remove it. For instance, here are some separated fields. 936 and 937 contain a unique film frame, with partial blends from the surrounding frames.
I would personally target 59.94fps output, so that when the blends have to be shown, each one is on-screen for less than 1/2 as long (17ms vs 42ms) and smoother motion is maintained.My YouTube channel with little clips: vhs-decode, comparing TBC, etc. -
the ghosting in the new clips seems as horrible as in the first.
users currently on my ignore list: deadrats, Stears555 -
Oh boy, that's gonna be a challenge, wasn't it?
So yeah, i searched and yeah, it's really hard to remove the blending.
On the moment, we don't have a tool that removes fully the blend.
But, mostly can be removed using AnimeIVTC, i think.
This function has "blending removal" in mind too.
Code:AnimeIVTC(mode=2,bbob=4,degrain=0)
-
Hmm,.. with some ml filters (BasicVSR++, DPIR, VSGAN) one can probably get rid off some of the artifacts, but it would be really slow.
Code:# Imports import vapoursynth as vs import os import ctypes # Loading Support Files Dllref = ctypes.windll.LoadLibrary("i:/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll") import sys # getting Vapoursynth core core = vs.core # Import scripts folder scriptPath = 'i:/Hybrid/64bit/vsscripts' sys.path.insert(0, os.path.abspath(scriptPath)) import site # Import libraries for onnxruntime path = site.getsitepackages()[0]+'/onnxruntime_dlls/' ctypes.windll.kernel32.SetDllDirectoryW(path) # Loading Plugins core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DerainbowFilter/SSIQ/libssiq.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/TCanny.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/ColorFilter/Retinex/Retinex.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/GrainFilter/RemoveGrain/RemoveGrainVS.dll") 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/EEDI3m.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/NNEDI3CL.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/libmvtools.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/MiscFilter/MiscFilters/MiscFilters.dll") core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll") # Import scripts import mvsfunc import mvsfunc as mvf import masked import havsfunc # source: 'C:\Users\Selur\Desktop\title_t00_clip1.mkv' # current color space: YUV420P8, bit depth: 8, resolution: 720x480, fps: 29.97, color matrix: 470bg, yuv luminance scale: limited, scanorder: top field first # Loading C:\Users\Selur\Desktop\title_t00_clip1.mkv using LWLibavSource clip = core.lsmas.LWLibavSource(source="C:/Users/Selur/Desktop/title_t00_clip1.mkv", format="YUV420P8", cache=0, prefer_hw=0) # Setting color matrix to 470bg. clip = core.std.SetFrameProps(clip, _Matrix=5) clip = clip if not core.text.FrameProps(clip,'_Transfer') else core.std.SetFrameProps(clip, _Transfer=5) clip = clip if not core.text.FrameProps(clip,'_Primaries') else core.std.SetFrameProps(clip, _Primaries=5) # Setting color range to TV (limited) range. clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1) # making sure frame rate is set to 29.970 clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001) # 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, opencl=True) # new fps: 59.94 # make sure content is preceived as frame based clip = core.std.SetFieldBased(clip, 0) # cropping the video to 706x480 clip = core.std.CropRel(clip=clip, left=6, right=8, top=0, bottom=0) ## Starting applying 'EdgeMask (Retinex)' masked filtering for vsBasicVSRPPFilter clipFiltered = clip clipFiltered = core.std.AddBorders(clip=clipFiltered, left=0, right=6, top=0, bottom=0) # add borders to archive mod 8 (vsBasicVSRPPFilter) - 712x480 # adjusting color space from YUV420P8 to RGBS for vsBasicVSRPPFilter clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.RGBS, matrix_in_s="470bg", range_s="limited") # Quality enhancement using BasicVSR++ from vsbasicvsrpp import BasicVSRPP clipFiltered = BasicVSRPP(clip=clipFiltered, model=3, fp16=True) clipFiltered = core.std.CropRel(clip=clipFiltered, left=0, right=6, top=0, bottom=0) # removing borders (vsBasicVSRPPFilter) - 706x480 clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.YUV420P8, matrix_s="470bg", range_s="limited", dither_type="error_diffusion") clipMask = clip clipMask = masked.retinex_edgemask(src=clipMask) clipMask = core.std.Maximum(clipMask) clipMask = core.resize.Bicubic(clip=clipMask, format=vs.GRAY8) clip = core.std.MaskedMerge(clip, clipFiltered, clipMask) ## Finished applying 'Edgemask (Retinex)' masked filtering for vsBasicVSRPPFilter # rainbow removal using SSIQ clip = core.ssiq.SSIQ(clip=clip, interlaced=0) from vsdpir import DPIR ## Starting applying 'EdgeMask (Retinex)' masked filtering for vsDPIRDenoise clipFiltered = clip # adjusting color space from YUV420P8 to RGBS for vsDPIRDenoise clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.RGBS, matrix_in_s="470bg", range_s="limited") # denoising using DPIRDenoise clipFiltered = DPIR(clip=clipFiltered, strength=50.000, task="denoise", provider=0) clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.YUV420P8, matrix_s="470bg", range_s="limited", dither_type="error_diffusion") clipMask = clip clipMask = masked.retinex_edgemask(src=clipMask) clipMask = core.std.Maximum(clipMask) clipMask = core.std.Maximum(clipMask) clipMask = core.std.InvertMask(clipMask) clipMask = core.resize.Bicubic(clip=clipMask, format=vs.GRAY8) clip = core.std.MaskedMerge(clip, clipFiltered, clipMask) ## Finished applying 'Edgemask (Retinex)' masked filtering for vsDPIRDenoise clip = havsfunc.DeHalo_alpha(clip, darkstr=1.50, brightstr=1.50) clip = core.std.AddBorders(clip=clip, left=0, right=2, top=0, bottom=0) # add borders to archive mod 4 (vsVSGAN) - 708x480 clip = core.resize.Bicubic(clip, range_in_s="limited", range_s="full") # Setting color range to PC (full) range. clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=0) # adjusting color space from YUV420P8 to RGB24 for vsVSGAN clip = core.resize.Bicubic(clip=clip, format=vs.RGB24, matrix_in_s="470bg", range_s="full") # resizing using VSGAN from vsgan import ESRGAN vsgan = ESRGAN(clip=clip,device="cuda") model = "I:/Hybrid/64bit/vsgan_models/2x_LD-Anime_Skr_v1.0.pth" vsgan.load(model) vsgan.apply(overlap=4) # 1416x960 clip = vsgan.clip # resizing 1416x960 to 1280x980 clip = core.std.CropRel(clip=clip, left=0, right=4, top=0, bottom=0) # removing borders (vsVSGAN) - 1412x960 clip = core.resize.Bicubic(clip, range_in_s="full", range_s="limited") # Setting color range to TV (limited) range. clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1) # adjusting resizing clip = core.fmtc.resample(clip=clip, w=1280, h=980, kernel="lanczos", interlaced=False, interlacedd=False) # adjusting output color from: RGB48 to YUV420P10 for x265Model clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P10, matrix_s="470bg", range_s="limited", dither_type="error_diffusion") # set output frame rate to 59.940fps clip = core.std.AssumeFPS(clip=clip, fpsnum=60000, fpsden=1001) # Output clip.set_output()
btw. Anime4K might be worth a try.
But, mostly can be removed using AnimeIVTC, i think.
Cu Selurusers currently on my ignore list: deadrats, Stears555 -
Here's the output of the above script, took ~2hrs speed when up to 0.16fps during the processing.
CleanUp works fine with tht filter combination, ghosting is still there, but some of the ghosting artifacts got removed or lessened.
Cu Selurusers currently on my ignore list: deadrats, Stears555 -
-
Your best bet is to find a native NTSC version of the series not the screwed up PAL to NTSC conversion you have now.
-
I agree, getting a version without the ghosting would solve the main problem. Cleaning, color adustments, etc. archivable through different filters.
Cu Selurusers currently on my ignore list: deadrats, Stears555 -
Now, what about deblocking?
Since the source is from a DVD, there will be some blocking artifacts. -
-
Actually, though AnimeIVTC did fix the majority of the ghosting, thankfully.
Just to know, this is the exact same frame. -
would the Blu-Ray version be any better quality wise ?? - https://www.ebay.com/itm/185079107978?amdata=enc%3AAQAHAAAA4ApOu9o19LXcXHhPBGXQx7P3pBp...3ABFBMhvbK159g
-
Well, some time ago, i received an copy of the .m2ts of the BluRay (here in Brazil, they don't sell, so that's the only way).
Here's the same frame on the japanese BluRay: -
Remember that this is the japanese BluRay.
The Discotek BluRay actually looks better, but it's 480i, meaning no alterations to the framerate, maintain interlacing, and consequently, the same temporal blending.
But i don't have a copy of the Discotek BluRay on the moment.
Here's the opening of the Discotek version as posted by Discotek itself on Twitter:
Here!Last edited by RGMOfficial; 25th May 2022 at 18:52.
-
For deblocking, Deblock_QED could be used, but depending on what filters you used beforehand it probably isn't necessary.
Cu Selurusers currently on my ignore list: deadrats, Stears555 -
Here's the opening of the Discotek version as posted by Discotek itself on Twitter:
Here!
edit: nevermindLast edited by rrats; 26th May 2022 at 01:27.
-
It isn't PAL→NTSC, it's an issue that seems specific to Japanese telecine from the late '80s to late '90s. Here are more links:
https://m1el.github.io/karekano/ (CTRL+F for "Temporal Scanline Blending" section, or scroll halfway down)
https://forum.doom9.org/showthread.php?t=175051My YouTube channel with little clips: vhs-decode, comparing TBC, etc. -
-
This artifact can be found on GAINAX's 90s anime.
-
Here's the opening comparison with my script:
(Left - Original; Right - Restored with my script)
Here's the updated script:
Code:SetFilterMTMode("DEFAULT_MT_MODE", 2) SetFilterMTMode("DirectShowSource", 3) ## Video file (ripped using MakeMKV) #ep_file = "title_t00.mkv" ep_file = "ep01_source.mkv" ## Load video file FFVideoSource(ep_file) #LWLibavVideoSource(ep_file) ## Rainbowing removal DFMDerainbow(maskthresh=10, mask=False, interlaced=True) ## Dot-crawl removal Tcomb(mode=2, fthreshl=4, fthreshc=5, othreshl=5, othreshc=6, map=False, scthresh=12.0) AssumeTFF() AnimeIVTC(mode=2,bbob=4,degrain=3,normconv=False) ## De-halo dehalo = Dehalo_alpha(rx=2.5, ry=2.5) dehalomask = mt_edge(mode="prewitt", thy1=100, thy2=200).mt_expand().mt_expand().Blur(1.4).GreyScale() Overlay(last, dehalo, mask=dehalomask) ## Tweaking Tweak(sat=.9) ConvertToRGB32(matrix="PC.709") Levels(14,1,245,0,255) ConvertToYV12(matrix="PC.709") Prefetch(4)
Similar Threads
-
Restoring PAL DVD
By Zeruel84 in forum RestorationReplies: 6Last Post: 8th Nov 2021, 12:20 -
Restoring really old cartoons
By Fleischacker in forum RestorationReplies: 7Last Post: 13th Nov 2020, 22:23 -
Restoring smooth motion
By ZetaStax in forum Video ConversionReplies: 17Last Post: 16th Sep 2019, 15:40 -
Avisynth anime restoring
By BeyondTheEnergy in forum RestorationReplies: 11Last Post: 13th Aug 2018, 11:55 -
8mm restoring
By Digital85 in forum RestorationReplies: 12Last Post: 18th Mar 2018, 04:20