Entfernen von Regenbogen-Effekten und Flimmern

1. Einleitung

Regenbogen-Effekte entstehen durch unzureichende Trennung von Luma (Helligkeit) und Chroma (Farbe) des Video (-composite) Signals. Dieser Effekt wird Farbübersprechen genannt und tritt am deutlichsten bei computergenerierten Bildteilen wie Untertiteln, Wetterkarten und Senderlogos auf. Wo immer Kanten im Luma-Signal (=hohe Frequenzen) auftreten, entstehen Regenbogen-Effekte, auch wenn sie nur schwach sind. Flimmern tritt dagegen bei hohen Unterschieden im Chroma-Signal auf (typischerweise bei Senderlogos). Folgende Bilder als Beispiel:

In diesem Bild gibt es zwei Arten von Farbstörungen. Die erste eine helle Färbung um den Buchtext und um die Zeiteinblendung (Farbstörungen um Kanten). Dies sind typische Regenbogen-Effekte. Die zweite Störung sind die hässlichen horizontalen rot-gelben Linien in der Haut. Obwohl auch dies Farbstörungen sind (Ursache unbekannt), ist dies kein Regenbogen-Effekt. Im Folgenden werden wir versuchen, diese Störungen mit AviSynth-Filtern zu beseitigen.

Dies ist ein typisches Beispiel für Flimmern. In dem Beispielbild ist natürlich keine Bewegung enthalten, der Effekt ist nur in einem Video deutlich. Mir ist kein AviSynth-Filter bekannt, mit dem man dieses Flimmern beseitigen kann. Mit dem Plugin GuavaComb kann man Flimmern in statischen Szenen entfernen (basiert auf zeitlichen Informationen).

Zunächst einige technische Erläuterungen (wer sich nicht dafür interessiert, kann zum nächsten Kapitel springen):
Das PAL-System benutzt das YUV-Format (NTSC: YIQ), dabei steht "Y" für die Luma-Komponente (Helligkeit) und "UV"/"IQ" für die Chroma-Komponente (Farbe) (auch "C"-Kompontente genannt). Ob Regenbogeneffekte oder Flimmern auftritt, hängt vom verwendeten Video-Signalformat ab:

PAL und NTSC sollten zur Beseitigung von Regenbogen-Effekten unterschiedlich behandelt werden (ohne weitere Erklärung).

Weiterführende Referenzen:
TV Comb Filters: Allgemeine Vorstellung von Kammfiltern.
Video Color Resolution: Gegenüberstellende Erläuterung von IQ und UV.
Charles Poyton's ColorFAQ: Color FAQ inkl. Konvertierungsregeln zwischen IQ und UV (Seite 17).
Bt868/Bt869 digital video encoders: Auf Seite 17 befindet sich das Datenblatt 100119a.pdf, das die Y/C-Trennung und Chroma-Demodulation für Karten mit dem Bt868/9-Chip behandelt.
Composite, S-video and Component signals: Erläuterungen zu den verschiedenen Video-Signalformaten.

2. AviSynth v2.0x / AviSynth v2.5x / GordianKnot

Zum Zeitpunkt der Erstellung dieses Dokumentes gibt es nur einen guten Filter gegen Regenbogen-Effekte: GuavaComb. Leider funktioniert er nur bei statischen (bewegungslosen) Szenen.

Werfen wir noch einen Blick auf das erste Bild. Das folgende Script wurde benutzt:

LoadPlugin("c:\Program Files\AviSynth2_temp\plugins\guavacomb.dll")
Import("e:\Guides\AnalogCaptureGuide\Rainbow\mfRainbow.avs")

AviSource("e:\Guides\AnalogCaptureGuide\Rainbow\xvid.avi")
ConvertToYUY2(interlaced=true)
GuavaComb(Mode = "PAL", Recall = 83, MaxVariation = 25, Activation = 40)  # requires YUY2
ComplementParity()  # deinterlacing process
FieldDeinterlace(full=false, threshold=15, dthreshold=9, blend=false)  # deinterlacing process
ConvertToYV12()
mfRainbow()  # erfordert YV12

Hier ist das Ergebnis:

Die hässlichen horizontalen rot-gelben Linien wurden durch den mfRainbow-Filter vollständig entfernt. Dieser Filter liefert bessere Ergebnisse als andere Plugins, die auf die Chroma-Komponente einwirken (wie Cnr2 oder SmoothUV). Der Regenbogen an der Uhrzeit-Einblendung wurde durch GuavaComb entfernt. Der Regenbogen im Buchtext ist immer noch vorhanden, dies kann durch den Subtract-Filter überprüft werden. Das Entfernen von Regenbögen und Flimmern sollte vor dem Deinterlacen geschehen, da ansonsten die Interlace-Strukturen zerstört werden.

Wir schauen uns ein anderes Beispiel an:

Mit dem folgenden Script wurden die Regenbögen reduziert:

LoadPlugin("C:\Program Files\AviSynth2_temp\plugins\guavacomb.dll")
AviSource("e:\Guides\AnalogCaptureGuide\Rainbow\devils_advocate_pal_2.avi")
GuavaComb(Mode = "PAL", Recall = 75, MaxVariation = 25, Activation = 40)

Hier das Ergebnis (der Wert für Recall wurde etwas verringert, damit wird festgelegt, wie weit Guava zeitlich zurückgeht um zu entscheiden, ob wirklich ein Flimmern vorliegt):

In diesem Beispiel verschwanden die Regenbögen ab Frame 17 (das Bild oben ist Frame 21).

Weiterführende Referenzen:
mfRainbow Script: auf avisynth.org. Es benutzt die externen Plugins Deen, MaskTools und MSmooth.


Zurück zur Nachbearbeitung mit AviSynth: <BACK>

Zurück zum Anfang: <HOME>


Last edited on: 09/18/2003 | First release: n/a | Author:Wilbert | Translated by zisoft | Content by Doom9.de | Partner Gleitz.de