*offizielles deutsches flaskmpeg & dvdtoogm board*
Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen FlaskChat Zur Startseite

*offizielles deutsches flaskmpeg & dvdtoogm board* » *faq and tutorials* » Interlacing / Deinterlacing » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Interlacing / Deinterlacing
Beiträge zu diesem Thema Autor Datum
 Interlacing / Deinterlacing empty 29.06.2003 18:46

Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
empty
Super Moderator


Dabei seit: 14.04.2002
Beiträge: 1.879

Interlacing / Deinterlacing Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Infos zu Interlacing
(Achtung, die folgenden Informationen beziehen sich auf pures interlactes PAL-Video. Bestimmte Angaben kann man zwar auch auf NTSC-Material übertragen, allerdings können hierbei noch weitere Besonderheiten (z.B. IVTC) auftreten.)

Was ist Interlacing?

Interlacing wurde ursprünglich entwickelt, um ein flüssiges Fernsehbild bei begrenzter Bandbreite zu erhalten. Hierbei wurde ein Bild (Frame) des Videostroms in zwei Halbbilder (Fields) mit halber vertikaler Auflösung zerlegt. Ein progressives Video mit 25 Frames pro Sekunde (fps) und ein interlaced Video mit 50 Fields pro Sekunde haben zwar die gleiche Datenrate aber eine unterschiedliche temporale Auflösung. Ein Frame beschreibt einen Zeitraum von 40ms, ein Field einen von 20ms. Ein DVD-Video von 1 Sekunde Länge besteht also entweder aus 25 progressiven Frames mit der Auflösung 720 x 576 oder aus 50 Fields mit der Auflösung 720 x 288.

Warum habe ich so komische Streifen im Bild?

Zwei der eben beschriebenen Fields werden zeilenweise ineinander verschachtelt um einen Frame zu erhalten. Ein Field, dass sogenannte Topfield, wird auf die Zeilen 0,2,4... aufgeteilt, das Bottomfield erhält demzufolge die Zeilen 1,3,5... .Weil nun aber die Halbbilder zu unterschiedlichen Zeitpunkten gehören, sind bewegte Bildteile mit einem kammartigen Muster versehen. Folgende Bilder sollen dies verdeutlichen:

Field 1


Field 2


Frame


Wie man deutlich erkennen kann, treten die Artefakte nur an bewegten Stellen auf, der statische Hintergrund ist nicht betroffen. Im zweiten Field dieses Frames ist der Fuss schon ein Stückchen weiter als im ersten (sehr schön am Abstand der Füße zueinander zu sehen). Im Frame aus diesen beiden Fields sieht man daher die "Interlacing-Streifen".

Wie kriege ich die Streifen weg?

Es ist nicht ohne Verluste möglich, ein interlactes Video in ein gleichartiges progressives umzuwandeln. Befriedigende Ergebnisse erhält man meist schon durch eine Deinterlacer-Einstellung in seinem bevorzugten Konvertierungsprogramm. Höherwertige Lösungen erfordern etwas mehr Mühe, bieten dafür aber auch eine bessere Qualität. Ich möchte hier nur noch auf meine favorisierte Lösung "adaptives Deinterlacing" näher eingehen, denn sie bietet nach vielfälter Ansicht das beste Verhältnis zwischen Bild-Qualität und Dateigröße.

Adaptives Deinterlacing mithilfe von Avisynth:

Zuerst erstellen wir uns ein gültiges Avisynth-Script, welches beispielsweise so aussehen könnte:

LoadPlugin("C:\Video\Avisynth\mpeg2dec3.dll")
mpeg2source("D:\Zapped\Zapped.d2v")

Es ist wichtig die Source-Daten vorerst ungefiltert weiterzureichen, ansonsten sind bestimmte Eigenschaften nur sehr schwer zu erkennen. Mit einem SeparateFields() im Avisynth-Script lassen wir uns die Fields in VDMod anzeigen. Mit den Cursortasten <- und -> (rückwärts und vorwärts) können wir jetzt im Video scrollen. Sind die Bewegungen flüssig oder treten seltsame Sprungeffekte auf? Wenn im Original z.B. ein flüssige Bewegung von rechts nach links zu sehen ist und in VDMod Sprünge à la links, rechts, mehr links, rechts, noch mehr links, rechts auftreten, ist die Fieldabfolge nicht korrekt. Dieser Effekt tritt relativ häufig auf und kann zwei Ursachen haben. Entweder sind die Fields einfach vertauscht oder die Parität ist falsch. Die Parität beschreibt die Reihenfolge in welcher die Fields angezeigt werden sollen. Hierbei ist "Topfield first (tff)" oder "Bottomfield first (bff)" möglich. Auch wenn es auf den ersten Blick so scheinen mag, Fieldswap und Paritätswechsel sind nicht identisch. Man kann sich das an folgendem Beispiel klar machen:

Nehmen wir an, unser Videostrom ist bff und enthält die zeitlich korrekte Fieldfolge [b0t1],[b2t3],[b4t5],..., dann erhalten wir nach einem Fieldswap die Reihe [b1t0],[b3t2],[b5t4],... während eine Paritätsänderung nach tff in [t1b0],[t3b2],[t5b4],... resultiert. Im Fieldswap-Fall sind hinterher die Fields falsch im Frame zusammmengefügt. Dies macht sich in Zacken bei statischen Elementen bemerkbar. Leider sieht dieser Effekt Interlacing-Artefakten sehr ähnlich. Man muss also sehr genau hinschauen. Ein Beispiel kann man hier sehen:

Verkehrt herum aus Fields zusammengefügter Frame. Die ursprünglich falsche Fieldfolge, aufgrund von falscher Parität, wurde fälschlicherweise mit SwapFields() behandelt.

Der Hintergrund war im Original statisch und zeigt bei falscher Framezusammensetzung starke Artefakte an Kanten. Sehr gut sichtbar an den Scheinwerfern.

Im Falle der veränderten Parität resultiert zwar die selbe Framezusammensetzung, aber die zeitliche Abspielreihenfolge der Fields ist vertauscht. Im oben genannten Beispiel war die korrekte zeitliche Fieldfolge 0,1,2,3,4,5,... . Nach ComplementParity() lautet sie: 1,0,3,2,5,4,... . Wie gesagt bleibt die räumliche Anordnung der Fields (oben und unten) unangetastet, daher haben wir trotzdem einen korrekten Frame:

Korrekter Frame mit falscher Fieldabfolge, aufgrund von falscher Parität. Mit SeparateFields() in VDMod sichtbar und mit ComplementParity() korrigierbar.


Um ein möglichst gutes Deinterlacing zu erreichen sollte der Film eine korrekte Fieldfolge und Parität besitzen. Ein möglicherweise erforderliches Umschalten kann man mit SwapFields() oder ComplementParity() im Avisynth-Script erreichen. Anschließend kann man mit dem Deinterlacer seiner Wahl Interlacing-Artefakte entfernen. Gute Filter funktionieren "intelligent", indem sie versuchen nur die bewegten Bildteile zu bearbeiten und die statischen Bildteile mit voller Auflösung und Schärfe unbehandelt lassen. Ich persönlich benutze gern TomsMoComp, der per
LoadPlugin("C:\Video\Avisynth\TomsMoComp.dll") eingebunden werden kann. Die verschiedenen Parameter sind:
TomsMoComp(Parity,SearchEffort,Vertical Filter)
Parity=1 bedeutet tff, Parity=0 bff.
SearchEffort gibt die Aufwendigkeit der Suche nach Kammartefakten an. Ein guter Wert ist z.B. 5.
Vertical Filter blendet leicht die vertikalen Linien ineinander und verbessert so etwas das Deinterlacing und die Kompressibilität, natürlich leidet dabei etwas die Schärfe. 1 schaltet den Filter ein und 0 lässt ihn aus.
Ein mögliches Avisynth-Script könnte also wie folgt aussehen:

LoadPlugin("C:\Video\Avisynth\mpeg2dec3.dll")
LoadPlugin("C:\Video\Avisynth\TomsMoComp.dll")
mpeg2source("D:\Back To Life\BtL.d2v")
ComplementParity()
TomsMoComp(0,5,1)
crop(8,2,696,572)
LanczosResize(640,480)

Ich bitte darauf zu achten, dass das Deinterlacing vor allen bildbearbeitenden Filtern wie crop(), Smoothern und Resizern zu erfolgen hat. Also sollte die entsprechende Avisynth-Zeile immer vor crop() zu finden sein. Wer unbedingt vorher smoothen möchte, muss die einzelnen Fields bearbeiten, z.B. mit "SeparateFields().FluxSmooth().Weave()" o.ä..

Allgemeine Fragen zu De/Interlacing:

1. Warum sehe ich auf meinem TV keine Interlacing-Artefakte?

Weil ein TV fieldbasiert arbeitet, d.h. er zeigt erst ein Field und dann das andere, dadurch entsteht ein flüssiger Bildeindruck ohne die Kammeffekte. Genau deswegen wurde Interlacing ja auch entwickelt. ;)

2. Ich möchte meine Filme auf dem TV sehen. Muss ich trotzdem deinterlacen?

Nicht unbedingt. Aber man darf die Source nicht horizontal croppen oder resizen, weil dadurch die Interlacing-Struktur zerstört wird. Weiterhin sollte man im Codec den Interlacing-Modus aktivieren, weil dadurch eine bessere Kompressibilität des Films resultiert, da der Codec hierbei einzelne Fields bearbeitet und so eine bessere Prediktion machen kann.

3. Ein Kinofilm wird mit nur 24fps gedreht. Warum wirkt die Bewegung nicht ruckelig?

Zuerst wird hierbei durch eine schnelle Blende jeder Frame doppelt gezeigt. Zum anderen wird eine künstliche Bewegungsunschärfe erzeugt. Durch Kombination beider Effekte erreicht man auch mit weniger fps einen flüssigen Bildeindruck.

4. Mein Software-DVD-Player zeigt mir den Film aber ohne Streifen an. Wie das?

Typische Player (z.B. PowerDVD) machen ein automatisches Deinterlacing beim Abspielen von interlaced Filmen. Aufgrund der starken Prozessorlast wird hierbei allerdings meist kein sehr hochwertiger Deinterlacer verwendet.

5. Ich möchte noch mehr über Interlacing wissen. Wo kann ich etwas dazu finden?

Es gibt sehr viele Seiten, die sich mit diesen und ähnlichen Themen beschäftigen. Sehr gute Anlaufpunkte sind zum Beispiel www.100fps.com, www.lukesvideo.com oder www.doom9.org/ivtc-tut.htm. Allerdings sind alle Sites in englisch.
29.06.2003 18:46 E-Mail an empty senden Beiträge von empty suchen Nehmen Sie empty in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
*offizielles deutsches flaskmpeg & dvdtoogm board* » *faq and tutorials* » Interlacing / Deinterlacing

WBB, entwickelt von WoltLab GmBH