versuche es mit dem Link nochmal:

Hybrid (Windows/Linux/Mac): Input -> x264/x265/Xvid/VP8/VP9
-
-
Ja, jetzt ist was drinnen.
ARGH, h.265 progressive, also vermutlich schon einiges gefiltert.
(aus dem Original die Artefakte entfernen wäre vermutlich wesentlich besser)
-
Ausgehend von dem Material sehe ich keine Möglichkeit die Artefakte zu entfernen ohne unmengen an Details zu verwerfen.
Da kriegt man bessere Ergebnisse wenn man von den Original DVDs startet,
Cu Selur
-
Hmm, zu dem Ergebnis kam ich leider auch. Ich hatte noch die kleine Hoffnung, du kennst da noch einen Trick
Ok, in jedem Fall vielen Dank fürs Drüberschauen
-
Problem wie wenn man Material hat wo die Leute ihr interlactes Material nehmen, es nicht deinterlacen, progressive resizen und progressive speichern. So Zeug kriegt amn auch irgendwie gesäubert, aber man kriegt hat ne Qualität dabei die schlechter ist als das eigentliche Original. Je mehr geresized wurde desto mehr ist kaputt und wenn da per Machine Learning resized wurde ist es nur schlimmer.
Sowas zu machen macht halt nur Sinn, wenn es da Material nicht in besserer Qualität gibt, aber bei DVD upscales macht das keinen Sinn.
Cu Selur
-
Nur der Vollständigkeithalber:
Korrektur mit entsprechendem masking geht es schon,...
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/DenoiseFilter/CTMF/CTMF.dll")
- core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/GrainFilter/RemoveGrain/RemoveGrainVS.dll")
- core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DenoiseFilter/HQDN3D/libhqdn3d.dll")
- core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll")
- core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/libmvtools.dll")
- core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll")
- # defining beforeDeCross-function - START
- def beforeDeCross(clip):
- core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/fmtconv.dll")
- import havsfunc
- clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P8, range_s="full", dither_type="error_diffusion")
- clipMask = havsfunc.LUTDeRainbow(input=clip,mask=True)
- clipFiltered = core.fmtc.resample(clip=clip, w=1426, h=120, kernel="lanczos", interlaced=False, interlacedd=False)
- clipFiltered = core.fmtc.resample(clip=clipFiltered, w=1426, h=1080, kernel="lanczos", interlaced=False, interlacedd=False)
- clipFiltered = core.resize.Bicubic(clip=clipFiltered, format=vs.YUV444P8, range_s="full", dither_type="error_diffusion")
- clipMask = core.std.InvertMask(clipMask)
- clip = core.std.MaskedMerge(clip, clipFiltered, clipMask)
- # colorformat YUV444P8
- return clip
- # defining beforeDeCross-function - END
- # Import scripts
- import rescued
- # source: 'C:\Users\Selur\Desktop\S04E12 - Leben nach dem Tod.mkv'
- # current color space: YUV420P10, bit depth: 10, resolution: 1426x1080, fps: 23.976, color matrix: 709, yuv luminance scale: full, scanorder: progressive
- # Loading C:\Users\Selur\Desktop\S04E12 - Leben nach dem Tod.mkv using LWLibavSource
- clip = core.lsmas.LWLibavSource(source="C:/Users/Selur/Desktop/S04E12 - Leben nach dem Tod.mkv", format="YUV420P10", cache=0, prefer_hw=0)
- # Setting color matrix to 709.
- clip = core.std.SetFrameProps(clip, _Matrix=1)
- clip = clip if not core.text.FrameProps(clip,'_Transfer') else core.std.SetFrameProps(clip, _Transfer=1)
- clip = clip if not core.text.FrameProps(clip,'_Primaries') else core.std.SetFrameProps(clip, _Primaries=1)
- # Setting color range to PC (full) range.
- clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=0)
- # making sure frame rate is set to 23.976
- clip = core.std.AssumeFPS(clip=clip, fpsnum=24000, fpsden=1001)
- original = clip
- clip = beforeDeCross(clip)
- # current meta; color space: YUV444P8, bit depth: 8, resolution: 1426x1080, fps: 23.976, color matrix: 709, yuv luminance scale: full, scanorder: progressive
- # removing grain using TemporalDegrain
- clip = rescued.TemporalDegrain(inpClip=clip)
- # adjusting output color from: YUV420P10 to YUV420P8 for x264Model
- original = core.resize.Bicubic(clip=original, format=vs.YUV420P8, range_s="full", dither_type="error_diffusion")
- # adjusting output color from: YUV444P8 to YUV420P8 for x264Model
- clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, range_s="full")
- original = core.text.Text(clip=original,text="Original",scale=2)
- clip = core.text.Text(clip=clip,text="Filtered",scale=2)
- stacked = core.std.StackHorizontal([original,clip])
- # set output frame rate to 23.976fps
- stacked = core.std.AssumeFPS(clip=stacked, fpsnum=24000, fpsden=1001)
- # Output
- stacked.set_output()
Idee ist einfach: Mask von LUTDeRainbow nehmen und filtern in dem man einfach die Auflösung stark verkleinert (und wieder vergrößert, man könnte auch einfach kräftig blurren), Dananch dann noch ein DeGrain/Noise zum Aufräumen. Das Skript was ich gepostet habe zeigt nur wie es an sich geht, man müsste das Aufräumen noch tweaken,.. (die Maske könnte man auch noch etwas verbessern)
Lohnt aber meiner Ansicht nach nicht den Aufwand zu betreiben, aber wer will hat damit nen Ansatz.
Cu Selur
-
Hmm, danke. Werde ich morgen gleich nochmal testen. Einige Folgen hab ich inzwischen nochmal komplett neu bearbeitet, aber mal sehen, wie viel Aufwand es ist, ob wie viel Zeit ich damit spare und wieviel Details auf der anderen Seite verloren gehen.
Vielen Dank schonmal in jedem Fall
-
Und mal angetestet?
-
sry für die späte Antwort.
Ja, grundsätzlich wird das Flimmern besser aber der Detailverlust hat mich nun doch dazu animiert, es einfach nochmal komplett neu und diesmal ordentlich zu machen
-
Hab ich mir gedacht, vor allem weil LUTDeRainbow auch nicht gerade flott ist.
-
Hab noch was zu fft3dgpu in Hybrid. Ein paar Optionen sind in Hybrid nicht umgesetzt, aber die ein oder andere ist vielleicht doch nützlich:
Zitatfloat degrid = 1.0
Enables degriding. Only works well with
mode=1
. Doesn't degrid the Kalman filter (but it does degrid the sharpening (if enabled) after kalman filter). default 1.0 formode=1
, 0.0 formode=0
or 2.float scutoff = 0.3
Sharpening cutoff frequency, relative to max.
float svr = 1.0
Sharpening (and dehalo) vertical ratio (to horizontal) (default=1.0 - same as horizontal, 0 - no vertical sharpening)
float smin = 4.0
float smax = 20.0
Minimum and maximum limit (approximate noise margin) for sharpening stage.
float kratio = 2.0
Ratio of threshold to sigma to reset Kalman filter. Variation threshold =
sigma*kratio
, good value is about from 1.5 to 3.0int ow = bw/2
int oh = bh/2
Overlap width and height. This only works with
mode=1
. This specifies how big the overlap between the blocks are. Overlap size must be less than or equal to half the blocksize.ow
must be even.int wintype = 0
weighting windows type:
- 0 : same analysis and synthesis half-cosine window, used in all versions before 1.4.
- 1 : intermediate between 0 and 2
- 2 : flat analysis window, rised cosine (Hanning) synthesis window.
Vielleicht bekommt man mit degrid den ein oder anderen Gitterartefakt, der bei manchen Auflösungen, bestimmten bw Größen und beim Erhöhen von bordersize im mode 2 auftritt, damit in den Griff...
Und was ich auch erst jetzt bemerkt habe, ist dass negative Werte beim Sharpening ein Smoothing bewirken. Damit sind auch die ganzen sharpening Feintuning Einstellungen scutoff, smin und smax (den Schreibfehler ausm AviSynth Wiki hab ich gleich mal oben entfernt, da steht 2x smin...) interessant. Sharpening bzw. Smoothing auf bestimmte Bereiche zu begrenzen hört sich auch gut an, da es sich auch eher nur um einen leichten Effekt handelt, kann man den möglicherweise durch Anheben des smin Wertes oder ändern der scutoff Frequenz noch etwas verstärken/verändern.
Kann ja auch durch setzen von bw=-1 unabhängig vom denoising verwendet werden, und schon hat man einen GPU basierten sharpener/smoother.
Wintype verstehe ich zwar nicht wirklich, aber möglicherweise beeinflusst das die Arbeitsweise und auch Performance des Filters?!?
Auch noch Wert drüber nachzudenken:
4K UHD Denoising mit FFT3DGPU,FFT3DFilter,neo_fft3d (Performance,Bugs,VapourSynth-Umsetzung,...)
-
kann ich nachher mal draufschauen,...
-
Wenn ich bei der aktuellen Hybrid Version mehrere Video Dateien auswähle und zu Jobs hinzufüge, erhalte ich immer die folgende Meldung:
"does not exist and contains not enough job or subjob id,..."
Wenn ich die Dateien alle einzeln auswähle, kommt diese Meldung nicht und alles funktioniert.
-
ich schick Dir mal nen Link zu meiner aktuellen dev Version