privhp.jpg (7910 Byte)

Mit dem DeShaker HD-Videos entwackeln

Autor.gif (7348 Byte)

Immer wieder produzieren wir verwackelte/verzitterte Aufnahmen trotz aller Mühe und trotz EIS/OIS an der Kamera die genau das eigentlich verhindern sollten laut Werbung der Kamerahersteller. Genau aber diese Aufnahmen benötigen wir für unsere Video-Story und hier hilft der kostenlose Filter DeShaker von Gunnar Thalin. Selbst größere Verwacklungen und Zitterbewegungen werden "festbetoniert" - das Video sieht dann aus wie eine Stativaufnahme - mit entsprechenden Einstellungen. Dieser Filter ist entwickelt worden für die Verwendung in VirtualDub. Ich habe mich nachfolgend mit dem Einsatz dieses Filters in VirtualDub beschäftigt.

 I Videostabilisierung I Rolling Shutter Effeckt entfernen I Deshaker V3 I

A. Videostabilisierung mit VirtualDub und Deshaker

In machen NLE's arbeitet der Frameserver nicht, z.B. in EDIUS.

In diesem Fall kann man das Videoschnittprogramm VirtualDub einsetzen, jedoch nur wenn Clips im AVI-Format vorhanden sind. Man kann in diesem Fall also keine verlustlose Frame-Übergabe per Frameserver machen. Clips in MPEG2-HD* oder AVCHD-Komprimierung müssen erst in AVI konvertiert werden, z.B. HQ-AVI. Damit bekommt man nur eine geringe Bildqualitätveränderung**.

* Für MPEG2-Videos gibt es von fccHandler eine erweiterte Version von VirtualDub, mit der man auch MPEG-2-Dateien einlesen kann. Das Programm gibt es hier

** VIDEOAKTIV DIGITAL 5/2007 hat auf Seite 80-83 die Konvertierung eines MPEG2-HD Files vom Camcorder HDR-HC3 untersucht und festgestellt, dass die Meßpunkte welche der Canopus HQ-Codec produziert im Promillebereich vom Original abweichen. Die Meßpunkte fielen sogar minimal besser aus als beim Original. Der Codec bewirkt aber eine leichte Kantenaufsteilung(Nachschärfung), die sicherstellen soll, dass das Material auch nach der Videobearbeitung nicht schlechter aussieht als das Original.

Aus den NLE-Programmen die ohne Frameserver arbeiten kann man eine für das normale VirtualDub lesbare Datei erstellen, z.B. mit folgenden Codec:

Für die Komprimierung können verschiedene Codec eingesetzt werden, z.B.:

Huffyuv (kostenlos im Internet)
Canopus HQ-Codec (kostenpflichtig, gibt es nur zusammen mit Canopus EDIUS)
Canopus Lossless-Codec (wie vor)
PICVideoM-JPEG 3 (kostenpflichtig)
Lagarith-Codec (kostenlos im Internet)

Nachfolgend gehe ich also davon aus, dass eine AVI-Datei zum Entwackeln verfügbar ist.

Man benötigt nun folgende Dateien/Programme:

Deshaker.vdf
VirtualDub
(ich benutze die deutschsprachige Version!)

Zunächst installiert man VirtualDub und man läßt dafür eine Schaltsymbol-Verknüpfung auf dem Desktop anlegen. Jetzt kopiert man die Datei Deshaker.vdf in das Plugin-Verzeichnis von VirtualDub.

Wir starten nun VirtualDub mit der Schaltfläche vom Desktop aus...

  1. Mit der Tastenkombination Strg + O laden wir den vorbereiteten Wackelclip in VirtualDub

  2. Wenn wir an dem Timeline-Schieber in VD etwas ruckeln wird der Clip sichtbar. Mit rechter Maustaste klicken wir auf das Videofenster und machen es soviel kleiner, dass zwei solche Fenster nebeneinander passen. das rechte Videofenster stellen wir auf identische Größe ein.

  3. Jetzt klicken wir auf der Menüleiste auf Video/Filter. Es geht ein Fenster auf und dort klicken wir auf den Schalter "Hinzufügen". Jetzt werden sämtliche Filter angeboten, wir wählen den Deshaker aus und klicken auf OK. Es geht jetzt das Einstellfenster des Deshakers auf:

