Deinterlacing - Qualitätsverlust mit Virtual Dub?

manesco

Cadet 3rd Year
Registriert
Mai 2012
Beiträge
42
Hallo,

ich war eben dabei, mit Virtual Dub einen Film von VHS auf PC zu überspielen. Dazu habe ich einen Video Grabber benutzt und eine unkomprimierte Aufnahme in Echtzeit erstellen lassen.

Das Ergebnis sieht ganz gut aus - aber ein Deinterlacing-Filter muss nachträglich ran. Als Filter habe ich den "mitgelieferten" von Virtual Dub genommen, Einstellungen "ELA Algorithmus" und "Keep top field, interpolate/discard bottom field" ausgewählt.

Mir ist aufgefallen, dass das "Krisseln" etwas vergrößert dargestellt wird. Kann das sein? Oder ist dies normale Folge vom Deinterlacing? Andere Einstellungen geben leider keine Besserung.

Im Anhang: Links davor, rechts danach.

Danke und VG!
 

Anhänge

  • krisseln.JPG
    krisseln.JPG
    92,9 KB · Aufrufe: 486
Durch die gewählte Deinterlacing-Option wird jeweils die Hälfte aller horizontalen Bildzeilen verworfen und die übrig gebliebenen auf ihre doppelte Höhe interpoliert. Einst feine Bilddetails wie das Rauschen treten dadurch mehr in Erscheinung und die Bildschärfe nimmt ab.

Mehr Infos und Tipps zum Deinterlacing finden sich auf dieser Website.
 
Zuletzt bearbeitet:
Hallo Kausalat,

thx für deine Antwort!
Habe mir die Seite mal durchgelesen und die Anleitung unten befolgt. Das Ergebnis ist wirklich klasse und (jedenfalls gefühlt) besser.
Da die Videodatei "gezittert" hat, als ich sie abgespielt habe, hatte ich in die Example.avs noch "complementparity" hinzugefügt.

Ich würde das Ganze jetzt so wie es ist mit DVD Flick im 4:3-Format direkt ins "DVD-Format" bringen. Wäre dies auch deine Empfehlung für die Weiterverarbeitung?

VG

Hinweis: Ich habe es abweichend von der Anleitung nicht ins DVIX-Format konvertiert, sondern unkomprimiert gelassen (um mögl. die Qualität nicht zu mindern).
 
Ich würde einen bewährten adaptiven Deinterlacer nehmen, der nur die nötigen Stellen behandelt, z.B. Yadif oder TDeint.

Umwandeln, bzw. in eine neue Datei schreiben (intermediate file) muss man i.d.R. aber nicht, weil alles über Avisynth in Echtzeit an die Zielanwendung (Encoder) geleitet werden kann. Hängt aber von deinem Arbeitsablauf ab.

Mit 'unkomprimiert' meinst du hoffentlich Codecs wie 'HuffYUV' (in FFDShow) oder 'Lagarith'. Unkomprimierte Daten benutzt man an sich nicht, weil es ineffizient, verschwenderisch und vor allem nicht den Mythos der Qualitätssteigerung erfüllt. Verlustfreie Kompressoren wie die oben angegebenen sind vergleichbar mit zip und rar. Am Ende kommt das Gleiche raus wie vor der Kompression und es findet kein Generationsverlust statt, egal wie oft man damit rekomprimiert. Und man spart in der Regel so um die 50-60% Prozent HDD Speicher gegenüber 'unkomprimiert' (abhängig vom Material).
ffdshowuiub8.png
 
Zuletzt bearbeitet:
Hallo Uridium,

Ich würde einen bewährten adaptiven Deinterlacer nehmen, der nur die nötigen Stellen behandelt, z.B. Yadif oder TDeint.
Ich hatte das via Virtual Dub mit Yadif probiert. Das Ergebnis war schlechter, im Sinne von einem nicht flüssigen Bild (jedenfalls subjektiv).

Umwandeln, bzw. in eine neue Datei schreiben (intermediate file) muss man i.d.R. aber nicht, weil alles über Avisynth in Echtzeit an die Zielanwendung (Encoder) geleitet werden kann. Hängt aber von deinem Arbeitsablauf ab.
Ich hatte es bisher so gemacht:
1) Video aufnehmen (unkomprimiert und ohne Filter, da ich sonst immer das Gefühl hatte, dass es zu ressourcenlastig war bzw. mehr Frames dahin gingen).
2) Die entstandene .avi-Datei in Virtual Dub einfügen, Audiovorsprung korrigieren und Deinterlacen und dann direkt die Videodatei speichern.
3) DVD Flick und auf DVD.

Mit 'unkomprimiert' meinst du hoffentlich Codecs wie 'HuffYUV' (in FFDShow) oder 'Lagarith'. Unkomprimierte Daten benutzt man an sich nicht, weil es ineffizient, verschwenderisch und vor allem nicht den Mythos der Qualitätssteigerung erfüllt. Verlustfreie Kompressoren wie die oben angegebenen sind vergleichbar mit zip und rar. Am Ende kommt das Gleiche raus wie vor der Kompression und es findet kein Generationsverlust statt, egal wie oft man damit rekomprimiert. Und man spart in der Regel so um die 50-60% Prozent HDD Speicher gegenüber 'unkomprimiert' (abhängig vom Material).
Laut Virtual Dub hatte ich das Ganze wirklich komplett unkomprimiert gespeichert. Ich habe es aber mal mit HuffYUV ausprobiert, freudig festgestellt, dass ich nun nur noch weniger als 30% Größe des Films habe und leider festgestellt, dass die Farbe des Bildes darunter leidet. Vielleicht habe ich etwas falsch eingestellt - habe aber viel ausprobiert. Siehe Anhang (links mit HuffYUV). Aber ansonsten läuft das Video darunter echt flüssig und ansonsten auch sehr zufriedenstellend.
 

