Optical Flow
Explore les fondamentaux du flot optique en vision par ordinateur. Découvre comment les vecteurs de mouvement permettent la compréhension vidéo et améliorent le suivi dans Ultralytics YOLO26.
Le flux optique est le motif du 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 les dynamiques temporelles 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 dans lequel chaque vecteur représente la direction et l'amplitude du mouvement d'un point donné. Ce signal 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, faisant le lien entre l'analyse d'images statiques et la compréhension vidéo dynamique.
Mécanismes fondamentaux du flux optique#
Le calcul du flux optique repose généralement sur l'hypothèse de constance de la luminosité, selon laquelle l'intensité d'un pixel sur un objet reste constante d'une image à l'autre, même lorsque l'objet se déplace. Les algorithmes utilisent ce principe pour calculer les vecteurs de mouvement selon deux approches principales :
- Flux optique parcimonieux : cette méthode calcule le vecteur de mouvement d'un sous-ensemble précis de caractéristiques distinctives, telles que des angles ou des contours, détectées par l'extraction de caractéristiques. Des algorithmes comme la méthode de Lucas-Kanade sont efficaces sur le plan computationnel 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 nettement plus exigeante sur le plan computationnel, elle fournit une carte complète des mouvements, essentielle pour des tâches détaillées comme la segmentation d'images et l'analyse structurelle. Les architectures modernes d'apprentissage profond surpassent souvent les méthodes mathématiques traditionnelles pour l'estimation du flux dense, car elles apprennent des schémas de mouvement complexes à partir de grands jeux de données.
Flux optique et suivi d'objets#
Bien qu'ils soient souvent utilisés conjointement, il est essentiel 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é ni 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 ID cohérent au fil du temps. Les trackers avancés, tels que ceux intégrés à Ultralytics YOLO26, effectuent généralement une détection d'objets pour trouver l'objet, puis utilisent des signaux de mouvement — parfois issus 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 en ce moment ? », tandis que le suivi répond à la question « où est passée la voiture n° 5 ? »
Applications concrètes#
La capacité à estimer les mouvements au niveau des pixels alimente un large éventail de technologies sophistiquées :
- Véhicules autonomes et robotique : le flux optique est utilisé pour l'odométrie visuelle, ce qui permet à un robot ou à une voiture d'estimer son propre mouvement par rapport à l'environnement. Il contribue également à l'estimation de la profondeur et à l'évitement des obstacles en analysant la vitesse à laquelle les objets du 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 involontaires de la caméra. En compensant ce mouvement global, les systèmes peuvent stabiliser numériquement les séquences. Il s'agit d'une fonctionnalité standard des appareils électroniques grand public modernes, 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 fonction de la vitesse de mouvement des membres.
- Compression vidéo : des normes comme le codage vidéo MPEG reposent largement sur l'estimation des mouvements. Au lieu de stocker chaque image complète, le codec stocke le flux optique (les vecteurs de mouvement) ainsi que la différence (le résidu) entre les images, ce qui réduit considérablement la taille des fichiers pour la diffusion en continu et le stockage.
Exemple d’implémentation#
L'exemple suivant montre comment calculer un flux optique dense à l'aide de la bibliothèque OpenCV, un outil standard de l'écosystème de la vision par ordinateur. Cet extrait utilise l'algorithme de Farneback pour générer une carte des mouvements 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 qui nécessitent la persistance des objets plutôt que le mouvement brut des pixels, il est recommandé d'utiliser les modes de suivi disponibles dans Ultralytics YOLO11 et YOLO26. Ces modèles masquent la complexité de l'analyse des mouvements et fournissent directement des ID et des trajectoires d'objets robustes pour des tâches allant de la surveillance du trafic à l'analyse du commerce de détail.