Jetzt geht es zur Parametereinstellung. Viele Leute haben sich bereits mit der Wahl der besten Parameter beschäftigt, wobei es eigentlich keine optimale Einstellung gibt, weil das Videomaterial unterschiedliche Eigenschaften haben kann. Per Google findet man verschiedene Vorschläge.

Für das folgende HDV-Testvideo habe ich diese Parameter im Deshaker V2.0 verwendet, zwischenzeitlich arbeite ich mit der Version 2.2.

Bereich Pass 1&2:

Haken gesetzt bei: Camcorder has a rolling shutter für HDR-HC3 mit CMOS-Chip!

Bereich Pass 1:

Bereich Pass 2:

Die Einstellungen kann man speichern mit der Tastenkombination Strg + S. Mit Strg + L kann man die Settings für den Deshaker erneut laden.

Wir beginnen nun mit der Realisierung der Bildberuhigung wie folgt:

  1. Per Video/Filter/Deshaker klicken wir auf Pass 1 und dann auf OK. Wir stellen den Timeline-Scrubber ganz nach links und starten  VirtualDub mit der Tate "Enter". Der Clip wird analysiert und die Daten werden in der Datei Deshaker.log gespeichert.



    Für die Analyse im Pass 1 fällt ordentlich Zeit an, bei meinem PC mit dem Intel Prozessor Q6600 und OC auf 4x3GHz fällt ein Zeitaufwand von 2 Minuten pro Sekunde Video an.

  2. Per Video/Filter/Deshaker klicken wir auf Pass 2 und dann auf OK. In VD stellen wir den Scrubber erneut ganz nach links und starten VD erneut mit "Enter". Die Berechnung läuft jetzt recht schnell durch.

  3. Per Taste F5 können wir uns in der Vorschau ansehen was der Deshaker aus dem Wackelclip gemacht hat. Gegebenenfalls  ändern wir die Parameter im Pass 2 um andere Ergebnisse zu bekommen.

  4. Mit der Taste F7 können wir jetzt den entwackelten Clip abspeichern mit einem Namen den wir leicht wiedererkennen. In dem VD-Menü Videokomprimierung können wir angeben mit welchem Codec das Video erstellt werden soll.

    Dateigrößen für den 8 Sekunden Testclip:

    Canopus HQ-Codec = 109 MB
    Canopus Lossless-Codec = 487 MB
    PICVideoM-JPEG 3 VfW
    = 38,6 MB

  5. Ergebnis der Bildberuhigung bei meinem Testclip:

 

Beispiel einer Videoberuhigung...

Die meiste Zeit geht im Pass 1 drauf während der Bewegungsanalyse. Im Pass 2 kann mit verschiedenen Parametern experimentiert werden ohne Wiederholung von Pass 1. 

Im Internet findet man noch viele Tipps, was man so noch tun könnte bei der Parameterwahl bei Pass 2 im Deshaker Einstellmenü. Ich habe einige Punkte nachfolgend zusammengetragen:

  • Je höher die "Motion smoothness", desto stabiler das Bild, aber desto größer die Gefahr, dass der Bildausschnitt dem gewünschten Bild zu träge folgt und sich Ränder bilden

  • Je größer "Max. correction limits", desto mehr darf der Deshaker das Bild hin- und her verschieben

  • Rotation und Zoom sollte man eigentlich unangetastet lassen, außer es kommen solche Bewegungen tatsächlich im Video vorhanden

  • Man sollte bei "Motion smoothness" mit 4000 und Vertikal und bei "Max. correction limits" mit 100 für Horizontal und Vertical beginnen und ab da mit anderen Werten spielen

  • Bei statischen Motiven, die mit Tele aufgenommen worden sind sollte "Motion smoothness" im Bereich von 10000 bis 50000 für Horizontal und Vertical verwendet werden. So werden auch niederfrequente Kamerabewegungen beruhigt. Soll nur das Handzittern beruhigt aber die Kamerabewegung erhalten bleiben, dann hat sich ein Wert von 1000 bewährt

  • Im Falle von Strandszenen mit 50% Wasser sollte "Max. correction limits" für Rotation und und Zoom auf 0(Null) gestellt werden, sonst könnte der Horizont im Takt der Wellen schwanken

  • Bei der Option "Ignore Image area" kann man Bereiche definieren die nicht für die Bewertung der Bewegung heranzuziehen sind.

  • Bei Reißschwenks wird empfohlen "Motion smoothness" auf 300-500 einzustellen

  • Wenn man die entstehenden schwarzen Ausgleichsränder erst später im NLE  durch Vergrößerung des Videos wegmacht, verliert das Videobild an Bildqualität trotz evtl. Nachschärfung. Besser ist es im 2ten Pass einen "Extra zoom factor" von z.B. 1.1 (je nach Wackelrand den wir zulassen wollen!) einzugeben siehe /7/, dann verliert man kaum an Bildqualität. In diesem Fall muss der Haken bei "Use previous and future Frames to fill in borders" weg.

  • Mit dem Deshaker kann man per Option "Generate "interlaced progressive" video" im 2.Pass aus Interlaced-Video auch Progressive-Video erzeugen.

  • Ein wirkungsvolles Setting hat Harald vom Videotreffpunkt entwickelt, welches ich z.B. zur Beruhigung von Clips mit Erfolg verwendete, die von einem Kamel aus und aus dem Wohnmobil heraus aufgenommen worden sind.

