Bewegungsschätzungs-Simulator

Simuliere Inter-Frame-Bewegungsschätzung, Block-Matching, Suchmuster und Kompressionsresiduen.

Interaktive Simulation wird geladen...

Die schnelle Suche sieht den größten Teil des Fensters nie 🖖

Die Bewegungsschätzung ist der Flaschenhals der Videokompression. Ein Makroblock der Größe 16x16 wird im Referenzbild innerhalb eines Suchfensters mit dem Kandidaten verglichen, der die niedrigste Summe der absoluten Differenzen (SAD) liefert. Die erschöpfende Vollsuche wertet alle (2r+1)² Positionen aus, was langsam ist. Schnelle Algorithmen wie Diamond- und Hexagon-Suche prüfen nur einen Bruchteil der Punkte, indem sie das Suchzentrum iterativ verschieben und abbrechen, sobald das Minimum in der Mitte des Musters liegt. Fahre mit der Maus über einen Block, um sein Suchfenster und die Kandidatenbewertungen in Echtzeit zu sehen.

Warum Bewegung statt Pixel 🖖

Aufeinanderfolgende Videobilder sind fast identisch, deshalb speichert ein Codec das aktuelle Bild nicht vollständig, sondern beschreibt es als verschobene Teile des vorherigen Bildes. Jeder 16×16-Block erhält einen Bewegungsvektor zu seiner besten Entsprechung plus ein kleines Residuum für alles, was die Verschiebung nicht erklärt. Merke: Sanfte Kameraschwenks lassen sich hervorragend komprimieren, weil ein einziger Vektor Tausende Pixel ersetzt.

Bewegungsvektoren sind keine echte Bewegung 🖖

Der Encoder fragt nie, was sich tatsächlich bewegt hat — er sucht nur den Block mit der kleinsten SAD. In flachen oder verrauschten Regionen kann der Gewinnervektor daher völlig absurd zeigen, ganz anders als die wahre Verschiebung. Zieh den Rausch-Regler hoch und sieh zu, wie das Vektorfeld ins Chaos zerfällt. Deshalb taugen Bewegungsvektoren schlecht als optischer Fluss, aber bestens zur Kompression: Sie dienen der Bitrate, nicht der Physik.

EINE STUFE EINER KETTE — WAS ANKOMMT, WAS HERAUSGEHT, WAS DANACH BRICHT

Wo diese Stufe in der Encoding-Pipeline sitzt

Ein Video-Encoder ist kein einzelner Algorithmus, sondern acht Stufen in fester Reihenfolge — und die Reihenfolge ist nicht beliebig: Jede Stufe existiert, weil die vorherige ihre Arbeit erst möglich gemacht hat. Dieses Werkzeug modelliert eine davon. Die Kette unten verlinkt die anderen sieben.

Bewegungsschätzungs-Simulator — findet, wohin sich jeder Block bewegt hat, und codiert dann die Differenz statt des Blocks

Was ankommt
Ein P- oder B-Frame zusammen mit seinen Referenzbildern.
Was herausgeht
Ein Bewegungsvektor pro Block und ein Residuum — genau das, was die Vorhersage falsch getroffen hat.
Was die nächste Stufe voraussetzt
Die Quantisierung erhält ein Residuum, kein Bild. Residuen liegen fast überall nahe null, und genau deshalb ist ihre Quantisierung günstig.
Was hier schiefgeht
Eine schlechte Übereinstimmung erzeugt kein falsches Bild, sondern ein teures. Das Residuum trägt mehr Energie, und dieselbe Quantisierereinstellung gibt dafür mehr Bits aus. Diese Stufe verändert die Größe der Ausgabe, nicht deren Einstellungen.

Aufgabe vollständig gelöst

  1. Das aus 225 Positionen pro Block abgeleitete Suchfenster 5 Schritte

    Eine vollständige Bewegungssuche prüft 225 Positionen pro Block, insgesamt 14 400. Ermitteln Sie daraus das Suchfenster und was eine schnelle Suche brings.

    1. 225 ist eine perfekte Quadratzahl, und das ist der Hinweis: Die Suche ist ein quadratisches Fenster von 15 mal 15 Kandidaten-Verschiebungen, was −7 bis +7 Pixel in jede Richtung bedeutet.

    2. Dividiert man die Gesamtanzahl durch die Anzahl pro Block, erhält man die Anzahl der Blöcke, in die das Einzelbild unterteilt wurde.

    3. Der Aufwand wächst mit dem Quadrat des Suchradius, daher wird eine Vergrößerung des Fensters schnell teuer: Radius 7 kostet 225 Positionen, Radius 15 kostet 961, Radius 31 kostet 3969.

    4. Dieses quadratische Wachstum ist der Grund, warum es schnelle Suchen gibt. Eine Drei-Schritt-Suche tastet neun Punkte ab, verfeinert und wiederholt — 27 Positionen statt 225.

    5. Achtmal günstiger und nicht gleichwertig: Sie steigt zu einem lokalen Minimum ab und kann am echten besten Treffer vorbeilaufen, wenn die Fehlerfläche mehr als eine Senke aufweist.

    Antwort

    Das Werkzeug meldet 14400 durchsuchte Punkte bei 225,0 pro Block. Darin zeigt sich der zentrale Zielkonflikt der praktischen Videocodierung: Die Vollsuche liefert das Optimum, ihr Aufwand wächst jedoch quadratisch mit dem Suchradius. Deshalb verwendet jeder Encoder ein heuristisches Verfahren und nimmt in Kauf, gelegentlich einen schlechteren Vektor zu wählen. Eine der Folgen erkennst du in der Zeile Restenergie (MSE). Ein ungeeigneter Vektor lässt ein größeres Residuum zurück, für dessen Codierung mehr Daten nötig sind. Die schnelle Bewegungssuche spart nicht einfach nur Rechenzeit. Sie setzt darauf, dass durch ungenaue Vektoren weniger Bits verloren gehen, als sich an anderer Stelle sinnvoll einsetzen lassen.

Quellen (2)

Beispielaufgaben

  • Langsamer Schwenk - Langsamer horizontaler Schwenk: nahezu kein Residuum, Bewegungsvektoren zeigen gleichmäßig nach rechts
  • Schneller Schwenk - Schneller Schwenk: größere SAD am Suchrand, energiereiche Residuen am Rand
  • Zoom-Verzerrung - Zoom-Bewegung: divergierende Vektoren vom Zentrum aus, kein einzelner Verschiebungsvektor passt
  • Verwackelte Handkamera - Verrauschte Kamera: hohe SAD trotz korrekter Vektoren — die Rauschenergie dominiert das Residuum