Grundsätzlich sollte ein Filter zum Entfernen von Logos so früh wie möglich eingesetzt werden. Jeder Filter (mit Ausnahme von Deinterlacern), der vorher eingesetzt wird, verschlechtert das Ergebnis. Ausserdem ist die einhellige Meinung im Doom9-Forum, dass kein Filter Sinn macht, wenn nicht mit Huffyuv oder MJPEG mit Qualitätsstufe 18 oder mehr aufgenommen wurde.
In VirtualDub muss der Filter direkt nach dem Deinterlacer eingefügt werden. Ruft die Funktion Video > Filters > Add auf und wählt einen der drei oben erwähnten Filter. Im nun erscheinenden Fenster legt Ihr die Position und die Größe des Logos fest. Dies ist mehr oder weniger Ausprobiererei. Besser Ergebnisse erzielt Ihr, wenn Ihr einen Screenshot von einem oder mehreren Frames macht und diese in ein vernünftiges Grafikprogramm einlest. Dort könnt Ihr die Koordinaten besser ermitteln. Für die Feineinstellungen müsst Ihr trotzdem das Vorschau-Fenster des Filters verwenden! Einige wichtige Punkte:
Import("e:\dekafka.avsi")
Beachtet, dass dieser Filter das Video und die Maskierungsdatei in RGB32 konvertiert, da dies das einzige Format mit einem Alphakanal ist (zumindest bis AviSynth 2.52). Das Logo sollte nach dem Deinterlacing entfernt werden. Im folgenden Beispiel wird das Logo noch vor dem Resize entfernt. Wenn es nach dem Resize entfernt werden soll, muss die Maskierungsdatei nach dem resize erstellt werden.
Erzeugung der Maskierungsdatei
Nach dem Deinterlacing sieht Eurer Script z.B. so aus:
he following:
Import("e:\dekafka.avsi")
AviSource("d:\capture.avi")
Trim(begin, end)
Telecide()
Öffnet dieses Script in VirtualDubMod, und wählt aus dem Menü "Video" die Funktion "copy source frame to clipboard". Wählt dazu ein Frame, in dem das Logo deutlich sichtbar ist. Importiert dieses Frame in ein Grafikprogramm. Dort schneidet Ihr das Logo so aus, dass es noch an allen Seiten von mindestens vier Pixeln des Videos umgeben ist:
Ergebnis:
Färbt das Logo weiß, inklusive ein Pixel des umgebenden Videos, und den Rest schwarz:
Jetzt habt Ihr zwei Möglichkeiten: Erstellt einen AVI-Film daraus (möglich z.B. mit Corel Photo-Paint) oder speichert die Maske als BMP/JPEG/PNG-Datei. Öffnet den Script-Editor von VirtualDubMod (Strg-E) und ladet Eure Maske:
1) Wenn Ihr einen AVI-Film Eurer Maske erstellt habt, sieht das Script z.B. so aus (der Loop-Filter dient dazu, das Masken-Video genau so lang zu machen, wie das Video):
Import("e:\pdwork\dekafka.avsi")
clip = AviSource("e:\pdwork\DO-Heaven.avi")
clip = Telecide(clip)
maskclip = AviSource("e:\pdwork\mask.avi")
Loop(maskclip, Framecount(clip))
2) Wenn Ihr eine Bilddatei Eurer Maske erstellt habt, sieht das Script z.B. so aus (hier wird ImageReader benutzt, um die Bilddatei zu laden, bei AviSynth 2.0x muss das Plugin "ImageWriter" geladen werden). Der Loop-Filter dient dazu, das Masken-Video genau so lang zu machen, wie das Video):
Import("e:\pdwork\dekafka.avsi")
clip = AviSource("e:\pdwork\DO-Heaven.avi")
clip = Telecide(clip)
maskclip = ImageReader("e:\pdwork\mask.jpg", 0, 0)
maskclip = FlipVertical(maskclip)
# nötig, wenn DevIL die Bilddatei lädt, anstelle des AviSynth-internen BMP-Parsers
Loop(maskclip, Framecount(clip))
Einrichten von DeKafka im AviSynth Script
Als nächstes fügen wir den DeKafka-Filter hinzu. Syntax:
dekafka(clip clip, clip maskclip, int Xstart, int Ystart, int X, int Y, int Amount)
(Xstart, Ystart) bilden die linke Ecke der Maske. Die X-Achse verläuft von links nach rechts, die Y-Achse von oben nach unten. "X" ist die Breite und "Y" die Höhe der Maske. "Amount" bestimmt den Vermischungsgrad zwischen Maske und Video (mit amount=0 sieht man nur das Video, mit amount=256 sieht man nur die Maske, alle Werte dazwischen vermischen Video und Maske). Fangt mit amount=128 an. In unserem Beispiel ist das Logo in der rechten oberen Ecke (Xstart, Ystart) = (500, 2):
Import("e:\pdwork\dekafka.avsi")
clip = AviSource("e:\pdwork\DO-Heaven.avi")
clip = Telecide(clip)
maskclip = ImageReader("e:\pdwork\mask.jpg", 0, 0)
maskclip = FlipVertical(maskclip)
#nötig, wenn DevIL die Bilddatei lädt, anstelle des AviSynth-internen BMP-Parsers
maskclip = Loop(maskclip, Framecount(clip))
dekafka(clip, maskclip, 500, 2, maskclip.width, maskclip.height,
256)
Scrollt langsam durch das Video, bis Ihr das Maskierungslogo seht:
Wenn Ihr es gefunden habt, ändert die Position (Xstart, Ystart), bis die Positionen von Maske und Logo übereinstimmen:
Import("e:\pdwork\dekafka.avsi")
clip = AviSource("e:\pdwork\DO-Heaven.AVI")
clip = Telecide(clip)
maskclip = ImageReader("e:\pdwork\mask.jpg", 0, 0)
maskclip = FlipVertical(maskclip)
# This is necessary when DevIL is reading the picture instead of AviSynth
internal BMP-parser.
maskclip = Loop(maskclip, Framecount(clip))
dekafka(clip, maskclip, 550, 48, maskclip.width, maskclip.height,
256)
Zum Schluß könnt Ihr den Wert für "Amount" verändern, um das Ergebnis zu verbessern (wenn das Logo wie in unserem Beispiel weiß ist, belasst es bei 256).
Folgende Punkte müssen im AviSynth-Script eingerichtet werden:
LoadPlugin("c:\yourplugindir\xlogo.dll")
Nach dem Deinterlacing:
Xlogo(Clip, filename, X, Y, ALPHA, T1, T2, T3, B1, B2, B3, WHITE,
SIDE, SCENE, FEATHER, NOISE)
So könnte ein vollständiger Xlogo-Aufruf aussehen:
AviSource("e:\pdwork\atomic.avi")
Telecide() # or some other deinterlace method
Xlogo("e:\guides\000000.bmp", 530, 38, 0) # Xlogo konvertiert
intern nach RGB32
| Filter | Homepage | VDub Download | AviSynth Download | Dokumentation |
| Logoaway | home | VDub dl | n/a | Doc |
| Delogo | home | VDub dl | n/a | Doc |
| Xlogo | home | VDub dl | dll | Doc (Vdub only) |
Hier einige Beiträge aus Diskussionsforen:
doom9.org
forum discussion 1
doom9.org
forum discussion 2
doom9.org
forum discussion 3
Zurück zum Anfang: <HOME>
Last edited on: 09/07/2003 | First release: n/a | Authors: SteVe (killingspree) & Wilbert | Translated by zisoft | Content by doom9.org