Bildstabilisierung durch VHS-Mehrfachaufnahme

  • Hallo,

    ich habe eine sehr alte Anime-Kaufkassette bei maximaler Bitrate viermal mit einem VHS-DVD-Kombigerät auf DVD gebracht in der Absicht, die vier Einzelaufnahmen zu überlagern. Die passenden Bereiche sind per Trim definiert, doppelte oder fehlende Frames gibt es nicht. Welche Möglichkeiten gibt es da aktuell? Die Zeile layer(layer(a,b,"fast"),layer(c,d,"fast")) von hier http://forum.gleitz.info/showthread.php…Adeleteframe%2A lässt Avisynth nach RGB verlangen und zaubert mir ungewünschte Farben in's Video.


    Gruß


    nodunlop

  • Das wird nicht so richtig funktionieren. 4 mal die VHS aufgenommen und dann überlagern. Da muß der VHS Player ja jedesmal optimal synchron gelaufen sein.Und bei der Mechanik ja fast ein Unding. Aber ich lass mich ja gern eines besseren belehren.

  • Mit dem Skript sieht das im AvsP eigentlich ganz gut aus:

    Da Aufnahme 1 im Abspann Fehler hat, habe ich noch die zweite gefundene Möglichkeit für den Rest des Films benutzt.

    3 Mal editiert, zuletzt von nodunlop (25. Februar 2012 um 00:01)

  • UUaarrgghh, Spaghetti-Code. Da muss man viel suchen, um die genaue Struktur zu erkennen.

    1a) QTGMC(Srestore()) macht wenig Sinn. QTGMC ist ein Deinterlacer, das Ergebnis von Srestore ist bereits progressiv.

    1b) Allerdings muss vor Srestore eigentlich erst mal gebobbt werden. Es sei denn die Aufnahme ist bereits progressiv mit blended Frames. Aber dann geht normalerweise auch Srestore nicht, wenn es PAL ist. Es ginge bei progressivem NTSC ("Blend-Telecine"), aber dann müsste Srestore mit "omode=2" laufen, was es jedoch nicht tut.


    => Möchte leise Zweifel anmelden, dass das wirklich so stimmt ....

  • Das Script mal umstrukturiert, ohne etwas zu ändern. Was ggf. falsch war ist also immernoch falsch ... aber zumindest hat sich das Mehrfach-Öffnen der gleichen Quellen schon mal 'rausgekürzt.


    Zur Mittelwertbildung mehrerer Clips eignet sich übrigens das Plugin Average() ganz hervorragend - muss man keine Salti schlagen, je nach dem ob man eine gerade oder ungerade Anzahl von Clips hat. Genauer ist es im Zweifelsfall auch noch (weniger Rundungs-Fehler), aber das ist in diesem Fall hier wohl das geringste Problem.

  • Bei Spaghetti-Code ohne avsis habe ich 25.000 fps.
    srestore () drum rum--> 11.988fps
    QTGMC () drum rum --> 23.976 fps

    Alternativ (Müsste so rum QTGMC nicht das Bobbing für srestore übernehmen?):
    QTGMC () drum rum --> 50.000 fps
    srestore () drum rum --> 23.976 fps

    Einmal editiert, zuletzt von nodunlop (25. Februar 2012 um 00:52)

  • Vielleicht ist's nicht so offensichtlich, weil es Anime ist. Die sind ja überwiegend in 8fps oder 12fps animiert, und nur besonders bewegungskritische Sektionen wie Fullscreen-Panning sind in 24fps (bei modernem Anime, weiß nicht wie das "vor Jahrzehnten" dazumal gemacht wurde.)

    Auf jeden Fall kann

    srestore () drum rum--> 11.988fps
    QTGMC () drum rum --> 23.976 fps

    technisch fast unmöglich richtig sein. Wenn der Input interlaced ist, dann macht Srestore ohne vorheriges Bobbing eigentlich nur Murks (wobei es, wie gesagt, bei 8fps/12fps nicht immer offensichtlich sein muss), und die anschließende Frameverdoppelung von QTGMC ist dann auch Murks.

    Es geht nicht nur darum, dass ~irgendwie~ am Ende eine hübsche Zahl 'rauskommt. Die einzelnen Schritte müssen natürlich auch das machen, was technisch erforderlich ist.

    Wichtig ist, dass man bei der von-Stein-zu-Stein -Überquerung des Gülle-Flusses auf genau die richtigen Steine auftritt. Wenn man zwischendurch mal abrutscht, dann kommt man vielleicht auch ans andere Ufer, aber - man stinkt dann halt zum Himmel ...

  • Ich hatte die Wiki-Seite zu srestore zwar überflogen, mich aber darauf verlassen, dass AvsP mich schon anmaulen wird, wenn was nicht passt. Kann ich denn QTGMC das Bobbing für srestore machen lassen? Also anstatt QTGMC(srestore(movie)) als letzte Zeile im Skript srestore(QTGMC(movie)) verwenden?

  • Im Prinzip schon. Problem ist nur, dass QTGMC durch seine Methodik streng genommen nur für Real-Video geeignet ist (echte Bewegung in jedem Video-Feld), nicht aber für teil-bewegtes Video mit Dup-Frames bzw. -Fields.
    Dies ist für sich alleine genommen noch nicht mal gar so schlimm - aber es besteht die Möglichkeit, dass die Blend-Erkennung von Srestore dadurch negativ beeinflusst wird.

    Die sicherere Variante ist ein einfacher Standard-Bobber - Yadif, tdeint, oder sogar ein einfaches Bob().

    Ic hwürde auf jeden Fall mit einem Standard-Bobber anfangen, um die Filterkette in ihrem logischen Ablauf richtig einzurichten. Wenn das steht, dann kann man überprüfen, ob QTGMC als Bobber geeignet ist, bzw. ob er überhaupt nötig ist. (Capture von VHS-Kaufkassette klingt nicht nach "High Quality", und QTGMC ist um so besser, je besser die Quelle ist, und wird immer mehr zur "Zeitverschwendung", je schlechter die Quelle ist.)

    Jedenfalls, man kann Srestore ja auch doppelt beschicken - Standard-Bob zur Analyse, und Alternativ-Bob zum Rendern. Dafür ist der "dclip" Parameter in Srestore.

  • Den letzten Absatz für das Skript aus dem Wiki-Eintrag für srestore adaptiert sieht das jetzt so aus.


    Allerdings meldet AvsP

    Zitat


    LoadPlugin: unable to load "D:\Programme\AviSynth 2.5\plugins\ReduceFlicker.dll", error=0x7e

    Und mit der Fehlermeldung kann ich leider nichts anfangen.

    Einmal editiert, zuletzt von nodunlop (26. Februar 2012 um 20:29)

  • Jetzt krieg ich erst 'nen Fehler angezeigt, wenn's an die Zeile "tdeint(mode=1)" geht - invalid arguments. Aber immerhin. Fehlt da jetzt nur ein d. am Anfang der Zeile oder liegt der Fehler noch woanders?

  • :redface: Bin ich froh, dass ihr so gelassen bleibt. Wenn's erst mal da steht, ist mir alles logisch, aber von selbst drauf kommen ist dann doch nicht so ohne.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!