VHS Video filtern in Virtualdub
Software Vermeiden von Bildverlusten beim Importieren (Dropped Frames) Typische Filterkaskade und Standardfilter
Vorbemerkung
Es ist egal, ob du zuerst den Ton nachbearbeitest oder das Bild.
Ein Versatz zwischen Ton und Bild muss jedoch zuerst behoben werden, bevor man das Video schneidet.
Siehe VHS Audio synchronisieren
Software
VirtualDub2
– weiterentwickelte Version von VirtualDub, als x86 und x64 Version erhältlich
Da zusätzlich Plugins für die Videofilterung geladen werden müssen, sollte
die x86-Version in jedem Fall (mit)installiert werden. Viele Plugins
existieren noch nicht als x64-Version.
VirtualDub1.10.4 – Vorgängerversion von Avery Lee, wird inzwischen nicht mehr weiter entwickelt
Die zusätzlich benötigten externen Plugins müssen von verschiedenen Webseiten zusammengetragen werden.
Vermeiden von Bildverlusten (Dropped Frames) beim Importieren
Beim Erfassen des Videos können durch Störungen im Videodatenstrom einzelne Bilder fehlen. Mögliche Ursachen dafür sind:
- Störungen im Bandlauf (zerknittertes Band) mit Bildaussetzern
- Wiedergabe von Bandabschnitten, auf denen gar keine Videobilder aufgezeichnet wurden (z.B. Abschnitte zwischen bei Videoaufnahmen)
- Wiedergabe des Vorspannbandes, auf dem noch keine Videodaten vorliegen
- schlechte Aufnahmen von terrestrischem TV, bei denen der Empfang gestört war
Während der Aufnahme werden vom jeweiligen Codec anstelle dieser
fehlenden Videoframes einfach Nullbilder eingesetzt (Null
frames).
Wenn man diese Aufnahme anschließend mit einer guten Videoplayersoftware
abspielt, fällt gar nicht auf, dass unter Umständen einzelne Bilder fehlen.
Man bemerkt höchstens, dass manchmal das Bild kurz stehen bleibt und dann
weiterläuft.
Weil vorhandene Bilder und Nullframes in den Zeitcode des Datenstromes vorschriftsmäßig eingebettet wurden, bleiben auch Ton und Bild synchron.
Wenn man dieses Video jedoch in einer Bearbeitungssoftware weiterverarbeitet oder auch einfach nur mit einem besser packenden Codec neu kodiert, treten plötzlich Sprünge im Videodatenstrom auf. Was noch schlimmer ist – der Ton läuft normal weiter, so dass das Bild des Videos dem Ton immer mehr davonläuft.
Der Grund dafür ist der fehlerhafte Umgang vieler Videocodecs mit Nullframes bei der Wiedergabe. Oftmals werden sie einfach völlig unterschlagen.
Mehr zum Hintergrund hier: ffmpeg decoder seems to drop frames (stackoverflow)
Bei einem meiner Videos hatte ich dieses Problem. Das Video ist
symbolisch in der folgenden Abbildung dargestellt.
Die ersten 299 Frames
bestanden teilweise aus leeren Abschnitten ohne Videodaten, die der
abspielende Videorecorder teilweise durch Rauschen ersetzt hat, teilweise
durch leere (fehlende Bilder) und teilweise auch durch reguläre Bilder mit
Bandrauschen. Die eigentliche Aufnahme begann mit dem ersten regulären Bild
in Frame 300.
Abbildung: In den gegrabbten Rohvideodaten war das erste Filmbild der eigentlichen Aufnahme bei Frame 300.
Beim Einlesen des Videos lieferten unterschiedlichen Programme aufgrund
der enthaltenen Null frames völlig unterschiedliche Längenangaben für die
Gesamtlänge des Videos.
Auch das erste Frame wurde an falscher Position gezeigt. Das ist ein Hinweis auf unterschlagene NULL frames.
Erste Szene und Gesamtlänge eines Testvideos (MJPEG, codiert mit PIC video codec) Wiedergabesoftware Erstes Frame Erkannte Gesamtlänge Avisynth ffvideosource 254 86795 frames Avisynth Directshowsource 295 87602 frames VirtualDub 1.10 300 87604 frames VirtualDub2 caching driver 299 87601 frames VirtualDub2 internal driver 300 87604 frames
Auch bei Verwendung des Lagarith video codecs (der ebenfalls Einzelbilder speichert), wurden bei der Wiedergabe NULL frames unterschlagen.
Testszene und Gesamtlänge eines Testvideos (lossless codiert mit Lagarith codec) Wiedergabesoftware Testframe Erkannte Gesamtlänge Avisynth ffvideosource 74583 86795 frames Avisynth Directshowsource 75031 87285 frames VirtualDub2: 75031 87284 frames VirtualDub1.10.4 kann Lagarith nicht lesen
Schlussfolgerung:
Derzeit (2019) sollte Avisynth nicht zum Einlesen
des Rohvideos verwendet werden.
Folgendes Vorgehen funktionierte hingegen:
- VirtualDup2: Einlesen des geggrabbten Videos (MJPEG) ––> Speichern als Lagarith [ ] Null frames deaktiviert
- VirtualDup2: Einlesen des gerade gespeicherten Videos (Lagarith
codiert) ––> Speichern als Xvid
[x] Interlaced Encoding
oder
Filtern und beschneiden in VirtualDub2 und speichern im endgültigen Format
Hinweis: Mit dem Codec Xvid geht das Umkodieren recht schnell und das Video kann dann in allen Programmen problemlos geöffnet werden. - Öffnen dieses Videos (Xvid interlaced) in Avisynth.
Deinterlacing und Filtern in Avisynth
Diese vereinfachte Variante sollte auch funktionieren (nicht ausprobiert):
- VirtualDup2: Einlesen des geggrabbten Videos (MJPEG) ––> Speichern
als Xvid
[x] Interlaced Encoding
oder
filtern und beschneiden in VirtualDub2 und dann speichern im endgültigen Format
Hinweis: Mit dem Codec Xvid geht das Umkodieren recht schnell und das Video kann dann in allen Programmen problemlos geöffnet werden. - Öffnen dieses Videos (Xvid interlaced) in Avisynth.
Deinterlacing und Filtern in Avisynth
Abbildung: Settings für Xvid und Lagarith zum speichern der transcodierten Rohdaten
Typische Filterkaskade in Virtualdub
Wir gehen davon aus, dass du dein VHS-Video schon mit einem Video Grabber digitalisiert hast.
Nun folgt die Nachbearbeitung und Korrektur in Virtualdub mit dieser typischen Filterkaskade.
Abbildung: Meine Filterkaskade für gegrabbte VHS Videos (die Beschnittwerte hängen vom Video ab)
Falsches Deinterlacing nachträglich entfernen
Wenn das Video interlaced ist (jeweils zwei aufeinanderfolgende Halbbilder in einem Bild zusammengefasst), musst du zuerst das Deinterlacing entfernen, bevor du das Video weiter verarbeitest oder verkleinerst. Nach anderen Bearbeitungsschritten kannst du diesen Schritt nicht mehr nachholen!
Hinweis: Filme werden in der Regel mit 25 Vollbildern pro Sekunde gesendet (25 fps) und mit etwas Glück werden beim Grabben genau die beiden Halbbilder in einem Frame zusammengefasst, die aus einem ursprünglichen Filmbild stammten. Mit einer Wahrscheinlichkeit von 50% könnten aber pro Frame auch jeweils zwei Halbbilder aus benachtbarten Filmbildern stammen. Daher ist fast immer ein Deinterlacing als erster Schritt nörig.
Abbildung: Ein Videoframe vor und nach dem Deinterlacen.
Welcher Deinterlacer ist passend?
Hier hilft nur, sich einige kritische Sekunden im
Video zu suchen, und sie versuchsweise mit verschiedenen
Deinterlacern zu rendern. Achte dabei auf:
- Wurde wirksam deinterlaced? Wie sieht das Bild aus?
- Bleibt die Feinzeichnung erhalten, beispielsweise Muster und Falten in Kleidung oder Details in Gesichtern?
- Erhöht sich das Rauschen? Wirkt das Bild unruhiger?
Im Zweifelsfall helfen dir ein paar Screenshots beim Variantenvergleich verschiedener Interlacer, durch die du mit Irfanview blättern kannst.
Meine Favoriten zum Deinterlacing (Stand 2010):
1. Deinterlace (area based)
2. ASVZZZ deinterlace: entfernt sehr gut nachträglich
Kammartefakte, verliert mehr Details
Deinterlace - area based
ist mein Favorit, gute die Detailzeichnung im Bild
verdoppelt die Framerate nicht
ist auch geeignet, wenn nur Bildteile Interlace-Streifen aufweisen
Allerdings wählt er manchmal die Farbinformation aus dem falschen Teilbild
(siehe Screenshot)
Einstellungen von Deinterlace – area based
ASVZZZ deinterlace
entfernt sehr gut die Kammartefakte
verliert etwas mehr Details
Weitere Deinterlacer für Virtualdub
http://www.guthspot.se/video/#fieldshift
Smoth field shift (erzeugt interpolierte Zwischenbilder aus ungeraden und geraden Zeilen
verdoppelt dabei die Framerate
Deinterlace 'Muksun'
bisher keine Erfahrungen damit
QS deinterlace
entstanden aus Donald Graft's Smart Deinterlace, aber 10…15% schneller
keine Erfahrungen damit
MSU Field shift fixer
nur für AVIsynth geeignet
probiert, ob die ungeraden Zeilen besser in Vorgänger oder Nachfolger passen.
MSU Deinterlacer
nur kommerziell erhältlich, kostet angeblich mehrere Tausend Dollar
Chroma delay korrigieren
Schlechte VHS-Recorder geben die Chroma-Farbinformation gegenüber dem s/w-Signal verspätet aus. Häufig ist die Farbe (Chroma) im Bild um einige Pixel nach rechts versetzt. Außerdem kann Chroma auch um ganze Zeilen nach unten verschoben sein. Nach mehrmaligem Umkopieren kann dieser Versatz drastisch ausfallen, weil er sich jedes Mal addiert.
Den Chroma-Versatz musst du korrigieren, bevor du das Bild beschneidest!
Suche dir im Video eine Passage, wo du den Farbversatz gut erkennen kannst, und stelle dann die Werte so ein, dass das Bild im rechten Kontrollfenster (Output Video) besser aussieht. Da die Farbe mit weniger Bandbreite gespeichert wird, als der schwarz-weiß-Anteil des Bildes, bluten Farbflächen meist etwas nach links und rechts aus.
Abbildung: Geeignetes Filter: Flaxen VHS mit typischen Einstellungen für ein 2x umkopiertes
Video.
Der FXVHS beseitigt angeblich auch sehr gutes temporales Rauschen und hält die Farbwerte eines einzelnen Pixels konstant über einen längeren Zeitraum. Allerdings arbeitet diese Sektion (Stabilizer) extrem langsam, weshalb ich sie nicht verwende.
Der NR Filter im FXVHS wirkt zu heftig in der Standardeinstellung.
Vom Flaxen VHS verwende ich nur die Chroma-Shift Sektion.
ChromaShift (avisynth only) (Simon Walters)
Während Flaxens's Filter im RGB Farbraum arbeitet und I und Q relativ zu Y verschiebt, arbeitet dieser in YUV und verschiebt U und V relativ to Y. Dies ergibt angeblich eine etwas andere Wirkung und keine Farbraumkonversion.
current version: 2.7 (2003)
Rauschen entfernen
VHS Signale sind immer etwas verrauscht, selbst wenn von DVD
aufgezeichnet wurde.
Das Rauschen kann entfernt werden durch Mittelwertbildung.
Das Rauschfilter ist mit entscheidend, wie klein zum Schluss deine
Datei wird. Moderne Kompressionsalgorithmen für Videos gehen
davon aus, dass von einem Frame zum nächsten große Teile des
Bildes erhalten bleiben. Dies ist bei einem dynamisch rauschenden Bild
nicht der Fall. Dann benötigen sie sehr viel mehr Bitrate.
Ein gut entrauschtes Video benötigt bei der selben
Qualitätseinstellung nur noch 1/3 der Dateigröße (Xvid oder X264)!
Typische Entrausch-Verfahren:
a) Mittelwertbildung über der Fläche
verliert Detailzeichnung, macht das Bild leicht unscharf
gut geeignet, um Farbrauschen zu reduzieren, da die Farbe bei VHS sowieso
mit viel geringerer Auflösung übertragen wird
b) Mittelwertbildung über die Zeit (Temporal clean)
Jeder Bildpunkt wird mit den gleichen Pixeln aus den davor oder danach
liegenden Frames geglättet.
Vor allem bei wenig oder langsam bewegten Szenen sehr wirkungsvoll.
Detailzeichnung bleiben erhalten, solange das Bild nicht wackelt (stabile Bildsynchronisation notwendig).
Dieses Filter ist mein Favorit.
Wenn das Bild von VHS "wackelt", kommt es durch diesen Effekt auch bei dieser Filterart zu einer gewissen Weichzeichnung über der Fläche.
c) MSU Denoise
Dieser kann beide Strategien, lieferte aber bei meinem Material auch
kein besseres Resultat als der Temporal clean.
Werte für Temporal clean wählen:
4: Ist oft noch zu wenig
5: Gerade noch akzeptabel, bei stark verrauschten Quellen angeraten.
7: Bewegtes zieht ca. 0.5 Sekunden lang lange Schlieren.
Meine VHS-Videos habe ich mit Faktor 5 temporal geglättet (größtenteils Dokumentationen).
Noise Reduction Suite (NRS)
Schwellwertabhängige räumliche und temproale Glättung, entfernt MJPEG-Artefakte (Ringing an Rändern) und Rauschen.
Dieses Filter kann Kanten erkennen und sie von der räumlichen und zeitlichen Filterung ausklammern. Außerdem ist die Glättung helligkeitsabhängig.
Dieser Filter kann versucht werden, wenn der Temporal smoother in dunklen Bereichen zu stark glättet, oder wenn er Kanten zu stark geglättet. (Beides kann man in diesem Filter abschwächen.)
Viele Parameter, daher schwerer aber feiner einzustellen, als der temporal smoother.
Mit der stärksten Einstellung 30-100-28-32 (Multipass disabled) wird das Bild etwa so stabilisiert, wie beim Temporal Smoother (5). Ich bevorzuge den Temporal smoother.
Super temporary cleaner (Stolyarevskiy Sergey)
Man kann sich anzeigen lassen, in welchen Bildbereichen dieser Filter Rauschen erkennt.
500 schwache Wirkung
2000 (Maximum) hier entrauscht er immer noch weniger, als der Temporal clean mit Stufe 5, was man an der größeren Videodatei nach dem Encoden erkennt. Ich verwende ihn nicht.
Wavelet Noise Reduction filter
Für Bildstörungen mit fester räumlicher Frequenz, z.B. durch Einstrahlungen anderer Sender oder MPEG Klötzchen.
Neat Video for Virtualdub
zaubert viele Details hervor, kommerzielles Programm
Tipp: Bei stark rauschenden Videos ist es macnhmal besser, mehrere Filter hintereinander zu schalten, als den temporalen Wert zu vergrößern, sonst verstärkt sich das unschöne zeitliche Nachziehen durch den Temporalen Filter. Dies sollte jedoch unbedingt an einer Testsequenz ausprobiert werden. Unter Umständen verschlechtert sich die Feinzeichnung. Ich reduziere den Glättungswert des temporalen Filters auf 4 bei stark rauschenden Videos, da sonst die Stabilisierung zu künstlich wirkt, und immer wieder einzelne Pixel durch sprunghafte Farbänderung auffallen. Da fällt ein kleines konstantes Rauschen weniger auf.
Overscan entfernen, Bild beschneiden
Digitales PAL (als Datei auf DVD) hat eine Auflösung
von 576 Zeilen und 720 Pixeln Breite, die auf einem Monitor auf 768
Pixel breitgezogen werden.
Analoges PAL (TV Signal) nutzt von den 576 Zeilen nur 525
Zeilen für das Bild.
Der Overscan (Beschnitt) war bei Röhrenfernsehern nötig, damit
nicht flimmernde Randbereiche des Bildes auf dem Schirm sichtbar
werden. Es werden ringsum etwa 3% des Bildes abgeschnitten. Dies wird zuvor bei der Produktion von
Videos und TV berücksichtigt, indem das Bild etwas größer mit
einem zusätzlichen Randbereich aufgezeichnet wird, der später bei
der Wiedergabe nicht zu sehen ist.
Auf den meisten realen Fernsehern sind nur gut 550 der 576 Zeilen zu sehen.
Overscan-Testbild von www.homecinema-fr.com auf
meinem Röhren-Fernseher. Ringsum fehlen 5%.
Auch der Standard für DVDs nimmt an, dass nur 702 der
720 Pixel auf dem TV dargestellt werden.
(www.digitalfaq.com/guides/video/capture-understand-sources.htm#overscan
Bei VHS-Aufnahmen werden alle Bildränder
sehr unruhig und flatternd dargestellt. Auf dem Fernseher ist dies
durch den Overscan nicht zu sehen. Im gegrabbten Video werden diese
unruhigen Ränder aber voll erfasst, weil der Video Grabber den
vollen Bereich darstellt.
Du musst das Video selbst beschneiden, so dass diese unruhigen Ränder verschwinden. Sie
kosten sonst Bandbreite beim Eindampfen des Bildes. Und wie
gesagt, bei der Produktion des Videos wurde ohnehin davon ausgegangen,
dass ca. 3% an allen Seiten nicht angezeigt werden.
Damit sich das Seitenverhältnis deines Videos nicht ändert, solltest du in Breite und Höhe den selben Prozentsatz vom Zielformat entfernen.
Die folgende Tabelle zeigt für verschiedene Prozentsätze (auf ein Bildformat von 768×576 bezogen), wie viele Pixel pro Seite entfernt werden müssen.
% 768px 720px 576px CCIR 601 1.33% 9,6 9 1% 7,7 7,2 5,8 2% 15,4 14,4 11,5 3% 23,0 21,6 17,3 4% 30,7 28,8 23,0 5% 38,4 36,0 28,8
Tabelle: Anzahl der durch Overscan fehlenden Pixel für verschiedene Prozentwerte.
Ein Beispiel:
Dein digitalisiertes Video hat links und rechts Flatterränder.
Oben sind etwa 4 Pixel schwarz, und der unterste Teil des Bildes
flattert unruhig durch die Kopfübernahme-Verzerrungen.
Du willst das Bild beschneiden, ohne es zu verzerren.
Aus der Tabelle entscheidest du dich für 2% Beschnitt. Da der
Grabber 720 Pixel in der Breite ausgibt, schneidest du links + rechts
zusammen 29 Pixel ab (2×14,4). Oben und unten zusammen 23
Pixel (2×11,5).
Nur wenn dich eine leichte Bildverzerrung nicht stört, kannst
du weniger Pixel abschneiden, und tatsächlich nur die
unruhigen Ränder entfernen.
Resize
Jetzt wird das Bild auf die Zielauflösung gebracht.
Dazu sind wichtig die Stellgrößen
- das Ziel-Bildformat (picture aspect ratio, üblicherweise 16:9 oder 4:3)
- das Pixelformat (pixel aspect ratio, üblicherweise 1:1 für Computerdisplays)
- die Bildgröße (nur so hoch
wählen, wie zum Erhalt der sichtbaren Details im Bild
nötig ist)
Höhe und Breite sollten zudem Vielfache von 16 sein.
Video-Typ | VHS | Analog TV | S-VHS, Hi8 | DVD | Betacam |
Bandbreite (MHz) | 3 ... 5 | 5,5 | 7,4 | bis HD-TV! |
|
Breite (Pixel) | 320 | 440 | 534 | 720 (768) | 670...1080 |
Optische Zeilenauflösung | 240 | 330 | 400 | 576 | 500-800 |
Tabelle: Effektive sichtbare Auflösung von Videosignalen (www.edv-tipp.de/2000/08/20/aufloesung/)
In dieser Tabelle siehst du, dass die sichtbare Auflösung von
VHS sehr viel geringer ist als die Pixelzahl, die dein Videograbber
ausgibt. Die Angaben beziehen sich auf quadratische Pixel.
Hochwertige VHS-Recorder (ab ca. 500 Euro) erreichen
eine Auflösung, fast so gut wie Analog-TV,
aber deutlich kleiner als 720×576. Es ist trotzdem
wichtig, dass du zunächst mit 576 Zeilen grabbst, damit
du nachträglich das Interlacing beseitigen kannst. Das geht nur, wenn die Zeilen nicht vermischt werden.
Zum Archivieren reicht jedoch die kleinste Auflösung, bei der optisch keine Details mehr verloren gehen.
In der Tabelle habe ich einige sinnvolle Auflösungen
für 4:3 Videos dargestellt.
% %Datei Kommentar 50 384 x 288 54 416 x 312 kein Faktor von 16! 58 448 x 336 reicht für VHS, geringe Unschärfe 62 40 480 x 360 Analog TV, für hochwertiges VHS, 40% Dateigröße, meist ausreichend 66 56 512 x 384 minimal mehr Details als 336p, für Analog TV und scharfes VHS ausreichend 75 576 x 432 kein Faktor von 16!
!83 75 640 x 480 voller Detailerhalt bei VHS-Kopien, native NTSC-Auflösung
91 704 x 528
100 100 768 x 576 minimal mehr Details als 480p bei analogem Grabben von einer DVD (S-Video)
Ziel-Bildformate für VHS-Material 4:3 (bei einem Pixel aspect ratio von 1:1)
Die folgende Tabelle zeigt Werte, die für 16:9-Format verwendet werden können. Da Breite und Zeilenzahl immer Vielfache von 16 sein sollen, entsteht bei einigen Formaten eine kleine prozentuale Abweichung vom idealen Seitenverhältnis 16:9.
% % Datei B x H Verformung Kommentar 256 x 144 0 368 x 208 0.5% 384 x 216 0 400 x 224 0.5% 480 x 272 0,7% 40% Dateigröße, meist ausreichend 512 x 288 0 624 x 352 0.3% 640 x 360 0 kein Faktor von 16! 656 x 368 0.3% 768 x 432 0 mehr Pixel in der Breite, weniger Zeilen als DVD, genug für Analog-TV 100 1024 x 576 0 mehr Pixel in der Breite, volle Zeilenzahl
Bildformate für
VHS-Material 16:9 (bei einem Pixel aspect ratio von 1:1)
Auf einer DVD wird ein 16:9 Video anamorp auf die 4:3
Standardauflösung 720×576 zusammengedrückt gespeichert.
Für die Wiedergabe wird es dann auf 1024×576
seitlich gedehnt. Das heißt, die tatsächliche
optische Auflösung beträgt nur 720 Pixel. Bei 16:9
Videos kann es sinnvoll sein, statt eines Pixel aspect ratios von 1:1
auf nichtquadratische Pixel zu wechseln, damit die fertige Videodatei
kleiner wird. Es hat keinen Sinn, Pixel zu speichern, die nichts zur
optischen Auflösung beitragen.
Wenn du keine 1:1 Pixel verwendest, musst du darauf achten, dass beim Neucodieren des Filmes immer das korrekte Pixel Aspect Ration übernommen wird.
Hilfreicher Pixelaspekt-Rechner: aspect.fre3.com/
Statt des internen Resizers gefällt mir besser das Plugin "VDmod_Resize". Es bietet Abmessungen für x und y an, die ein Vielfaches von 16 sind.
Resize-Einstellung für ein schlecht aufgelöstes VHS Video (4:3)
Im Bild sind meine Standardeinstellungen zum Verkleinern von alten, unscharfen VHS Aufnahmen dargestellt.
Schwarzwert anpassen (Levels)
Manche Grabber erfassen als dunkelsten Digitalwert Teile
außerhalb des Videobildes, die schwärzer als schwarz
sind. Das Bild wird dadurch zu hell. Mit dem Filter Levels
kann man den Schwarzpegel des Bildes korrigieren.
Abb: Virtualdub-Filter "Levels"
So stellst du die richtigen Werte ein:
Aktiviere die Vorschau. Suche dir einige möglichst
dunkle Filmszenen, um ein aussagekräftiges Histogramm
angezeigt zu bekommen. Klicke auf "snapshot". Verschiebe dann im Histogramm
nun den linken Regler für den Schwarzwert so weit,
dass der Schwarzhügel gerade noch voll belassen wird (siehe
Abbildung).
Nun suche dir eine besonders helle Szene mit vielen
Weißtönen. Verschiebe den Weißwert so weit
nach links, dass alle Weißwerte im Bild noch erfaßt werden.
Du kannst in der Vorschau gut sehen, wenn du den Weißwert zu
weit verringerst. Dann ersaufen die Details heller Flächen im
Weiß.
In der Regel musst du den Weißwert nicht verringern. Auch die
Gamma-Einstellung sollte unangetastet bleiben.
[×] Operate in luma instead of RGB sorgt dafür, dass abgedunkelte Bereiche nicht unnatürlich farbig wirken.
Wichtiger Hinweis: Wenn du die Grauwerte auf einen Bereich von 0 … 255 streckst, kann es Probleme geben, wenn du das Video dann mit dem PicVideo codec als MJPEG speicherst. Denn MJPEG war ursprünglich dafür gedacht, nur Helligkeitswerte im Bereich von 16 … 235 zu verwenden (TV levels). Der PicVideo codec in Virtualdub kann auch PC levels sauber weiter verarbeiten. Aber Avidemux erkennt nicht, wenn ein MJPEG Video PC levels verwendet, und es wirft dann die Helligkeitswerte unter 16 und über 135 weg, wodurch das Bild zu hart wird.
Farben auffrischen (optional)
Dies ist nur nötig, wenn schon das Ausgangssignal für die VHS-Aufnahme schlechte Farben hatte (zum Beispiel wenn der Film von einer anderen Videokassette kopiert wurde).
a) Farbsättigung erhöhen mit dem Filter HSV Adjust
Dies erhöht gleichzeitig auch das Farbrauschen. Manchmal
sinnvoll, manchmal besser nicht.
Vorsichtig dosieren. Der maximal sinnvolle Wert ist dann erreicht, wenn
im Vorschaubild die Farben bei weiterer Erhöhung nicht mehr
satter werden.
Farbsättigung erhöhen
b) MSU Smart Colors
Das Plugin erzeugt eine lebendige Farbwahrnehmung, greift dazu aber
drastisch in Abmischung des Bildes ein.
Es muss sehr vorsichtig dimensioniert werden.
Correct Colors -Einstellregler nur auf erste Stufe stellen. "Auto
levels" deaktivieren, sonst werden die Farben dramatisch
intensiv, vor allem in dunklen Szenen. Die Grundfarbe einer Szene geht
dann verloren, was (bei falschen Weißabgleich) manchmal
erwünscht sein kann.
(Vorsicht, das Plugin dunkelt mit Absicht überstrahlte
Flächen ab.)
MSU Smart Colors
Leicht Nachschärfen (optional)
In seltenen Fällen bekommt dem Bild ein leichtes Nachschärfen. Aber der Bildeindruck wird schnell anstrengend, wenn die Kanten zu sehr betont werden.
Generell gilt wie auch bei der Photobearbeitung: Der Effekt sollte kaum wahrnehmbar sein und keinesfalls ins Auge stechen.
Wichtiger Hinweis
Die sinnvollste Reihenfolge der Filter hängt auch vom Quellmaterial ab.
Generell ist es meist sinnvoll, erst nach einer Temporalen Rauschfilterung zu schärfen, wenn sich das Rauschen rausgemittelt hat, aber Bilddetails erhalten bleiben.
Bei VHS-videos mit einem sehr unscharfen Bild kann das temporale Rauschfilter zu stark glattbügeln, weil es keine Details im Bild findet. Das Ergebnis sind stufigen flächenhaft wirkenden Gesichter. Schärft man hinterher, wird dieser Effekt sogar noch verstärkt.(!)
Besser ist es in diesem Fall, bereits vor dem temporalen Filter sanft zu schärfen, damit es mehr Detailinformationen findet (MSU sharpen: small overall). Erst dahinter temporal mit einer Stärke von 4...5 glätten.
a) MSU Smart Sharpen
Das Filter enthält eine Bandpass-Filterung, welche enthaltenen Details, aber zu einem gewissen Grad auch das noch vorhanden Rauschen betont. Es werden aber eher die etwas gröberen Details betont, und das noch feinkörnigere Rauschen weniger. Das visuelle Resultat ist ganz angenehm. Andere Schärfefilter schärfen aggressiver.
Zusätzlich kann mit Borders
eine Unschärfemaske dazu geschaltet werden. Diese sollte nie so stark angewendet werden, dass die Kanten zu stark schreien
.
Ich selbst verwende daher nur den normalen Schärfefilter (small overall
bzw. overall
).
b) Sharpen [internal]
sehr schnell, Stärke ist einstellbar, erhöht stärker die hochfrequenten Details als MSU Smart Sharpen.
Flaxen Warp sharpen
Verstärkt nur die Kanten ähnlich wie bei unscharf maskieren. Daher vorsichtig dosieren.
PCVideo Image Processor Filter - smart sharpen
erhöht stärker die hochfrequenten Details als MSU Smart Sharpen.
Msharpen (Donald Graft)
verschiebt Pixel an die Kanten, er erhöht dadurch kaum das Rauschen. Hauptsächlich für Anime.
Xsharpen (Donald Graft)
verschiebt Pixel an die Kanten, er erhöht dadurch kaum das Rauschen, erzeugt aber raue Kanten.
DSharp 1.0 (Alexander Zavalishin)
Deconvolution filter zum Refocussieren unscharfer Aufnahmen. Leider ist keine Hilfe für die Parameter vorhanden.
Weitere Filter (optional)
VHSrest Zeilensynchronisation wiederherstellen
Bei schlechter Zeilensynchronisation liegen die Zeilen nicht genau untereinander.
Senkrechte Linien wirken dann wellig.
Dieser Filter versucht, senkrechte Linien im Bild zu erkennen, und die Zeilen danach auszurichten.
Vorsicht! Bei stark verrauschtem Signal wird das Bild dadurch krummer als vorher.
Smart Smoother High Quality, Smart smoother IQ (Chroma ringing, Regenbogenartefakte entfernen)
Bei manchen Aufnahmen erzeugen schwarz-weiß Muster regenbogenfarbene Farbstörungen.
Diese Filter nutzen verschiedene Algorithmen, um die Farbstörungen zu reduzieren.
Chroma Smoother (intern)
Hat Presets, um das Chroma ringing verschiedener Codecs nachträglich zu entfernen.
Filterkette für Zeichentrickfilme (Cartoons, Anime)
Das ist meine Filterkette für VHS Zeichentrickfilme. Die Ergebnisse damit sind sehr gut (siehe screenshot). Diese Filterkette ist jedoch extrem langsam, hauptsächlich wegen des MSU Cartoon restore filters (multipass, medium strength). Mit diesem Setup ging die Framerate meines Systems von 5,5 fps runter auf 1 fps.
Falls bei stärker gestörtem Material gleichfarbige Flächen immer noch rauschen, kann es sogar sinnvoll sein, am Ende dieser Filterkette nochmals den temporal smoother (4) und den MSU cartoon restore Filter anzufügen.
Abbildung: Meine Filterkette für gegrabbte VHS Zeichentrickfilme
Filterkette für blasse, verblichene Filme mit Farbverlusten
Ursache der Farbverfälschungen
Die einzelnen Filmschichten alter Farbfilme verblassen unterschiedlich stark und unterschiedlich schnell.
Zuerst verliert die Cyan/Blau Schicht ihre Farbe, dann auch die gelbe/grüne. Zuletzt verblasst die Magenta/Rot Schicht.
Dies führt zu einem Verlust ganzer Farbbereiche.
Zusätzlich wird auch der Bildkontrast immer ärmer und das Gamma verschiebt sich.
Da nach dem einscannen des Filmes meist der Kontrast wieder auf den Bereich ganz schwarz (0) bis weiß (255) gestreckt wurde, wird das Bild oft zu hart. Die Filme sehen dann aus, als hätte man sie zu oft über ein Fotocopy-Gerät gezogen.
Farben korrigieren
Laut diesem Thread hat sich folgendes Vorgehen bewährt:
1. Zuerst natürliche Grauwerte einstellen.
Alte Filme haben oft sehr dunkle harte Schatten und blasse ausgeblichene Lichter.
Als erster Schritt sollte daher eine S-förmige Gradationskurve eingefügt werden,
die Kontraste der Schatten ein wenig abmindert und in die Lichter mehr Grauwerte holt.
Voraussetzung, ist, dass die Levels bereits auf den vollen Bereich von 0...255 eingestellt sind (Levels Filter).
Nun vorübergehend einen Grayscale filter aktivieren, weil sich der Helligkeitseindruck so besser einschätzen lässt
Gradiation Filter einfügen: eine S-Kurve in die Helligkeit (Value) hineinlegen, die das Histogramm im hellen Bereich staucht, aber im ganz dunklen Bereich streckt
Optische Kontrolle:
Wie sind dunkle, mittlere und helle Töne jetzt wiedergegeben?
Stimmen die Hauttöne?
Numerische Kontrolle: Wolken sind weiß, Gras hat etwa 67% grau, Haut liegt bei 160...180
Das kleine Freeware Werkzeug CSamp hilft, die Pixelfarbwerte zu vermessen.
Abbildung: Gradationskurven für Helligkeit und Farbsättigung für ausgeblichenen Film
Mit dieser Grundkorrektur verbessert sich das Bild meist schon deutlich.
2. Danach folgt der Farbabgleich
Welche Farben sind im Film überrepräsentiert? Welche fehlen?
Das Video kann von einer verblassten Filmkopie oder auch von einem verblassten Umkehrnegativ-Master stammen. Daher können Korrekturen im RGB oder auch im CMYK-Bereich angebracht sein. Welche Kanäle zu bearbeiten sind, kannst du aus den noch erhaltenen Farben schließen.
Abbildung: Vorhandene Restfarben und nötige Abhilfe, je nachdem, welche Schichten verblasst sind.
Bei einem Film, der nur rot, lila und blau enthält, ist die grüne Schicht ausgeblichen. Bei der blauen Schicht sind wahrscheinlich auch die hellen Blautöne bereits ausgeblichen, dunkle aber noch erhalten. Zur Kompensation muss der Grünanteil stark erhöht werden, aber wahrscheinlich ebenfalls auch etwas die hellen Blau-Töne.
Bei einem Film, der nur rot, orange, gelb grün enthält, ist die blaue Schicht ausgeblichen. Bei der grünen Schicht sind wahrscheinlich auch die hellen Grüntöne bereits ausgeblichen, dunkle aber noch erhalten. Zur Kompensation muss der Blauanteil stark erhöht werden, aber wahrscheinlich ebenfalls auch etwas die hellen Grün-Töne.
MSU smart colors
Dieses Filter erreicht teilweise automatisch sehr schöne Ergebnisse, schlägt aber
in Szenen mit wenig Kontrast (Abspann) erbarmungslos zu und führt dann zu
Fantasiefarben. Man kann es daher nur für bestimme Szenen einsetzen, aber nie global für den ganzen Film.(!)
MSU old color restauration (0.9b)
Erhöht sehr drastisch den Blauanteil im Bild. Das Filter greift dramatisch in die Farben ein und führt oft zu einem unausgewogenem Eindruck.
Stimmigere Ergebnisse erreicht man mit einem manuellen Abgleich der Farben.
a) ColorMill
einfach zu bedienen
erlaubt die Verstärkung oder Abschwächung für jeden Farbkanal getrennt für Tiefen, Mitten und helle Partien.
b) CMYK Film Color Correction
Für Filme, die aus CMYK Schichten bestanden.
c)RGB-EQ von Eugene Khoroshavin
Nicht ganz so intuitiv wie Color Mill, aber wesentlich leistungsfähiger.
Neben Einstellungen für Gamma (auch für einzelne Farbkanäle), Luma, Saturation
und Farbkanäle (RGB und YMK) bietet dieses Tool auch die außergewöhnliche
Einstellmöglichkeit, Pixel in Abhängigkeit ihrer Helligkeit nachzuschärfen oder
zu glätten.
Man beginnt mit dem Gamma-Abgleich des gesamten Bildes, verändert dann eventuell
die Farbsättigung und geht dann in die einzelnen Farbkanäle, um diese in
einzelnen Helligkeitsbereichen zu verstärken oder abzuschwächen. Wenn die Regler
die Farbabstimmung zu global beeinflussen, lassen sich im RGB-EQ insgesamt bis zu 17
Regeler für einzelne Helligkeitsbereiche einblenden, um die Einstellungen für
gewisse Bereiche gezielter vorzunehmen.
Zur Kontrolle sollten immer graue Flächen (Wände) beachtet werden. Auf ihnen
sollen keine helligkeitsabhängigen Farbtönungen erscheinen.
Stimmt die Farbabstimmung, kann das Bild für gezielte Helligkeitsbereiche
nachgeschärft oder geglättet werden.
Hier ist es sinnvoll, die ganz dunklen und ganz hellen Bereiche sogar etwas weichzuzeichnen,
da diese meist hart und stufig aussehen. Für dunkelgraue Werte kann man das Bild
aber nachschärfen, da dort noch die meisten Details erhalten sind.
Mit dieser Einstellung kommen im bearbeiteten Bild deutlich mehr Details zum Tragen,
und das Rauschen verstärkt sich kaum.
Abbildung: Helligkeitsabhängige Schärfeeinstellung im RGB-EQ
Ein hinunterskalieren des Bildes sollte erst nach dieser Schärfung erfolgen,
damit Eigenarten der Interpolation nicht auch nachgeschärft werden.
Wenn das Filmbild sehr unscharf ist, wirken nach der temporalen Filterung
die Hauttöne in Gesichtern manchmal sprunghaft und flächig.
In diesem Fall ist es sinnvoll, vor dem Temporal Smoother das Signal leicht zu schärfen,
damit der Rauschfilter mehr Details findet (MSU smart sharpen: small overall).
Abbildung: Eine Beispiel-Filterkette zum Restaurieren alter Filme (rotstichig, harte Kontraste)
Filterkette runterladen (falls es Versionskonflikte mit deinen Plugins gibt, kannst du diese Datei in einem Texteditor anpassen).
Screenshots eines Beispielfilmes vor und nach der Farbverbesserung
Hinweis: Ein teures Profitool für die Farbbearbeitung ist Color Finesse.
Defekte Zwischenbilder errechnen.
Wie im Test dargestellt, füllt der Grabber bei Störungen des Eingangssignals die Lücke im Datenstrom mit Kopien des letzten korrekt erfassten Bildes. Bei Aufzeichnung von VHS passiert dies öfter – durch gestörten Bandlauf oder wegen Knitter im Band. Diese Ersatzframes lassen mit der Avisynth Funktion YDifferenceFromPrevious oder dem Avisynth Plugin MultiDecimate finden, da es identische Kopien ihrer Vorgängers sind. Man kann also damit alle Stellen auch nachträglich genau lokalisieren, in denen das Eingangssignal gestört war.
Duplizierte Füllbilder werden bei Bildaussetzern automatisch erzeugt
Im Postprocessing sollten diese Stellen im Film nachträglich durch automatisch errechnete Zwischenbilder aus dem letzten gültigen und dem nächsten gültigen Bild ersetzt werden. Diese Aufgabe ist nicht ganz trivial, da bis zu 7 Bilder durch eine Bewegungsfolge zu ersetzen wären. Eine fertige Lösung findest du auf der Avisynth-Unterseite.
Fortgeschrittene Filterung
Mit den hier dargestellten Filtern sind wir weitesgehend am Ende der Möglichkeiten von Virtualdub angelangt.
Der nächste Quantensprung im Filtern ergibt sich, wenn man sich zusätzlich in Avisynth einarbeitet. Avisynth ist eine hoch entwickelte Scriptingsprache zur Video-Bearbeitung. Für Avisynth gibt es einige sehr leistungsfähige Filter, die in Virtualdub nicht verfügbar sind. Auch Virtualdub Filter lassen sich in Avisynth einbinden.
Avisynth kann auch Virtualdub mit dem bearbeiten Video beliefern, so dass dieses zusätzlich in der vertrauen Umgebung von Virtualdub weiterbearbeitet und als Video gerendert werden kann.
Ein zweiter Schritt wäre, in Videos einzelne Szenen unterschiedlich nachzubarbeiten. Für gegrabbte VHS-Videos wird das kaum sinnvoll sein.
Den Film neu rendern
Wenn alle Filter eingestellt sind, kannst du den Film neu rendern. Da ich oft noch den Ton nachbearbeiten will, und da das endgültige Rendern sehr lange dauern kann, speichere ich manchmal zunächst in einem Zwischenformat. Dafür verwende ich den PicVideo Codec mit Qualität = 19. Wenn du das Bild auf 384p verkleinerst, hat die erzeugte Datei ungefähr die halbe Größe deines ursprünglichen Videos (ca. 4.5 GB je Stunde).
Warnung: Falls du die Grauwerte auf 0…255 gestreckt hast (PC levels), musst du zum endgültigen Rendern das Video wieder mit dem PicVideo Codec in Virtualdub öffnen, oder du solltest jetzt mit einem anderen Codec rendern.
Es gibt Probleme bei einigen MJPEG Dekodern.
Leider gibt es zwei verschiedene Definitionen der Luminanz Level, wie sie in Videos verwendet werden.
Bei Analogvideo liegen die Grauwerte in einem Bereich von 16…234 (TV Levels). Digitales Video nutzt hingegen den vollen Bereich 0…255 (PC Levels). Wenn man ein (digitalisiertes) Analogvideo auf einem Computermonitor anzeigt, sollten seine Helligkeitswerte von 16…234 auf 0…255 gestreckt werden, um einen guten Bildkontrast zu erhalten.
Der originale Microsoft Codec hat Helligkeitspegel im Bereich 16…234 gespeichert.
Einige MJPEG Decoder skalieren deshalb diesen Bereich immer nach 0…255, selbst wenn die Pegel in der Datei bereits als PC levels vorliegen. Dann saufen dunkle Flächen im Schwarz ab und helle Flächen werden weiß überstrahlt.
Avidemux erkennt PC levels in MJPEG Videos nicht. Es wirft Helligkeitswerte unter 16 und über 235 weg. Wenn du die Datei dann mit Avidemux neu codierst und speicherst, gehen diese Details für immer verloren.
Wenn du das Video mit Virtualdub (und dem PicVideo codec) öffnest, wird es hingegen korrekt verarbeitet.
Mehr zu diesem Problem Doom9.org:How to correct luminance levels
Zum testen: MJPEG grey pattern test clips mit PC levels (0-255) und TV levels (16-234).
Mit aktiver Option "Encode normalized YUV" setzt der PicVideo v.3 MJPEG Encoder einen Marker namens APP1 in jedes Bild, der dem Decoder bei der Wiedergabe sagt, dass auf dieses Bild keine Helligkeitskonvertierung angewendet werden darf.
Andere MJPEG Dekoder haben solche Einstellmöglichkeiten nicht. Wenn du Pech hast, dehnen sie automatisch TV levels auf PC levels ohne zu fragen.
Das endgültige Rendern von Bild und Ton führe ich später durch.
Falls du einen Versatz zwischen Bild und Ton hattest und die Audio-Spur korrigiert hast, musst du Virtualdub anweisen, statt der Audiospur im Film die von dir erzeugte korrigierte Audiospur zu verwenden:
Virtualdub > Audio > Audio from other file... : Dann die von dir korrigierte Audiospur auswählen.
Testweise solltest du mit dem Play Button verschiedene Stellen deines Filmes anspielen, um zu überprüfen ob die korrigierte Audio-Spur mit dem Bild synchron läuft. Ist alles okay, kannst du nun das Video neu rendern.
Virtualdub > File > Save as AVI...
Was danach passiert
Zum endgültigen Encoden verwende ich Virtualdub oder Avidemux.
Es ist manchmal günstig, das Video später in einen MKV-Container zu
packen, statt in einen AVI-Container. In MKV kannst du unter anderem Kapitelmarken
definieren.
Die höchste Kompression erreichst du mit dem X.264 Codec. Für DivX-fähige DVD Player ist Xvid als Codec geeignet.
Bei den digitalisierten VHS-Videos verwende ich folgende Einstellungen:
Video:
Codec: X.264 mit einem Quantizer von Q=22 oder
bei stark gestörten Videos Xvid mit Q=4 und als Quantisierungsmatrix MPEG auswählen
Filter: Mplay hqdn3d Rauschfilter mit der Einstellung: 0-2-6 (falls Avidemux verwendet wird)
Audio:
MP3, 192 kBits oder weniger, 44,1 kHz
Format
AVI Container oder MKV-Container
Genauer stehts unter VHS endgültig rendern.
Links
- Virtual dub filters index (englisch) Liste der Virtual-Dub Filter mit Kurzbeschreibung und Downloads, passend auch zum Video Enhancer
- Doom9.net: Postprocessing video using VirtualDub – Englische Anleitung zur Nachbearbeitung, mit Schwerpunkt auf NTSC Chroma Fehlern
- Vdub Filter von Donald Graft (German)
- Hawk's Captureanleitung (Deutsch) – Anleitung zum Grabben und filtern von VHS
- Freie Test patterns Testbild-DVD (französisch, als ISO-Datei)