Selur's Little Message Board

Full Version: Hilfe für Denoise, DeBlock und Upscale von DVD
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
Hallo, bin wirklich hier ein Anfänger, habe mich glaube ich zumindest ein bisschen eingearbeitet, zumindest wie das geht mit DeInterlace.
Hab nun eine Frage was das Denoise und DeBlock angeht, bzw Tipps um von einer DVD die bestmögliche Qualität rauszuholen, soviel ich gelesen hab ist das von jeder Quelle unterschiedlich. Hab deshalb mit MKVtool den Film in eine .mkv datei gewandelt, und auch schon Deinterlaced, hab jetzt ein sample von 25 Sek geschnitten, ich weiss nicht wie lange das sample sein muss. 

https://drive.google.com/file/d/1h6AviKC...sp=sharing

Es würde mich Freuen wenn ich Hilfe oder Erklärungen fürs Denoise und DeBlock bekommen würde, vielleicht auch für Upscale.

Ich Danke schon mal vielmals.
Das Sample, was Du geteilt hast, wurde:
  • auf 25fps deinterlaced. Es enthält als im schlimmsten Fall nur 50% der Bewegungsinformationen.
  • in der Auflösung geändert. DeBlocking und auch das meiste Filtering sollte vor Resizing stattfinden. Da ansonsten durch das Resizing des Blockings und bestehender Artefakte neue Artefakte erschafft und das Entfernen der existierenden Artefakte erschwert bis unmöglich macht. Du hast aus 720x576 1024x576 pixel gemacht sprich jeder jetzt kommende Filter muss mehr Pixel filtern uns wird somit langsamer sein.
  • eventuell noch anders gefiltert.
  • Reencoded, sprich alle existierenden Artefakte und die neu geschaffenen wurden doch erneute Kompressionsartefakte erweitert.

=> Teile am besten ein kleines Stück des Quellmaterials .
Das Sample kann ruhig ohne Ton sein, und es reicht vermutlich ein 10 Sekunden Ausschnitt in dem horizontale Bewegung zu sehen ist.


Cu Selur
Hey Super Vielen Dank für die schnelle Antwort

Ich hab Deinterlace gewählt QGTMC mit Preset Placebo, aber hatte BOB nicht gewählt, weil ich dachte das die FPS nicht verdoppelt werden sollten.
Wusste ich nicht, sry bin wirklich da ein Anfänger, normalerweise mache ich FHD Filme in microHD und hatte nicht viel zu tun mit DVDs, aber hab da eben einige die ich verbessern will.

Ok verstehe das Resize kommt am schluss.

Hier das Sample: https://drive.google.com/file/d/1FDqzCzx...sp=sharing
QTGMC Placebo <- Warum den das?

Quote:ich weiss das was jetzt kommt ist ne wirklich blöde frage, wie kann ich ein 10sek sample schneiden ohne das es von der quelle die auflösung etc ändert. Tut mir echt leid, hab da schnell ein Programm zum schneiden benutzt. 
Als was liegt den deine Quelle vor?
Bei DVDs könnte man aus einer der vobs mit DGIndex einen Teil ausschneiden.
Falls mkv kann man mit mkvtoolnix schneiden.
....

Auf was für eine Auflösung willst Du später resizen?


Cu Selur
(23.11.2022, 20:37)Selur Wrote: [ -> ]QTGMC Placebo <- Warum den das?

Quote:ich weiss das was jetzt kommt ist ne wirklich blöde frage, wie kann ich ein 10sek sample schneiden ohne das es von der quelle die auflösung etc ändert. Tut mir echt leid, hab da schnell ein Programm zum schneiden benutzt. 
Als was liegt den deine Quelle vor?
Bei DVDs könnte man aus einer der vobs mit DGIndex einen Teil ausschneiden.
Falls mkv kann man mit mkvtoolnix schneiden.
....

Auf was für eine Auflösung willst Du später resizen?


Cu Selur

Also hab die Quelle vob und hab dann mit MKVToolNix in mkv gewandelt, hab jetzt auch gecheckt wie ich mit mkvtoolnix schneide Smile

Naja hätte vor in Auflösung 1080p wenn möglich, zumindest die beste die möglich ist.

Und QGTMC Vapoursynth Placebo hab ich gelesen sei schneller als Avysynth und glaub auch besser.
Bleib erstmal bei preset 'Fast' oder 'Faster', wirst bei so ner Quelle da eh keinen Unterschied sehen. Wink
Hahaha Danke gut zu wissen, hab da eben gelesen oder Ytvideo gesehen und dachte halt an bestmögliche Quali, da is mir sogar die Zeit egal, aber wenn man keinen Unterschied sieht, Danke für den Hinweis.

Sollte die FPS später nicht bei 25 oder so sein? Also am Schluss des bearbeitens (encoden)
Kommt auf das Material an, bei so nem Film kannste vermutlich auf 25 gehen, je nach Film macht es aber durchaus Sinn 50fps zu verwenden.

Quote:dachte halt an bestmögliche Quali, da is mir sogar die Zeit egal,
Sagen die meisten Leute bis sie dann mit 0.01 fps oder weniger encoden. Wink
Ja Klar 0.01fps encoden Heftig, aber bei mir gings noch nur das deinterlacen, da war es glaub zwischen 2.5 bis 3.9fps, hab dann einfach die Nacht durchlaufen lassen.

Aber werd wohl jetzt so machen deinterlacen preset fast bob aktivieren denoisen und deblocken und resizen in einem Rutsch

