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 ()