Deshaker auf Basis der MotionVector-Nutzung von MPEG2/4

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Deshaker auf Basis der MotionVector-Nutzung von MPEG2/4

      Hallo zusammen,

      Deshaker müssen mit viel Rechenpower aus den aufeinander folgenden Frames aufwendig die Bewegung ermitteln. Dazu müssen zunächst Konturen gesucht und deren Bewegung bestimmt werden. Das kostet erhebliche Rechenleistung und auch bei schnellen Systemen viel Zeit. Diese Information ist aber in den MPEG2/4 Frames bereits sogar auf Halbbildbasis in den MotionVectors beim Encoding gespeichert. Wertet man diese Information aus, so kann man mit daraus abgeleiteten zwei Vektoren für die linke obere und rechte untere Ecke die notwendige Verschiebung des Frames zum Entwackeln recht einfach und schnell bestimmen.

      Leider bieten die meisten (mir bekannten) NLEs im Interface zu den Videofiltern keinen Zugriff auf die MPEG Daten mehr. In Vegas könnte man aber ein Script für einen selektierten Clip starten, daß mit einem kleinen Hilfsprogramm diese Korrektur-Vectoren errechnet und diese dann an den Pan/Crop Effekt als Keyframes übergeben. Leider ist die Beschreibung des Zugriffs auf die Videoeffekte über das Script nicht sonderlich einfach zu interpretieren. Also ich habe noch keinen direkten Weg gefunden, wie ich die Parameter der Keyframes für Pan/Crop von dort aus setzten kann.

      Hat da jemand eine Idee? Über diesen Weg würde man ein sehr schnell und mit den guten Möglichkeiten des Vegas Pan/Crop-Filters saubere Deshaker Lösung erstellen können, die auch mit wenig Rechenleistung auskommen würde.
      LG
      Peter
    • Klingt auf jeden Fall nach einer genialen Idee, wenns funktioniert - was ich durchaus glaube!
      :)

      Aber reicht da ein Samstag dafür?
      Lieben Gruß,
      Wolfgang

      Grüne Kommentare sind aus der Admin-Funktion geschrieben
      Der Rest ist meine Privatmeinung
    • Du hast doch dieses WE etwas Zeit, oder?

      Das schon, aber ob mir das Gewackle in der Testphase gut tut ;)


      Aber reicht da ein Samstag dafür?

      Ich würd' zur Not auch noch den Sonntag darnhängen :Zwinkern:
      LG
      Peter

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von elCutty ()

    • Original von Harald
      benötigt man aber noch einiges mehr

      Um mir das Nachlesen zu sparen, kannst du das bitte etwas ausführen?

      Das Hilfsprogramm würde natürlich nach Ermittlung der 2 'Eckvektoren' pro Frame über die Länge des Clips gehen, um zu prüfen, ob da in eine Richtung geschwenkt wird. Man reduziert dabei aber die Daten auf nur 4 Werte pro Frame und kann das dann entsprechend schnell berechnen. Da reicht sogar ein P4 3.2 GHz locker aus ;)
      LG
      Peter
    • Gerne.

      Original von elCutty
      Das Hilfsprogramm würde natürlich nach Ermittlung der 2 'Eckvektoren' pro Frame über die Länge des Clips gehen...

      - Wenn das funktioniert, ist eine wichtige Sache bereits berücksichtigt.

      - Ich benutze den Deshaker (als in diesem Bereich durch den GZ-HD7 Geschädigtem) gerne mit folgenden Pass 2 Parametern:





      - Da man durch das nötige Resampling der Fields bereits etwas Schärfe bzw. Kontrast verliert, verwende ich beim Entwackeln normalerweise kein zusätzliches Umskalieren (Zoom). Dies würde zu weiterem Qualitätsabfall führen.

      - Deshaker kann zum Auffüllen der "fehlenden" Ränder Informationen der Fields aus dem Umfeld verwenden. Solange es nicht zuviel wackelt, funktioniert das sehr gut. In diesem Fall benötigt man dann keine Zoomfunktion.

      - Es gibt auch Anwendungsfälle, in denen Rotationen und unregelmäßige Zoomgeschwindigkeiten beruhigt werden sollen. (In meinem Beispiel sind diese Optionen abgeschaltet.)

      - Deshaker bietet bei Bedarf auch noch einen Ausgleich für einen "rolling shutter", der auf den HC1E abgestimmt ist.

      Deshaker ist sicher mit viel Mühe entstanden und recht ausgereift. Trotzdem wird Deine Idee bei vollständiger Realisierung sehr große Vorteile gegenüber dem Deshaker haben.

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von Harald ()

    • Danke für deine Hinweise. Ja was da im Deshaker für Arbeit und Erfahrung steckt kann ich mir gut vorstellen.

      Das Processing der Bildbewegung möchte ich mit meinem Ansatz ja dem sehr guten Pan/Crop Filter von Vegas überlassen. Wie der mit dem rollig shutter der HC1 umgehen kann habe ich noch nicht getestet. Im ersten Anlauf möchte ich dabei auch auf die Korrektur von Zooms verzichten - ich setzte das persönlich nur sehr selten ein.

      Mein aktuelles Problem liegt im Moment eher darin, wie ich die errechneten Vektoren als Keyframe in das Pan/Crop-Filter bekommen kann. Da komme ich so gar nicht weiter.
      LG
      Peter
    • Die obigen Einstellungen sind nicht diejenigen, die Josef (als Vorreiter) und ich in stundenlanger Arbeit als optimal herausgefunden haben. Da fehlt noch eine ganze Menge zum guten Bild - z.B. sollte man das Zoomen dem Deshaker überlassen, denn Pan&Crop von Vegas erzeugt leider hässliche Kammeffekte mit dem Material - ebenso Adope Premiere CS3. Wir bekamen sie im NLE leider nicht weg. Auch das Hinzurechnen der Bildränder klappt sehr oft nicht optimal.

      Wenn das aber alles allein in Vegas passiert (über Pan & Crop), dann dürfte die Sache freilich anders aussehen.
    • Die oben angegeben Einstellungen habe ich für die speziellen Verwackelungen, die mir mit dem GZ-GD7 OIS passieren, gefunden. Das ist schon ein besonderes Zittern mit recht kleinen Amplituden.

      Ich denke auch nicht mehr, dass es eine optimale Einstellung für alle Fälle gibt. Sicher der Grund für die vielen Schalter.

      Die hier beschriebenen Kammeffekte habe ich noch nicht beobachtet. Vielleicht wackelt der GZ-HD7 bei "normaler" Freihandnutzung dazu nicht genug.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Harald ()

    • Ich denke auch nicht mehr, dass es eine optimale Einstellung für alle Fälle gibt.


      Da hast Du aber sehr Recht damit.
      Es geht nicht nur um mehr oder weniger hochfrequentes Zittern bei Geradeausaufnahmen, sondern auch um Schwenks, Zooms und sogar um Kamerafahrten aus der Hand. Selbst letzteres kannst Du mit dem Deshaker festbetonieren, wenn Du willst.
      +++++++++ Das ist meine Privatmeinung! +++++++++
      +++ FZ300 - RX100 - EDIUS 9.x - DaVinci Res.14 +++
    • Original von Harald
      Die hier beschriebenen Kammeffekte habe ich noch nicht beobachtet.


      Die kannst du bei deinen Einstellungen auch nicht beobachtet haben, denn du umgehst das Problem des Zoomen-Müssens..

      Die Problematik der Bildqualität mit dem Deshaker ist vielschichtig und bedarf näherer Betrachtung. Zuserst müssen wir uns eingestehen, dass bei der Arbeit mit dem Deshaker mehrere Rendergenerationen erzeugt werden.

      1. Ausgabe über den Frameserver und den dort eingebundenen Codec (den man aber selbst bestimmen kann)
      2. Durch Deshaker erzeugtes *.avi-file
      3. Durch die NLE zurück-encodestes *.m2t-file
      4. Gerenderter Gesamt-Film durch die NLE

      Daher ist für die Arbeit mit dem Deshaker ein guter Codec zu wählen. Man kann den Clip entweder als RAW-*.avi erzeugen, das produziert aber eine unglaubliche Datenmenge von über 4,5 GByte für 60 Sek. HDV-Film. Ich habe mich für den kostenlosen HuffYUV entschieden, der ist quasi verlustfrei und komprimiert zumindest auf 50% von RAW. Der Mainconcept DV Codec ist ebenfalls empfehlenswert, ist allerdings nicht kostenlos.

      Im Filter des Deshakers selbst sollte bei bei Bildwandlern in CMOS-Technik (z.B. Sony HC1 bzw. HC3) die Checkbox: Camcorder has a rolling shutter aktiviert werden, das sich ansonsten kissen- und tonnenförmige Verzerrungen ergeben. Selbstverständlich ist auf die genaue Ausgabegröße des Quellmaterials zu achten, die hier gezeigten Einstellungen von 1920 x 1080 mit quadratischen Pixeln gelten nur für die JVC Everio GZ-HD7E (HDD), da diese eine Full-HD Auslösung aufweist. Bei Kameras wie der HC1 oder HC3, die ein anamorphes Pixelverhältnis von 1,333 aufweisen, muß auch dieses sowohl in den Ausgabe-Einstellungen des Frameserver als auch bei den Einstellungen des Deshakers zur Anwendung kommen.



      Die Funktionsweise des Deshaker beruht darauf, dass ein Bild zunächst analysiert und an seinen statischen Punkten „festgemacht“ wid, also soweit hin- und hergeschoben, bis es in seinen Grundelementen ruhig steht. Dafür wackeln nun aber die Bildränder entsprechend, und zwar in Abhängigkeit der errechneten Abweichung von dem ruhenden Bild.

      Harald stellt nun den Deshaker so ein, dass die bei ihm sehr geringen Ränder durch Interpolation in Zukunft liegender Frames abgedeckt werden. Die schwarzen Ränder werden somit durch hinzugerechnete Bilder aufgefüllt. Das klingst erst mal außerordentlich logisch und es funktioniert auch gut. Solange es sich um schmale Ränder handelt. Darüber hinaus weis der Clip ja nicht, wie die in der Zukunft liegenden Frames aussehen. Das umgeht Gunnar Thalin dadurch, dass der Film um die gewählten Anzahl Frames nach hinten, also in die Vergangenheit verschoben wird. Somit laufen Bild und Ton nicht mehr synchron, sondern sind um die Anzahl der gewählten Frames versetzt. Das lässt sich aber später in der NLE sehr gut korrigieren, am Ende fehlen aber eben genau die gewählten Frames. Der Vorteil dieser Methode ist, dass dabei der Filmclip nicht hochskaliert werden muß, um die schwarten Ränder zu eliminieren. Die Auflösung bleibt erhalten.

      Nun gibt es eben Filmsituationen, bei denen die Verwacklungen relativ extrem sind und die man NICHT durch ein Stativ oder einen OIS abfangen kann. In der von Lothar benannten Situation geht es um einen Gleitschirmflug, während dessen er gefilmt hat. Dort kann kein Stativ zur Anwendung kommen, ebenfalls ist die Position innerhalb des Gurzteuges relativ labil und den Eigenbewegungen des Schirmes ausgesetzt. Entwackelt man nun bei derartigen Situationen entstandene Aufnahmen, entstehen entsprechend große schwarze Ränder. Diese können nicht mehr durch die Einstellung der Soft-Border eliminiert werden. Das ist prinzipiell zwar möglich, erzeugt aber deutlich sichtbare Bildelemente, die mit dem eigentlichen Clip nur noch bestenfalls einen farblichen Zusammenhang aufweisen, im Clip selbst aber als extrem unnatürlich und störend empfunden werden.

      Hier bleibt also nur das Hochskalieren des erzeugten deshakten Clips.

      Das hört sich nun sehr trivial an, führt aber nach den ersten Versuchen zu einer totalen Enttäuschung. Der in der NLE hochskalierte Clip sieht relativ unscharf aus, weist bei Schwenks ein deutliches Unschärferuckeln auf und erzeugt teilweise bittere Interlacing-Muster. Die Optionen in der Pass 2 Einstellung des Filters sind nicht hilfreich, das die Ränder nicht komplett beseitigt werden (außer bei der Softborder-Methode).

      Alle im Deshaker durchgeführten Einstellungsoptionen ergeben ein unscharfes Bild. Ich habe praktisch letzte Woche jeden Tag bis nach Mitternacht Clip für Clip erzeugt, um der Sache auf den Grund zu gehen. Ich habe zwar die Ursache dafür nicht gefunden, vermute aber, das es an der Art liegt, wie der Deshaker die Bilder zurück-deinterlaced.. dazu Gunnar Thalin:

      Deshaker can deshake interlaced video, but the resulting video will look slightly softer than for progressive video since the fields of interlaced video are resampled individually and they only have half the vertical resolution of a progressive frame. The resampled fields are then reinterlaced in the output video. There is really no sense in trying to detect non-moving pixels and keep them "un-deinterlaced" since you wouldn't be deshaking video shot on a tripod anyway, and without a tripod the pixels will almost always move slightly. (Deinterlacing with motion estimation in some way might give a better result but I'll probably not try implementing that anytime soon.


      Das so vom Deshaker erzeugte Avi erweist sich als völlig ungeeignet, um in der NLE hochskaliert zu werden.

      Die Lösung habe ich durch systematisches Durchprobieren aller Möglichkeiten gefunden, nachdem ich kurz vor der Aufgabe stand und den Deshaker bereits als weiteres, nettes Tool in dieser Sache beiseite legen wollte.

      Um in der NLE nicht hochskalieren zu müssen, überlässt man dem Deshaker die Aufgabe. Aber nicht in den Optionen des Droplistenfeldes "Fixed Zoom (no borders)" sondern dadurch, dass man den Zoom manuell in das Feld: Extra zoom factor eingibt. Die Einstellung für Edge Compensation muß dabei zwangsläufig auf "None (large borders)" stehen.



      Das so erzeugte Avi wird somit bereits vom Deshaker hochskaliert und eine Skalierung in der NLE fällt weg. Ein derart beruhigter Clip ist vom original-Clip nur noch im direkten Vergleich zu unterscheiden.

      Dies ist aber nur ein, wenn auch äußerst wichtiger, Aspekt im komplexen Zusammenspiel von NLE, Frameserver, Codec, VirtualDub und Deshaker. Es ist angedacht, das vor 2 Jahren von Lothar verfasste Tutorial (erschienen in PC-Video) für diesen speziellen HDV-Bereich zu erweitern, falls zum einen Interesse und zum anderen entsprechende Zeit von mir oder Lothar dafür aufgewendet werden kann.

      Abschließend möchte ich noch betonen, dass ich mich ohne Lothars Initialisierung und Kenntnis wohl nicht dieser komplexen Aufgabestellung gestellt hätte. Als Lohn erhält man aber eine Qualität, an der sich andere, auch teure, kommerzielle Produkte messen lassen müssen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Mr Jo ()

    • Perfekt formuliert! Respekt!

      Nur klitzekleine Ergänzungen:
      - Man kann den Audioversatz auch gleich von VirtualDub reparieren lassen.
      - Der canopus HQ Codec arbeitet bei mir hervorragend (Inp. und Outp.) mit VirtualDub. Dadurch werden die riesigen Datenmengen vermieden.
      - Wenn Deshaker innerhalb von sonst verwackelten Clips mal nichts tun muss, ist die Outputqualität beim fixen Zoom = 1 etwas besser als bei /= 1. Deshalb meine Voreinstellung. Evtl. blende ich im NLE einen schmalen schwarzen Rand über das Video um jedes Zoom zu vermeiden. Bei größeren Verwackelungen geht das so natürlich nicht mehr. Dein Weg ist dann wesentlich besser, um nur ein (zumindest beim HQ Codec) Resampling (das im Deshaker) zu durchlaufen.

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Harald ()

    • @Josef,
      klasse Zusammenfassung... :Applaus:

      Meine eigene Initialzündung ist ausgelöst worden durch diese Beiträge im Internet:

      1. VDUB2RTFX-Schnittstelle von Harold Linke für Pinnacle Studio

      Das schöne mit dem Deshaker in Studio (das mache ich schon seit der Version 10) ist, dass man kein zusätzliches Programm aufmachen muß, man muß lediglich 2mal das Plug-in aktivieren um Pass 1 und Pass 2 zu aktivieren, das Rendern läuft im Hintergrund und die entwackelte Datei entspricht dann schon dem Clip auf der Timeline und Ausgleichs-Ränder sind auch nicht zu sehen. Super Qualität!

      2. Im Jahre 2004 habe ich mich mit diesem Tipp im DVD SVCD-Forum beschäftigt. Weitere Tipps gab es hier. Vor allem das Demo-Video hier mit der "schwebenden Kamera" hat mich beeindruckt.

      Darüber hinaus habe ich noch 50 weitere Favoriten zu diesem Thema gespeichert.

      Josef hat mir dankenswerter Weise geholfen mit dem Frameserver in Premiere Pro und der Verbindung zu VirtualDub, was ich dann auf Anhieb umsetzen konnte.

      Den Artikel von Wenzi kenne ich nicht, vielleicht kann jemnad dieses Script hier reinstellen?

      Meine eigene Zusammenfassung zur Verwendung des Deshakers in Pinnacle Studio und Premiere Pro 2.0 findet man hier
      +++++++++ Das ist meine Privatmeinung! +++++++++
      +++ FZ300 - RX100 - EDIUS 9.x - DaVinci Res.14 +++
    • Zuserst müssen wir uns eingestehen, dass bei der Arbeit mit dem Deshaker mehrere Rendergenerationen erzeugt werden.

      1. Ausgabe über den Frameserver und den dort eingebundenen Codec (den man aber selbst bestimmen kann)
      2. Durch Deshaker erzeugtes *.avi-file
      3. Durch die NLE zurück-encodestes *.m2t-file
      4. Gerenderter Gesamt-Film durch die NLE


      Josef, das mache ich etwas anders...
      Ich lege diese von VD erstellte AVI (komprimiert) in die Timeline von P-Pro 2.0 und rendere dann so den Gesamt-Film raus. Der Zwischenschritt 3 fällt somit raus.

      In Studio 11 ist das alles nicht erforderlich, wie ich oben schon geschrieben habe.!
      +++++++++ Das ist meine Privatmeinung! +++++++++
      +++ FZ300 - RX100 - EDIUS 9.x - DaVinci Res.14 +++
    • Den Artikel von Wenzi kenne ich nicht, vielleicht kann jemnad dieses Script hier reinstellen?


      Sehr bedauerlich aber auch. Den kennst sonst fast jeder, der sich jemals mit diesem Thema beschäftigt hat. Sozusagen ein "Must have"... :heul:

      Der Link ist im Vegas-Forum erhältlich. Wer sich bei PC-Video anmeldet (letztendlich führt auch dieser Link dorthin), kann den Bericht kostenlos einsehen (und viel dabei lernen).
    • Original von Achilles
      Ich lege diese von VD erstellte AVI (komprimiert) in die Timeline von P-Pro 2.0 und rendere dann so den Gesamt-Film raus. Der Zwischenschritt 3 fällt somit raus.


      Das ist sicher die logische Alternative, um einen Renderschritt zu sparen. Hat aber einen entscheidenden Nachteil, wenn man den Huffyuv verwendet. Dazu nehme ich Lothars Gleitschirm-Clips als Beispiel: 20 min deshakte Clips im Huffyuv belegen knapp 50 ! GByte auf der Festplatte..

      Für ein Projekt mag das noch in Ordnung gehen. Wenn ich aber daran denke, dass ich die letzten 4 Projekte samt Original-Clips auf Festplatte habe, weil sich ja immer noch eine Kleinigkeit ändern kann (z.B. jetzt kann ich Wackelaufnahmen von vor einem Jahr nochmals deshaken) dann wird das ganz schön üppig..

      Bei einem entsprechend vorhandenem Codec wie den Mainconcept oder den Canopus HQ ist das sicher deutlich weniger.
    • Man kann das auch schrittweise machen: Zunächst den Film grob vorschneiden, dann partiell nach AVI rendern (oder besser noch über Frameserver), in VD deshaken und sofort wieder im NLE nach m2t konvertieren. Das ist durchaus 10-minutenweise machbar und benötigt nur temporär ein paar Giga. Mir ist heute aber auch schon eine meiner 250GB-Platten vollgelaufen. Man muss also immer wieder mal aufräumen zwischendurch.

      Das Ergebnis indessen schlägt alles, was ich bisher mit (teueren!) Deshakern gesehen habe. Sogar mein Gleitschirmfilm wird damit zu einem "fliegenden Stativ", allerdings darf man dabei nicht übertreiben... sonst geht leicht der Charakter der Flugaufnahme verloren. Der geringe Schärfeverlust wiegt bei Weitem nicht das auf, was die zwangsweise verwackelten Szenen an Ruhe hinzu gewinnen. Somit erübrigt sich jegliche theorestische Diskussion über Sinn und Zweck einer solchen Maßnahme! Iss einfach so.
    • Original von Wenzi
      Der geringe Schärfeverlust wiegt bei Weitem nicht das auf, was die zwangsweise verwackelten Szenen an Ruhe hinzu gewinnen.


      Genau das gleiche habe ich auch beobachtet. Gerade sehr verwackelte Aufnahmen profitieren keineswegs von der eventuell vorhandenen Schärfe, da diese vollkommen im Gewackle und Gezittere untergeht. So scheinen die beruhigten Szenen an Schärfe eher gewonnen zu haben, von der Bildruhe, der das Auge nun folgen kann, ganz zu schweigen.

      Aber ich gehe bereits seit Stunden mit meiner neuen Geheimwaffe (für Island) durch den Garten.. Ganz was Geniales, man sieht es dem kleinen Teil nicht an, was da drin steckt..