Anhänge

  • vergleich-komprimiert.JPG
    vergleich-komprimiert.JPG
    76,1 KB · Aufrufe: 450
Welche Aufnahmeeinstellungen benutzt du denn in VirtualDub?
Beispiel: 720x576 YUY2 25fps
Weniger geeignet wäre RGBxx (statt YUY2).

Dass das eine Bild heller ist, könnte ein Indiz auf RGB Quelle und YUV Aufnahme (HuffYUV) sein. Das wäre dann durchaus falsch, ließe sich aber entsprechend einfach mit den o.g. Einstellungen korrigieren. Auch sollte die neue FFDShow Implementierung von HuffYUV verwendet werden, nicht die ganz alte Version, die im Netz rumschwirrt.

Verbindlich ist das Bild (bzw. dessen Anzeige) in VirtualDub aber keinesfalls. Das kann die Grafikkarte, dessen Treiber oder auch VirtualDub selbst vergeigen. Wie man das korrekt ermittelt, zeige ich dir unten. Generell würde ich VirtualDub nur für die Aufnahme verwenden. Das wahre Flaggschiff der Videobearbeitung ist Avisynth. Jenes übernimmt alle Arbeiten wie Deinterlacen und anderes.

Beispiel:
Korrekte Helligkeit ermitteln

1) Installiere Avisynth und verknüpfe die avs Endung mit dem Notepad/Editor.
2) Erstelle eine txt Datei und ändere die Endung nach avs.
3) Füge folgenden Text ein (und setze dein Video rein):
AviSource("C:\Videos\meinvideo.avi")
Histogram
4) Öffne die avs Datei mit VirtualDub oder einem Videoplayer.

Dort siehst du dann rechts ein Histogramm, das dir die Helligkeitsverteilung des Bildes anzeigt. Die gelben Bereiche sind für YUV (TV-scale, 16..235) nicht zulässig, die Schwarzwerte sollten sich dem Bereich aber so nah wie möglich nähern.

Das obere Bild ist korrekt. Beim unteren Bild liegen die dunklen Töne zu weit vom Schwarzpunkt entfernt. Das Bild wird grau (zu hell).



Wenn du es bis hier hin geschafft hast, ist der Rest ein Klacks und ich schaue morgen nach dem Deinterlacer und gebe dir ein Beispielscript für Avisynth durch.
 
Zuletzt bearbeitet:
Hi Uridium,

mit deinem Skript bezüglich der Helligkeit habe ich etwas länger gebraucht - vergessen, den Codec in der Verwaltung zu aktivieren. Letztendlich habe ich aber bei VirtualDub keinen Unterschied feststellen können. Vermutlich liegt es wirklich am Programm (VLC Player), welches das kodierte Video verfälscht darstellt. Mit Windows Media Player lässt sich das Video (verständlicherweise :D ) nicht abspielen.

Nun wäre ich dir nochmal sehr für deine weiterführende Antwort bezüglich des Deinterlacings dankbar :) .

Grüße
 
Das Skript (Histogram) ändert das Video nicht. Soll es auch nicht. Es zeigt dir lediglich das Histogram für Analysezwecke rechts an, woran du selbst erkennen sollst, ob der Schwarzwert stimmt oder nicht (wie oben erklärt) Wenn es nicht passt, kann man z.B. mit 'levels' nachhelfen (siehe unten).
Edit: Das Histogram zeigt die echten, verbindlichen Werte an. Die Player können es falsch machen, das Histogram nicht.


Deinterlacen mit Yadif (Yet Another DeInterlacing Filter):
Loadcplugin("C:\Programme\AviSynth 2.5\plugins\yadif.dll")
AviSource("D:\MeinVideo.avi")

#trim(100,0) # Video Ausschneiden (Frame 100-Ende)

#Levels(0, 1, 255, 0, 255)

yadif() # 25fps
#yadif(mode=1) # 50fps (Bob)

Die Yadif.dll musst du in den Avisynth\Plugins Ordner legen (und ggf. den Pfad im Skript anpassen). Die dll bekommst du hier ( ganz unten, nur die dll wird gebraucht).

Die Raute (#) leitet ein Kommentar ein, alles was rechts davon in der Zeile steht wird ignoriert.

Der Yadif mode=1 ist ein 50fps Bob Deinterlacer. Der ist flüssiger, braucht aber später vermutlich mehr Bitrate. Immer nur einen Yadif aktivieren (den anderen auskommentieren).

Mit Levels kannst du die Helligkeit ändern. Es entspricht dem gleichen 'Levels' Filter wie bei VirtualDub. Man kann die Werte übernehmen oder sich manuell rantasten. Histogram ist nützlich.

Trim schneidet das Video, u.a. gut geeignet für Encoder Tests (10sek. Videos) oder wenn man am Anfang/Ende was wegschneiden möchte. Man kann VirtualDub zu Hilfe nehmen, indem man die Framenummern überträgt. Der Trim Befehl lässt sich auch verketten, z.B. Trim(0,100)+Trim(500,600)+Trim(800,0).

Wenn die Player zu schwach sind für das Script, nimm VirtualDub und gehe manuell durch die Frames, um zu schauen, ob alles in Ordnung ist.

Im Startmenü unter Avisynth/AviSynth Documentation/Core Filters findest du weitere Grundbefehle. Die Anleitung gibt es auch auf deutsch (je nachdem welche Version du installiert hast).
 
Zurück
Oben