Découvrez les principes fondamentaux du flux optique dans la vision par ordinateur. Apprenez comment les vecteurs de mouvement facilitent la compréhension des vidéos et améliorent le suivi dans Ultralytics .
Le flux optique est le motif de mouvement apparent des objets, des surfaces et des contours dans une scène visuelle, causé par le mouvement relatif entre un observateur et une scène. Dans le domaine de la vision par ordinateur, ce concept est fondamental pour comprendre la dynamique temporelle dans les séquences vidéo. En analysant le déplacement des pixels entre deux images consécutives, les algorithmes de flux optique génèrent un champ vectoriel où chaque vecteur représente la direction et l' amplitude du mouvement pour un point spécifique. Cet indice visuel de bas niveau permet aux systèmes d'intelligence artificielle de percevoir non seulement ce qui se trouve dans une image, mais aussi comment cela bouge, comblant ainsi le fossé entre l'analyse d'images statiques et la compréhension dynamique des vidéos.
Le calcul du flux optique repose généralement sur l'hypothèse de la constance de la luminosité, qui postule que l' intensité d'un pixel sur un objet reste constante d'une image à l'autre, même lorsqu'il se déplace. Les algorithmes utilisent ce principe pour résoudre les vecteurs de mouvement à l'aide de deux approches principales :
Bien qu'ils soient souvent utilisés conjointement, il est essentiel de distinguer le flux optique du suivi d'objet. Le flux optique est une opération de bas niveau qui décrit le mouvement instantané des pixels ; il ne comprend pas intrinsèquement l'identité ou la persistance d'un objet.
En revanche, le suivi d'objets est une tâche de haut niveau qui localise des entités spécifiques et leur attribue un identifiant cohérent dans le temps . Les trackers avancés, tels que ceux intégrés à Ultralytics , effectuent généralement une détection d'objets pour trouver l'objet, puis utilisent des indices de mouvement, parfois dérivés du flux optique, pour associer les détections entre les images. Le flux optique répond à la question « à quelle vitesse ces pixels se déplacent-ils actuellement », tandis que le suivi répond à la question « où est passée la voiture n° 5 ? ».
La capacité à estimer le mouvement au niveau des pixels alimente un large éventail de technologies sophistiquées :
L'exemple suivant montre comment calculer un flux optique dense à l'aide de OpenCV , un outil standard dans l'écosystème de la vision par ordinateur . Cet extrait de code utilise l'algorithme de Farneback pour générer une carte de flux entre deux images consécutives.
import cv2
import numpy as np
# Simulate two consecutive frames (replace with actual image paths)
frame1 = np.zeros((100, 100, 3), dtype=np.uint8)
frame2 = np.zeros((100, 100, 3), dtype=np.uint8)
cv2.rectangle(frame1, (20, 20), (40, 40), (255, 255, 255), -1) # Object at pos 1
cv2.rectangle(frame2, (25, 25), (45, 45), (255, 255, 255), -1) # Object moved
# Convert to grayscale for flow calculation
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
# Calculate dense optical flow
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"Max motion detected: {np.max(mag):.2f} pixels")
Pour les applications de haut niveau nécessitant la persistance des objets plutôt que le mouvement brut des pixels, les utilisateurs doivent envisager les modes de suivi disponibles dans Ultralytics YOLO11 et YOLO26. Ces modèles résument la complexité de l'analyse du mouvement et fournissent des identifiants d'objets et des trajectoires robustes prêts à l'emploi pour des tâches allant de la surveillance du trafic à l' analyse du commerce de détail.