Erfahrungstipp zum "Extra zoom faktor":

Mein Ziel ist es immer bei der Beruhigung von Clips per Deshaker möglichst nur einen geringen Betrag in das Bild einzuzoomen (Extra zoom faktor < 1.1 im Pass2!) um weniger an Original-Bildschärfe zu verlieren. Aus diesem Grund setze ich zunächst den "Extra zoom faktor" = 1 und schaue mir dann an welche Größenordnung die schwarzen Bildränder an besonders verwackelten Stellen annehmen. Oft ist es so, dass man die Clipteile mit größeren schwarzen Rändern garnicht benötigt, ich schneide sie dann einfach weg und passe den  "Extra zoom faktor" der geringer nötigen Hochskalierung an. Für eine evtl. erforderliche Nachschärfung bieten sich je nach Videoschnittprogramm unterschiedliche Filter an.

Beispiel einer Aufnahme aus dem Wohnmobil in Fahrtrichtung:

Die Aufnahme habe ich aus freier Hand mit der Canon HV30 bei aktiviertem OIS gemacht.Solche Aufnahmen mache ich immer etwas länger (10-15 Sekunden), damit ich später daraus ein 5-8 Sekunden dauernde brauchbare Szene extrahieren und beruhigen kann.

Im Bild links war die befahrene Strasse noch recht glatt, der Randsausgleichsbedarf ist für den Deshaker ist hier recht gering, wie man an den recht dünnen schwarzen Linien an der linken und unteren Bildkante erkennen kann. Rechts sind wir mit dem Wohnmobil in ein Schlagloch gefahren, die Bildverschiebung ist sehr groß geworden, vor allem in Vertikalrichtung durch den entstandenen Stoß auf das Fahrzeug. Würde man nun nach der Situation rechts die Aufnahme per Deshaker beruhigen, würde der Bildausschnitt auf den dort eingezeichneten roten Rahmen schrumpfen. Um nun den Clip randlos im Video verwenden zu können, müßte der Bildausschnitt um den "Extra zoom faktor" = 1.75 hochskaliert werden was zu keinem guten Bildergebnis mehr führt weil viel zu weit eingezoomt werden müßte. Ich habe dann den Clip um diese kritische Stelle gekürzt, so dass ich lediglich einen Randausgleich wie im Bild links dargestellt benötigt habe. Der "Extra zoom faktor" lag dann bei 1.06, was lediglich ein etwas weicheres Bild ergab und dieses nach der Beruhigung voll verwendungsfähig war.

Verfügt man bei der Aufnahme über kein Schwebestativ, dann läßt sich eine Aufnahme z.B. beim laufen durch die Markthalle oder einen Kloster-Kreuzgang mit der Kamera trotzdem noch mit dem Deshaker beruhigen und zwar in einer sehr guten Qualität.

Automatisierte Clip-Beruhigung für mehrere Clips durchführen