Hättest du schon Tipps fürs denoisen und deblocken

Blush
Hatte voll übersehen, dass Du ein neues Sample gepostet hattest. Big Grin
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/libvs_placebo.dll")
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DenoiseFilter/TTempSmooth/TTempSmooth.dll")
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.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/Support/DePan.dll")
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DeblockFilter/DeblockPP7/DeblockPP7.dll")
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DenoiseFilter/RemoveDirt/RemoveDirtVS.dll")
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/MiscFilter/EdgeFixer/EdgeFixer.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/FFT3DFilter/fft3dfilter.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/DeinterlaceFilter/Bwdif/Bwdif.dll")
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll")
# Import scripts
import edi_rpow2
import lostfunc
import killerspots
import havsfunc
# source: 'C:\Users\Selur\Desktop\VTS_01_1 (1)-005.mkv'
# current color space: YUV420P8, bit depth: 8, resolution: 720x576, fps: 25, color matrix: 470bg, yuv luminance scale: limited, scanorder: top field first
# Loading C:\Users\Selur\Desktop\VTS_01_1 (1)-005.mkv using LWLibavSource
clip = core.lsmas.LWLibavSource(source="C:/Users/Selur/Desktop/VTS_01_1 (1)-005.mkv", format="YUV420P8", stream_index=0, cache=0, prefer_hw=2)
# 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 25
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# 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: 25
# make sure content is preceived as frame based
clip = core.std.SetFieldBased(clip, 0)
clip = clip[::2]
clip = havsfunc.DeHalo_alpha(clip)
# Fix bright and dark line artifacts near the border of an image using EdgeFixer
clip = core.edgefixer.Continuity(clip=clip,left=8)
clip = killerspots.KillerSpots(clip=clip)
# applying deblocking using DeblockPP7
clip = core.pp7.DeblockPP7(clip=clip, qp=3.50, mode=2)
# stabilizing using Stab
clip = lostfunc.Stab(clp=clip,mirror=0)
# cropping the video to 714x572
clip = core.std.CropRel(clip=clip, left=4, right=2, top=2, bottom=2)
clip = core.std.AddBorders(clip=clip, left=0, right=2, top=0, bottom=0) # add borders to archive mod 4 (vsMCT) - 716x572
# denoising using MCTemporalDenoise
clip = havsfunc.MCTemporalDenoise(i=clip, settings="very high", ncpu=1)
clip = core.std.CropRel(clip=clip, left=0, right=2, top=0, bottom=0) # removing borders (vsMCT) -  714x572
# adjusting color space from YUV420P8 to YUV444P16 for vsGLSLLumaSharpen
clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P16, range_s="limited")
with open("i:/Hybrid/64bit/vsfilters/GLSL/parameterized/LumaSharpenHook.glsl") as glslf:
  glsl = glslf.read()
glsl = glsl.replace('#define sharp_strength 0.30', '#define sharp_strength 1.2000')
glsl = glsl.replace('#define sharp_clamp    0.035', '#define sharp_clamp    0.0350')
glsl = glsl.replace('#define pattern 2', '#define pattern 2')
glsl = glsl.replace('#define offset_bias 1.0', '#define offset_bias 1.0000')
clip = core.placebo.Shader(clip=clip, shader_s=glsl, width=clip.width, height=clip.height)
clip = core.std.AddBorders(clip=clip, left=0, right=2, top=0, bottom=0) # add borders to archive mod 4 (NNEDI3(CL)) - 716x572
# resizing using NNEDI3CL
# current: 716x572 target: 1920x1080 -> pow: 4
clip = edi_rpow2.nnedi3cl_rpow2(clip=clip, rfactor=4) # 2864x2288
clip = core.std.CropRel(clip=clip, left=0, right=8, top=0, bottom=0) # removing borders (NNEDI3(CL)) -  2856x2288
# adjusting resizing
clip = core.fmtc.resample(clip=clip, w=1920, h=1080, kernel="lanczos", interlaced=False, interlacedd=False)
with open("i:/Hybrid/64bit/vsfilters/GLSL/parameterized/filmgrain.glsl") as glslf:
  glsl = glslf.read()
glsl = glsl.replace('#define INTENSITY 0.05', '#define INTENSITY 0.01')
clip = core.placebo.Shader(clip=clip, shader_s=glsl, width=clip.width, height=clip.height)
# adjusting output color from: YUV444P16 to YUV420P10 for NVEncModel
clip = core.resize.Bicubic(clip=clip, dither_type="none", format=vs.YUV420P10, range_s="limited")
# set output frame rate to 25fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# Output
clip.set_output()
macht Folgendes:
https://imgsli.com/MTM1NzE4
https://imgsli.com/MTM1NzE5
https://imgsli.com/MTM1NzIw
https://imgsli.com/MTM1NzIx

Das problematischste ist das Deblocking, teste mal die Filter an. (hab da DeblockPP7 verwendet, DPIR = ai Deblocker, liefert bessere Ergebnisse (https://imgsli.com/MTM1NzIz), benötigt aber ne CUDA GPU und ein extra Add-on für Hybrid)
Beim Denoising ist KillerSpots + MCTemporalDenoise ne ordentliche Kombi.


Cu Selur

Ps.: bin jetzt erstmal ins Bettchen (morgen 4:30 Uhr aufstehen, 2:30 Uhr zur Arbeit (wegen Streckensperrung bei der Bahn(, arbeiten und Abends zu 'The Hu' Big Grin) -> werde vermutlich erst Freitag wieder wirklich reagieren.
Pages: 1 2 3