Entdecken Sie die Leistungsfähigkeit des optischen Flusses in der Computer Vision. Erfahren Sie, wie er Bewegungen schätzt, die Videoanalyse verbessert und Innovationen in der KI vorantreibt.
Der optische Fluss ist ein grundlegendes Konzept in der Computersehen das beinhaltet die scheinbare Bewegung von Objekten, Oberflächen und Kanten in einer visuellen Szene zu schätzen. Diese Bewegung wird berechnet auf der Grundlage der relativen Bewegung zwischen einem Beobachter (z. B. einer Kamera) und der Szene selbst. Das Ergebnis dieses Prozesses ist ein Vektorfeld, in dem jeder Vektor die Verschiebung eines Pixels oder Merkmals zwischen zwei aufeinanderfolgenden Videobildern darstellt. Durch die Analyse dieser Bewegungsvektoren können Systeme ein granulares, tiefes Verständnis der Szenendynamik gewinnen und folgende Fragen beantworten die entscheidende Frage beantworten, "wie" sich die Pixel im Laufe der Zeit bewegen.
Die Berechnung des optischen Flusses stützt sich in der Regel auf die Annahme der "Helligkeitskonstanz". Dieser Grundsatz postuliert, dass die Pixelintensität eines bestimmten Punktes auf einem Objekt zwischen aufeinanderfolgenden Bildern konstant bleibt, auch wenn es sich bewegt. Algorithmen nutzen diese Annahme, um Verschiebungen track . Es gibt zwei primäre Ansätze zur Bestimmung dieser Bewegungsfelder:
Es ist wichtig, den optischen Fluss von Objektverfolgungzu unterscheiden, da sie innerhalb einer Bildverarbeitungspipeline unterschiedlichen Zwecken dienen. Der optische Fluss ist eine Low-Level-Operation, die die momentane Bewegung von Pixeln beschreibt, ohne zu verstehen, was diese Pixel darstellen. Die Identität eines Objekts wird dabei nicht Identität eines Objekts im Laufe der Zeit.
Im Gegensatz dazu ist die Objektverfolgung eine Aufgabe auf hoher Ebene, die bestimmte Objekte lokalisiert und ihnen eine einheitliche ID zuweist über alle Bilder hinweg zu. Erweiterte Verfolgungsmodi, wie die in Ultralytics YOLO11führen in der Regel Objekterkennung und dann Bewegungshinweise verwendet, um Erkennungen zuzuordnen. Während ein Tracker intern den optischen Fluss nutzen könnte, um die Position vorherzusagen, Ziel des Trackers ist die Identitätserhaltung ("Wohin ist Auto Nr. 4 gefahren?"), während das Ziel des optischen Flusses die Bewegungszuordnung Abbildung ("Wie schnell bewegen sich diese Pixel nach rechts?").
Optischer Fluss ist ein vielseitiges Werkzeug, das in verschiedenen Branchen zur Lösung komplexer bewegungsbezogener Probleme eingesetzt wird.
Das folgende Python demonstriert die Berechnung des dichten optischen Flusses mit Hilfe des OpenCV Bibliothek. Dabei wird der Gunnar Farneback-Algorithmus, eine beliebte Methode zur Schätzung des dichten Flusses.
import cv2
import numpy as np
# Load two consecutive frames (ensure these files exist)
frame1 = cv2.imread("frame1.jpg")
frame2 = cv2.imread("frame2.jpg")
# Convert frames to grayscale
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Calculate dense optical flow using Farneback's algorithm
flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
# Compute magnitude and angle of 2D vectors
mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])
print(f"Flow shape: {flow.shape}") # Output: (Height, Width, 2)
print(f"Max motion magnitude: {np.max(mag):.2f} pixels")
Für Benutzer, die die Bewegungsanalyse mit der Objekterkennung integrieren möchten, Ultralytics Erkennungsmodelle kombiniert werden mit Flussalgorithmen kombiniert werden, um robuste Analysepipelines zu erstellen. Während der optische Fluss die rohen Bewegungsdaten liefert, übergeordnete Modelle wie YOLO11 bieten das semantische Verständnis, das für eine effektive Interpretation dieser Bewegung erforderlich ist. Die laufende Forschung und Entwicklung von Modellen wie YOLO26 zielen auf eine weitere Vereinheitlichung des räumlichen zeitliches Verständnis für eine noch schnellere End-to-End-Videoanalyse zu vereinheitlichen.