Frame Interpolation
Frame-Interpolation erzeugt neue Frames zwischen vorhandenen Frames, um die Bildrate zu erhöhen oder Zeitlupe zu erzeugen. Verfahren auf Basis von Bewegungsfluss, Kerneln und generativen Modellen.
Die Zwischenbildberechnung, auch als Video-Zwischenbildberechnung (VFI) bezeichnet, ist eine Aufgabe der Computer Vision, bei der neue Einzelbilder zwischen zwei vorhandenen Videobildern erzeugt werden. Wird zwischen jedem Bildpaar ein Einzelbild eingefügt, verdoppelt sich die Bildrate: Aus Material mit 30 FPS werden 60 FPS. Das Einfügen mehrerer Einzelbilder erzeugt Zeitlupe aus gewöhnlichem Filmmaterial. Dadurch erhöht sich die zeitliche Auflösung eines Videos – das zeitliche Gegenstück zur Superauflösung. Die Methode füllt nur Lücken zwischen vorhandenen Bildern, anders als die Videovorhersage, die Bilder nach dem letzten vorhandenen Einzelbild extrapoliert.
So funktioniert die Zwischenbildberechnung#
Der Mittelwert zweier Bilder erzeugt Geisterbilder, also ein Doppelbild von allem, was sich bewegt hat. Flussbasierte Verfahren schätzen stattdessen den optischen Fluss, also die Bewegung jedes Pixels zwischen den beiden Bildern. Sie verschieben jedes Bildstück entlang dieser Bewegung bis zum Zielzeitpunkt und überblenden die beiden Ergebnisse. Verdeckungen sind die größte Schwierigkeit: Ein Hintergrundbereich, der sichtbar wird, wenn eine gehende Person ihn freigibt, ist nur in einem der Bilder vorhanden. Deshalb sagen Deep-Learning-Modelle wie Super SloMo auch Sichtbarkeitskarten voraus, die festlegen, aus welchem Bild jedes Ausgabepixel stammt.
Der optische Fluss nach Farneback in OpenCV reicht aus, um den Effekt an echtem Filmmaterial zu zeigen. Der Code lässt das mittlere von drei Bildern aus, rekonstruiert es anhand seiner Nachbarbilder und bewertet beide Methoden mit dem Spitzen-Signal-Rausch-Verhältnis (PSNR):
import cv2
import numpy as np
# Read three consecutive frames of people walking and hold out the middle one
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov")
f0, f1, f2 = (cap.read()[1] for _ in range(3))
g0, g2 = (cv2.cvtColor(f, cv2.COLOR_BGR2GRAY) for f in (f0, f2))
# Estimate dense optical flow in both directions between the outer frames
flow02 = cv2.calcOpticalFlowFarneback(g0, g2, None, 0.5, 3, 15, 3, 5, 1.2, 0)
flow20 = cv2.calcOpticalFlowFarneback(g2, g0, None, 0.5, 3, 15, 3, 5, 1.2, 0)
# Warp each outer frame halfway along its flow, then average the two warps
h, w = g0.shape
grid = np.dstack(np.meshgrid(np.arange(w), np.arange(h))).astype(np.float32)
warp0 = cv2.remap(f0, grid - 0.5 * flow02, None, cv2.INTER_LINEAR)
warp2 = cv2.remap(f2, grid - 0.5 * flow20, None, cv2.INTER_LINEAR)
middle = cv2.addWeighted(warp0, 0.5, warp2, 0.5, 0)
# Score both against the real middle frame: flow interpolation vs. plain blending
blend = cv2.addWeighted(f0, 0.5, f2, 0.5, 0)
print(f"Blend: {cv2.PSNR(blend, f1):.1f} dB, flow interpolation: {cv2.PSNR(middle, f1):.1f} dB")Die Ausgabe lautet Blend: 22.3 dB, flow interpolation: 29.5 dB: Wenn jedes Bild auf halber Strecke seiner Bewegung verschoben wird, lässt sich das ausgelassene Bild um 7,2 dB genauer rekonstruieren als durch Mittelwertbildung. Benchmarks bewerten Modelle auf dieselbe Weise: Der Vimeo-90K-Triplet-Datensatz enthält 73.171 Videoclips mit je drei Bildern. Ein Modell muss das mittlere Bild vorhersagen; gemessen wird mit PSNR und SSIM.
Lernbasierte Verfahren zur Zwischenbildberechnung#
- Flussbasierte Netzwerke: Super SloMo (2018) sagt Fluss und Sichtbarkeit für beliebige Zeitpunkte zwischen zwei Bildern voraus. RIFE (2022) schätzt den Fluss direkt für den Zwischenzeitpunkt und läuft vier- bis 27-mal schneller als Super SloMo und DAIN.
- Kernelbasierte Netzwerke: SepConv (2017) sagt separierbare Faltungskerne für jedes Ausgabepixel voraus und wendet sie auf Bildausschnitte der beiden Eingabebilder an. So werden Bewegungsschätzung und Überblendung in einem Schritt kombiniert.
- Modelle für große Bewegungen: Googles FILM (2022) teilt die Gewichte über die Skalen einer Merkmals-Pyramide hinweg. Dadurch werden große Bewegungen auf einer feinen Skala so verarbeitet wie die kleinen Bewegungen, die das Modell auf gröberen Skalen erlernt. Trainiert wird allein mit Dreiergruppen von Bildern.
- Generative Modelle: Diffusionsbasierte Verfahren zur Zwischenbildberechnung wie LDMVFI (2024) erzeugen das mittlere Bild, indem sie eine latente Darstellung entrauschen, die von den beiden Eingabebildern abhängig ist, statt deren Pixel zu verzerren.
- Ereignisbasierte Zwischenbildberechnung: Time Lens (2021) berücksichtigt die Helligkeitsänderungen, die eine Ereigniskamera zwischen zwei Bildern aufzeichnet und die die tatsächliche Bewegung in der Lücke sichtbar machen.
Anwendungen in der Praxis#
- Generierung von Spielbildern: NVIDIA DLSS Multi Frame Generation fügt auf GeForce RTX 50 Series GPUs bis zu fünf generierte Bilder pro gerendertem Bild ein. Für jedes generierte Bild wird das nächste gerenderte Bild benötigt, was die Latenz erhöht.
- Videobearbeitung: Schnittprogramme erzeugen Zeitlupe aus gewöhnlichem Filmmaterial und passen Videos mit 24 oder 30 FPS für Bildschirme mit 60 Hz und 120 Hz an. Dabei kommt dieselbe Bewegungsinterpolation zum Einsatz, die Fernseher als Bewegungsglättung anwenden.
- Animation: Interpolationsmodelle erzeugen Zwischenzeichnungen für handgezeichnete Schlüsselbilder, und Videogeneratoren können ganze Clips erstellen, die mit zwei vorgegebenen Bildern beginnen und enden.
Objektverfolgung wendet dieselbe Idee auf Positionen statt auf Pixel an. Taucht ein Objekt nach mehreren verdeckten Bildern wieder auf, interpoliert der OC-SORT-Tracker im Ultralytics-Track-Modus (tracker="ocsort.yaml") für die übersprungenen Bilder virtuelle Boxen und verarbeitet sie erneut mit seinem Kalman-Filter. So wird die Geschwindigkeitsschätzung korrigiert, mit der der Tracker das Objekt der nächsten YOLO26-Erkennung zuordnet.










