Filmrestaurierung 1.Teil

  • Tutorial

  • stoppel
  • 4837 Aufrufe 0 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Filmrestaurierung 1.Teil

    Filmrestaurierung, was ist das ?

    Einleitung -

    Mit dem Siegeszug des digitalen Videos kommen auch immer mehr alte
    (in 35mm analog gedrehte Filme) als Kauf-DVD's (also schon digitalisiert) auf den Markt.
    Es ist nicht so, daß die analoge Aufnahmetechnik vollkommen verdrängt worden wäre;
    auch heute noch werden viele Kinofilme analog gedreht.
    Aber viele Kinos arbeiten schon mit Festplatten und weniger mit Filmrollen.
    Im Folgenden versuche ich meine Erfahrungen mit der Restaurierung von digitalisierten
    ursprünglich analogen Filmmaterial weiterzugeben.
    Wie bei jeder Art von Reataurierung (ich habe lange Zeit Möbel restauriert)
    muß man immer wieder auf's Neue abschätzen, wieweit man bei der Erhaltung von Orginalen
    mit den neuen Techniken und Methoden gehen darf.
    Ein alter Film soll schließlich nicht wie die neueste Videoproduktion aussehen.
    Anders gesagt, es geht auch um den Erhalt der Patina.
    Allein Erfahrung und Fingerspitzengefühl helfen da weiter; und der Grundsatz :
    soviel erhaten als möglich.

    Zugegeben bei schon digitalisierten Filmen (also Kopien von Orginalen) ist die Sache unkomplizierter !
    (aber auch nicht ohne Tücken)



    A) Aufbereitung des Materials

    In Video-DVD's sind die Video- und Audio-Informationen miteinander verschränkt und mit Steuerbefehlen
    für Soft- oder Hardwareplayer bereichert verpackt.
    Welche Software man nimmt um die betreffenden Streams zu extrahieren ist schlußendlich nebensächlich.
    Ich nehme dafür "VobEdit" (es wird nur kopiert und nichts verändert)

    Im nächsten Schritt geht es darum mithilfe von "AviSynth" aus dem nackten Videostream Einzelbilder zu generieren.
    Um die Angelegenheit so einfach wie möglich zu halten, beschränke ich mich auf progressives Material.
    (auch weil "DeInterlacing" wegen seiner Komplexheit einen eigenen Artickel erfordert)

    Mit "DgIndex" wird der Videostream (m2v) analysiert und mit "Save Project" eine ".d2v" erstellt.
    Diese d2v-Datei läßt sich mithilfe eines speziellen AviSynth-Skriptes in VirtualDubMod laden.
    AviSynth-Skripte sind einfache Textdateien mit jedem Editor produzierbar.
    Alledings ist die Dateiendung nicht ".txt" sondern ".avs". Sie enthalten die Steuerbefehle für dieses Programm
    und lassen sich wie normale Textdateien auch, ohne Probleme verändern.
    Mit VirtualDubMod läßt sich dieses AviSynth-Skript laden und es erscheint der nackte Videostream
    indem man herumscrollen kann;
    Allerdings als unkommprimiertes Avi.(Videos werden in der Regel im Farbraum YV12 ausgegeben)
    Ein Klick auf ->Datei ->File Information zeigt alle Informationen des betreffenden Videos :
    Auflösung, Farbraum, Anzahl der Frames... um nur die Wichtigsten zu nennen.



    B) Bildproduktion

    Da die Fälle von Bildfehlern in Videos so unterschiedlich sind, gehe ich von einem unkomplizierten Fall aus :
    im gesamten Video befinden sich nur 3 aufeinanderfolgende Frames, die Bildfehhler aufweisen :
    (unsauberer Schnitt, ein auf mehrere Frames zu sehenden Schmutzfleck etc.)
    VirtualDubMod zeigt unten rechts die Framenummer jedes gerade gezeigten Frames an.
    Die Zählung beginnt computergemäß bei Frame Nr.0 .
    Nun geht es darum die betreffenden Frames ( + 1 oder 2 Frames vorher und nachher)
    als unkomprimierte Bilder auf die Festplatte zu speichern.
    Dafür wird das AviSynth-Skript entsprechend veändert.

    DGDecode_mpeg2source("D:\test.d2v", cpu=4, info=3)

    Lautet das Skript, daß das komplette Video in VirtualDubMod über AviSynth lädt
    (auf meinem Rechner, andere Rechner haben andere Buchstaben für die betreffende Partition
    und andere Bezeichnumgen für die ".d2v"-Datei. Es muß halt immer individuell angepasst werden)

    DGDecode_mpeg2source("D:\test.d2v", cpu=4, info=3)
    ConvertToRGB24()
    ImageWriter(("G:\P\",16731,16737,"bmp")

    Das Skript ist um zwei zusätzliche Befehle erweitert.
    Jedes Skript wird Zeile für Zeile von oben nach unten abgearbeitet.
    Mit der zweiten Zeile wird das Video in einen anderen Farbraum konvertiert
    (das gewählte Bildformat benötigt RGB24)
    Die dritte Zeile enthält den Befehl die Frames 16731 bis 16737 also insgesamt 7 Frames
    auf der Partition G im Ordner P im WindowsBitmapformat (bmp) zu speichern.
    Wird dieses erweiterte Skript mit VirtualDubMod geladen und abgespielt,
    werden automatisch die Bilder gespeichert.
    Man muß nicht das komplette Video durchlaufen lassen;
    es reicht einge Frames vorher mit dem Schieberegler zu scrollen
    und dann erst die Abspieltaste zu betätigen.
    Prinzipiell könnte man den kompletten Film als Abfolge einzelner Bilder abspeichern.
    Allerdings erreicht dann die Datengröße 20 bis 30 GB insgesamt; auch das Durchsuchen eines Ordners
    mit über 100.000 Bildern ist nicht gerade arbeitsfreundlich.
    Mit maximal 10.000 Bildern bin ich bisher gut zurechtgekommen (also nur vierstellige Ziffern).



    C) Bildbearbeitung

    Für diesen Arbeitsschritt werden zwei Programme benötigt:
    IrfanView und Paint (in Windows enthalten)
    Es wird wohl auch mit jedem anderen Bildbearbeitungsprogramm gehen.
    (was ich verständlicherweise nicht ausprobiert habe)
    IrfanView bietet die Möglichkeit mithilfe der Pfeiltasten durch durchnummerierte Bildfolgen zu srcollen.

    Nun liegen also sieben einzelne Bilddateien im Ordner P.
    In drei dieser Bilder ist ein großer schwarzer Schmutzfleck in der linken Bildhälfte.
    Diesen gilt es zu entfernen.
    Beim Betrachten der Frames vor und nach diesem Fleck, stellt sich heraus, daß sich der Bildinhalt
    in der linken Bildhälfte in allen Frames nicht verändert.
    Also lade ich einen Frame ohne Fleck und ziehe einen Rahmen (linke Maustaste gedrückt halten)
    um die linke Bildhälfte bis zur oberen linken Ecke hinaus und stellle diesen umrahmten Bereich frei
    ->Bearbeiten -> Freistellen
    und speichere dieses Bildteil unter einer neuen Bezeichnung.

    Nun kommt Paint ins Spiel.Das Programm muß zuerst justiert werden :

    By stoppelx at 2011-03-25
    mit ->Bild -> Attribute übernehme ich die Maßeinheit der Frames, also die Auflösung in Pixel
    mit ->Bearbeiten -> Einfügen aus lade ich zuerst einen der Frames mit Fleck, danach
    wieder mit ->Bearbeiten -> Einfügen aus das zuvor mithilfe von IrfanView produzierte und abgespeicherte
    Bildteil. Paint setzt dieses Teil automatisch in die linke obere Ecke. Es ließe sich auch verschieben
    und überall auf dem Bild platzieren, was aber in unserem Fall nicht nötig ist.
    Ich kann das selbe Bildteil zum zweiten Mal laden oder auch einen dritten oder vierten
    gänzlich anderen Bildschnipsel verwenden. Das jeweils zuletzt geladene Teil ist verschiebbar.
    Damit ist die Arbeit an diesem Frame getan und man kann abspeichern (natürlich in bmp)
    Nachteil : Paint zeigt nicht die Frammenummer an, man muß sich also die entsprechende Nummer
    bis zum abspeichern merken, da der Einfachheit halber das reparierte Frame das unreparierte überschreiben soll.
    Bildfehler bei denen der betroffene Teilbereich im vorrangegangen oder nachfolgendem Frame
    seine Position nicht verändert sind unproblematisch. Auch wenn der Fehler im rechten Bildbereich liegen sollte.
    Einfach den "sauberen" linken Bildteil freistellen und über einen fehlerfreien benachbarten Frame legen.

    Problematisch und anstrengend wird es erst bei, wer hätte es gedacht, Positionsveränderungen.
    Müssen kaschierende Bildteile frei platziert werden : dann sind sowohl vertikale als auch horizontale
    Anhaltspunkte unerläßlich. Bei richtiger Platzierung verschmilzt quasi das Bildschnipsel mit der Unterlage.
    Bei größeren Bilddefekten hat sich eine Aufteilung in mehrere kleine kaschierende Billdteile
    als brauchbar erwiesen.
    In vielen problematischen Fällen ist es ratsam den Bildausschnitt klug zu wählen.
    Das Ergebis der Arbeit läßt sich sofort mit IrfanView überprüfen :
    wie schon oben erwähnt werden die Bilder durch die Pfeiltasten in schneller Abfolge gezeigt.

    Noch einige kleine aber nicht unerhebliche Tipps :
    Vor der Bildbearbeitung empfiehlt es sich, die Auflösung des Monitors herunterzusetzen.
    Da alle Bilder von Imagewriter mit sechsstelligen Ziffern bezeichnet werden, erleichtert es die Arbeit
    freigestellte Bildsegmente mit "000 0000.bmp" also siebenstellig und im selben Ordner
    wie die Framebilder zu speichern, was den Vorteil bietet, daß man beim Laden der Bildsegmente durch Paint
    nicht danach suchen muß : sie stehen immer an erster Stelle ! Sobald das Segment mit Paint geladen wurde
    kann man ein neues Segment mit gleichem Namen herstellen.

    Beispiel :

    By stoppelx at 2011-03-25
    Bild 002 zeigt einen Frame aus einem Kameraschwenk. Im rechten unteren Bildbereich befindet sich
    ein viereckiger heller Bildfehler (von mir selbst produziert)
    In den benachbarten Frames ohne diesen Fehler verändern alle Gegenstände im Bild ihre Position.

    Bild 003 zeigt den gleichen Frame, aber der Bildfehler wurde duch "vertikales Freistellen" abgetrennt

    By stoppelx at 2011-03-25
    Bild 004 zeigt die "horizontale Frestellung".

    By stoppelx at 2011-03-25

    Lade ich nun ein benachbartes "sauberes" Frame mit paint und lege Bild 003 und 004 darüber,
    erhalte ich ein restauriertes Frame.
    (die Veränderung in der Ecke unten rechts ist für das Auge nicht mehr wahrnehmbar)

    Es geht darum das "Einrasten" in der linken oberen Ecke von Paint intelligent und phantasievoll zu nutzen.
    In allen Fällen wo sich diese Methode anwenden läßt, erspart man sich das zwangsläufig ungenaue
    und arbeitsintensive "freihändige" verschieben und platzieren.



    D) Videoproduktion

    Muß der komplette Film bearbeitet werden, ist es ratsam sich von Szenenwechsel zu Szenenwechsel
    durchzuarbeiten und die Zwischenergebnisse mit einem verlustlosen Videocodec zu speichern.
    (Lagerith, MSU lossless etc.)

    ImageReader("G:\P\%06d.bmp",0,13041,25)
    ConverttoYV12()

    Das obige Skript mit VirtualDubMod geladen zeigt ein unkomprimiertes Avi-Video im Farbraum YV12.
    Es wird mit 25 fps abgespielt.
    In den Fällen wo nur ein kleiner oder mehrere kleine Teilbereiche bearbeitet wurden,
    muß man sich ein entsprechendes Skript basteln :
    Um unser Anfangsbeispiel wiederzuverwenden :

    v01= DGDecode_mpeg2source("D:\test.d2v", cpu=4, info=3).Trim((0,16730)
    v02= ImageReader("G:\P\",16731,16737,25).ConvertToYV12()
    v03= DGDecode_mpeg2source("D:\test.d2v", cpu=4, info=3).Trim((16738,0)
    v01+v02+v03

    Ich habe in den ersten drei Zeilen Funktionen definiert,
    die zusammenverbunden in der letzten Zeile aufgerufen werden.
    v01 gibt den Film vom Filmanfang bis zu Frame 16730 wieder
    v02 liest die bmp Bilder von Nr. 16731 bis Nr. 16737 und verwandelt sie in ein 25 fps Video im Farbraum YV12
    v03 gibt den Film ab Frame 16738 bis zum Schluß wieder
    Ich kann nun den kompletten Film mit VirtualDubMod laden und abspeichern.
    Ich kann auch StaxRip oder MeGui verwenden, alle Videobearbeitungsprogramme die AviSynth-Skripte
    verarbeiten können !



    E) Schluß

    Es gäbe noch unendlich viel zu sagen, was aber den Rahmen dieser Arbeit sprengen würde.
    Meiner eigenen Erfahrung nach empfinden viele die Arbeit mit AviSynth
    als unzumutbar und unüberwindliche Hürde.
    Hat man erst mal begriffen wie dieses Programm grundsätzlich "tickt" (nämlich als FrameServer)
    so lernt man früher oder später auch mit der sperrigen Syntax zurechtzukommen !
    Fur Fragen und um Stolpersteine aus dem Weg zu räumen, bin ich jederzeit ansprechbar !

    (alles obige funktioniert unter Windows XP)

    Danke für die Aufmerksamkeit - stoppel
    Frühling 2011

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von stoppel ()