VHS Video filtern in Virtualdub

Tipps zur digitalen Nachbearbeitung von gegrabbtem VHS-Video in Virtualdub.
Die Nachbearbeitung ist nötig, um ein gutes Bild zu erhalten,
und damit das Video hinterher wirksam komprimiert werden kann.

Software

Vermeiden von Bildverlusten beim Importieren (Dropped Frames)

Typische Filterkaskade und Standardfilter

Filterkette für Zeichentrickfilme (Cartoons, Anime)

Filterkette für blasse, verblichene Filme mit Farbverlusten

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:

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.

Symbolbild Bildaussetzer bei grabbing von VHS video
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:

  1. VirtualDup2: Einlesen des geggrabbten Videos (MJPEG) ––> Speichern als Lagarith [ ] Null frames deaktiviert
  2. 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.
  3. Öffnen dieses Videos (Xvid interlaced) in Avisynth.
    Deinterlacing und Filtern in Avisynth

Diese vereinfachte Variante sollte auch funktionieren (nicht ausprobiert):

  1. 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.
  2. Öffnen dieses Videos (Xvid interlaced) in Avisynth.
    Deinterlacing und Filtern in Avisynth

Xvid settings for interlaced source  Lagarith settings without NULL frames
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.

Virtualdub filter chain for VHS
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.

vor und nach Deinterlacing
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:

  1. Wurde wirksam deinterlaced? Wie sieht das Bild aus?
  2. Bleibt die Feinzeichnung erhalten, beispielsweise Muster und Falten in Kleidung oder Details in Gesichtern?
  3. 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)

Deinterlace area based adjustments
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

correction of VHS chroma shift

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.

Flaxen VHS filter for chroma delay
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 at a TV
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

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 configuration for low quality VHS
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.

Levels adjust black value
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.

Improve color saturation
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 color enhance
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)

cartoon correction in virtual dub

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.

Virtualdub filter chain for VHS cartoons
Abbildung: Meine Filterkette für gegrabbte VHS Zeichentrickfilme

Filterkette für blasse, verblichene Filme mit Farbverlusten

faded film and color correction in virtual dub

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.

Gradation value setting for old film on VHS Gradation saturation setting for old film on VHS
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.

Restfarben verblichener Filme
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.

RGB-EQ sharpness setting for old film on VHS
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).

Virtualdub filter chain for faded old film from VHS
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.

Vom Grabber erzeugte Füllbilder bei Bildstörungen
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