Mit Hilfe von VirtualDub ist das sehr schön möglich...

  1. Wir stellen die gewünschte Komprimierung für die Ausgabe ein...

  2. Wir laden den ersten Clip in VirtualDub

    - im Deshaker stellen wir Pass 1 ein
    - in VirtualDub wählen wir "als avi speichern (F7)"
    - wir vergeben einen Namen: file 01
    - bei "Aktion zur Liste der Jobs hinzufügen und fortfahren" setzen wir einen Haken

    - im Deshaker stellen wir Pass 2 ein
    - in VirtualDub wählen wir "als avi speichern (F7)"
    - wir vergeben einen Namen: file 01
    - bei "Aktion zur Liste der Jobs hinzufügen und fortfahren" setzen wir einen Haken

  3. Wir laden den zweiten Clip in VirtualDub

    - im Deshaker stellen wir Pass 1 ein
    - in VirtualDub wählen wir "als avi speichern (F7)"
    - wir vergeben einen Namen: file 02
    - bei "Aktion zur Liste der Jobs hinzufügen und fortfahren" setzen wir einen Haken

    - im Deshaker stellen wir Pass 1 ein
    - in VirtualDub wählen wir "als avi speichern (F7)"
    - wir vergeben einen Namen: file 02
    - bei "Aktion zur Liste der Jobs hinzufügen und fortfahren" setzen wir einen Haken

  4. Mit weiteren Clips gehen wir ebenso vor

  5. Nun gehen wir in VitzualDub auf Datei/Job Übersicht (F4)

  6. Wir sehen jetzt die Job-Liste...


  7. Wir klicken in der Job-Liste auf "Starten"...

Man muss jetzt nur noch warten bis alle Jobs abgearbeitet sind...

B. Rolling Shutter Effeckt von CMOS-Kameras mit VirtualDub und Deshaker entfernen

Bekanntlich werden die beiden Halbbilder einer CMOS-Aufnahme zeilenweise zeitversetzt aufgenommen. Eine senkrechte Kante wie ein Lichtmast, Hauskante etc. werden durch die zeitlichte Aufnahmeverschiebung im zusammengesetzten Bild dann von oben nach unten hin schräg verlaufend und nicht senkrecht dargestellt. Siehe auch hier und hier.

Seit dem 15.11.2008 gibt es den Deshaker in der Version 2.4.
Diese Version bietet jetzt die Option der Rolling Shutter Effect von CMOS-Kameras entfernen zu können, siehe hier.

C. Deshaker Version V3

Gunnar Thalin präsentiert seit August 2013 den überarbeiteten Deshaker in einer 32Bit und 64Bit-Version mit vielen Verbesserungen auf seiner Homepage an:

http://www.guthspot.se/video/deshaker.htm

Idealerweise  sollte der Einsatz des 32Bit-Deshakers als Plug-in in der 64Bit-VirtualDub Version 1.9.11 erfolgen. Im Pass 1 wird auf meinem i7-870er PC jetzt für eine Sekunde Video eine Bearbeitungszeit von 8,5 Sekunden vom Rechner benötigt. Kostenlos erzielt man auch in schwierigen Fällen ein sehr gutes Stabilisierundsergebnis, die Anschaffung einer kommerziellen Lösung erübrigt sich damit!

Die Kameradateien übergebe ich an VirtualDub codiert in HQ-AVI, HQX-AVI oder CineForm-AVI, also multirenderingfähig ohne erkennbarer Qualitätsverluste.

Viel Erfolg mit VirtualDub und dem Deshaker! 

 

Linksammlung:

1. Deshaker-Homepage

2. Übersetzung der Anleitung zum Deshaker

3. Anleitung zur Benutzung des Deshakers

4. Laufzeitbiblithek für VirtualDub (falls noch nicht auf dem PC vorhanden und VD somit nicht läuft!)

5. Lagarith-Codec

6. PICVideoM-JPEG 3

7. Beispiel für  die Beruhigung eines DV-Videos

8. Deshaken von interlaced Videos mit Vorschlägen von Scharfis_Brain

9. Dateien mit VirtuaDub splitten

 

Bruno Peter Hennek, 25.07.2007, 22.09.2013