Optical Flow
Explore les fondamentaux du flux optique en vision par ordinateur. Apprends comment les vecteurs de mouvement dirigent la compréhension vidéo et améliorent le suivi dans Ultralytics YOLO26.
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 au sein des 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 se déplace, comblant ainsi le fossé entre l'analyse d'images statiques et la compréhension vidéo.
Link to this sectionMécanismes fondamentaux du flux optique#
Le calcul du flux optique repose généralement sur l'hypothèse de 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 en utilisant deux approches principales :
- Flux optique épars : Cette méthode calcule le vecteur de mouvement pour un sous-ensemble spécifique de caractéristiques distinctes, telles que les coins ou les contours, détectées via l'extraction de caractéristiques. Des algorithmes comme la méthode de Lucas-Kanade sont efficaces sur le plan informatique et idéaux pour les tâches d'inférence en temps réel où le suivi de points d'intérêt spécifiques suffit.
- Flux optique dense : Cette approche calcule un vecteur de mouvement pour chaque pixel de l'image. Bien qu'elle soit beaucoup plus exigeante en termes de calcul, elle fournit une carte de mouvement complète, essentielle pour des tâches précises comme la segmentation d'images et l'analyse structurelle. Les architectures modernes de deep learning surpassent souvent les méthodes mathématiques traditionnelles en matière d'estimation de flux dense en apprenant des modèles de mouvement complexes à partir de grands ensembles de données.
Link to this sectionFlux optique vs suivi d'objets#
Bien qu'ils soient souvent utilisés ensemble, il est crucial de distinguer le flux optique du suivi d'objets. 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 des objets.
À l'inverse, 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, comme ceux intégrés dans Ultralytics YOLO26, 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 à « à quelle vitesse ces pixels bougent-ils en ce moment ? », tandis que le suivi répond à « où est passée la voiture n°5 ? ».
Link to this sectionApplications concrètes#
La capacité d'estimer le mouvement au niveau du pixel propulse une large gamme de technologies sophistiquées :
- Véhicules autonomes et robotique : Le flux optique est utilisé pour l'odométrie visuelle, permettant à un robot ou à une voiture d'estimer son propre mouvement par rapport à l'environnement. Il assiste également l'estimation de profondeur et l'évitement d'obstacles en analysant la vitesse à laquelle les objets dans le champ visuel s'agrandissent ou se déplacent.
- Stabilisation vidéo : Les caméras et les logiciels de montage utilisent les vecteurs de flux pour détecter les tremblements de caméra involontaires. En compensant ce mouvement global, les systèmes peuvent stabiliser numériquement les images. Il s'agit d'une fonctionnalité standard dans l'électronique grand public moderne, comme les smartphones et les caméras d'action.
- Reconnaissance d'actions : Dans l'analyse sportive et la sécurité, l'analyse du flux temporel des pixels aide les systèmes à identifier des actions humaines complexes. Par exemple, les modèles d'estimation de pose peuvent être enrichis avec des données de flux pour distinguer une personne qui marche d'une personne qui court, en se basant sur la vitesse du mouvement des membres.
- Compression vidéo : Les normes comme le codage vidéo MPEG reposent largement sur l'estimation de mouvement. Au lieu de stocker chaque image complète, le codec stocke le flux optique (vecteurs de mouvement) et la différence (résiduel) entre les images, réduisant ainsi considérablement la taille des fichiers pour le streaming et le stockage.
Link to this sectionExemple d'implémentation#
L'exemple suivant montre comment calculer un flux optique dense en utilisant la bibliothèque OpenCV, un outil standard dans l'écosystème de la vision par ordinateur. Cet extrait 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, tu devrais envisager les modes de suivi disponibles dans Ultralytics YOLO11 et YOLO26. Ces modèles abstraient la complexité de l'analyse de mouvement, fournissant des identifiants d'objets et des trajectoires robustes dès le départ pour des tâches allant de la surveillance du trafic à l'analyse de détail.






