Contents — find the section you need
Déplacez légèrement la caméra latéralement et photographiez la même scène : les objets proches se déforment davantage par rapport à l’arrière-plan que les objets éloignés. Cette parallaxe permet de reconstituer la forme 3D et le mouvement de la caméra à partir d’images 2D. Cependant, la simple correspondance du « même point physique » entre les images ne suffit pas. Dans les images réelles, riches en défauts, distorsions d’objectif, rotations pures, plans et objets en mouvement, il est nécessaire de déterminer quelles paires de points correspondent à un mouvement de caméra unique. La géométrie épipolaire est le langage commun permettant précisément cela.
Il ne s’agit pas uniquement de mesures stéréoscopiques. La reconstruction 3D à partir du mouvement (SfM), l’odométrie visuelle, le SLAM visuel, le suivi de plans en réalité augmentée, l’autolocalisation des robots et la reconstruction parcimonieuse de COLMAP reposent tous sur des correspondances et la géométrie projective. Cet article utilise des repères de coordonnées clairs et précis, expliquant la signification de chaque matrice, l’estimateur à choisir et les situations où le résultat est sujet à caution.
Exemple de véhicule à caméra stéréoImage : Subaru WRX S4 2.0GT-S EyeSight (Tokumeigakarinoaoshima, CC BY-SA 4.0), Wikimedia Commons. Vue extérieure, et non un gros plan de l'intérieur de la caméra.
0. Résumé en 30 secondes
-
Le plan formé par les centres de deux caméras et un point 3D est appelé plan épipolaire. Ce plan coupe chaque image comme une ligne, de sorte qu'un point correspondant dans une image est une ligne. L'image ne peut apparaître que sur cette ligne — la ligne épipolaire — dans l'autre image.
-
Pour les images non calibrées, la matrice fondamentale F satisfait \mathbf{x}'^\mathsf{T}F\mathbf{x}=0. En coordonnées normalisées avec des paramètres intrinsèques connus, la matrice essentielle E=[\mathbf{t}]_\times R est utilisée. E permet de retrouver la rotation R et la direction de la translation, mais une seule paire de vues monoculaires ne permet pas de retrouver l'échelle absolue de la translation.
-
L'algorithme normalisé à 8 points est une estimation initiale linéaire facile à implémenter ; l'algorithme à 5 points est un solveur minimal nécessitant moins de correspondances pour une caméra calibrée. Les deux sont sensibles aux erreurs de correspondance ; en pratique, on élimine donc les valeurs aberrantes avec RANSAC/USAC et on évalue avec l'erreur de reprojection.
-
La triangulation trouve l'intersection de deux lignes de visée, mais la profondeur devient instable lorsque la parallaxe est faible, la ligne de base est courte ou l'image Le bruit est important. Après l'estimation, l'ajustement par faisceaux affine conjointement les poses de la caméra et les points 3D.
-
Pour une scène purement plane, ou une caméra à rotation quasi pure, une homographie H décrit correctement les images, et la reconstruction de la translation/profondeur via F/E devient inefficace. La sélection du modèle ne doit pas se baser uniquement sur le nombre de points cohérents ; il convient de vérifier conjointement les résidus, la parallaxe, la distribution spatiale et la verticalité.
1. Écriture de la projection à deux vues à partir des coordonnées
Soit un point du repère mondial la coordonnée homogène \mathbf{X}=(X,Y,Z,1)^\mathsf{T}. La projection de la caméra sténopé, à l'échelle près, s'écrit :
Ici, \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} est la coordonnée homogène de l'image, K est la matrice intrinsèque, et R\in SO(3) et \mathbf{t} sont les… Pose extrinsèque monde-caméra. Typiquement :
où f_x,f_y représente la distance focale en pixels, (c_x,c_y) le point principal et s l'inclinaison. Une fois la distorsion corrigée, les coordonnées normalisées de l'image sont \mathbf{x}=K^{-1}\tilde{\mathbf{x}}. À partir de là, prenez la caméra gauche comme référence (P_1=K[I\mid\mathbf{0}]) et la caméra droite (P_2=K[R\mid\mathbf{t}]).
Sur la figure, C,C' représentent les centres des caméras, et le segment CC' constitue la ligne de base. Le plan défini par le point X et les deux centres coupe le plan image gauche selon la ligne épipolaire l, et le plan image droit selon la ligne l'. Une fois le point correspondant \mathbf{x} trouvé dans l'image de gauche, la zone de recherche 2D dans l'image de droite se réduit à une seule ligne. Pour une paire stéréo redressée, cette ligne est horizontale et la recherche de correspondance devient une recherche 1D le long de cette même ligne de balayage.
2. Matrice essentielle et matrice fondamentale
En se concentrant uniquement sur la pose extrinsèque, considérons les coordonnées calibrées et normalisées (\mathbf{x},\mathbf{x}'). La direction de visée de la caméra de gauche vers ce point est \mathbf{x}, et dans le repère de la caméra de droite, elle est R\mathbf{x}. Le fait que le vecteur de translation \mathbf{t} et les deux lignes de visée soient coplanaires peut s'écrire sous la forme d'un produit triple scalaire nul :
Ici, [\mathbf{t}]_\times est la forme matricielle antisymétrique du produit vectoriel.
Cette matrice E=[\mathbf{t}]_\times R est appelée la matrice essentielle. E n'est pas une matrice 3\times3 arbitraire ; elle est de rang 2, avec la contrainte que ses deux valeurs singulières non nulles soient égales. La projection par décomposition en valeurs singulières (SVD) sous la forme E=U\operatorname{diag}(s,s,0)V^\mathsf{T} permet de retrouver cette contrainte physique.
Dans le cas non calibré, utilisant directement les coordonnées brutes des pixels,
et F est la matrice fondamentale. F\tilde{\mathbf{x}} donne la ligne épipolaire l' dans l'image de droite, et F^\mathsf{T}\tilde{\mathbf{x}}' donne la ligne l dans l'image de gauche. Comme F absorbe les paramètres intrinsèques, il est pratique pour la vérification géométrique des paires d'images, mais l'interprétation de la pose en unités métriques nécessite un étalonnage.
| Matrice | Coordonnées | Quantité connue requise | Contrainte de forme | Résultat | Utilisation principale |
|---|---|---|---|---|---|
| F | Coordonnées homogènes brutes des pixels | Aucune | Rang 2, 7 degrés de liberté | Lignes épipolaires | SfM non étalonné, vérification de correspondance |
| E | K^{-1}\tilde{\mathbf{x}} | K des deux caméras | Rang 2, valeurs singulières (s,s,0) | Direction de R et \mathbf{t} | VO, SLAM, stéréo calibrée |
| H | Pixels sur un plan ou en rotation pure | Modèle plan ou de rotation | Généralement 8 degrés de liberté | Déformation planaire | Plans AR, assemblage d'images |
Signification de l'épipôle
Le point où le centre de la caméra droite se projette sur l'image gauche est l'épipôle gauche \mathbf{e}, satisfaisant F\mathbf{e}=0. De même pour F^\mathsf{T}\mathbf{e}'=0. Si l'épipôle se situe à l'intérieur de l'image, les lignes épipolaires convergent radialement, indiquant un déplacement approximatif de la caméra vers l'avant ou vers l'arrière. S'il se situe à l'infini, les lignes sont presque parallèles, indiquant un mouvement proche du mouvement latéral. Il s'agit d'un diagnostic utile, mais une mauvaise estimation peut à elle seule produire une position d'épipole anormale ; il ne faut donc jamais déterminer le mouvement à partir de ce seul critère.
3. Estimation de la matrice à partir des correspondances : l'algorithme à 8 points
Une seule correspondance entre \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} et \tilde{\mathbf{x}}'=(u',v',1)^\mathsf{T} impose une contrainte linéaire sur les neuf éléments de F. Avec \mathbf{f}=\operatorname{vec}(F), par exemple :
En empilant huit correspondances ou plus dans la matrice A, l'algorithme à 8 points sélectionne le plus petit vecteur singulier de A\mathbf{f}=0. Son nom provient du fait que huit correspondances satisfont le nombre de degrés de liberté, mais dans le cas réel, avec du bruit, on utilise beaucoup plus de points avec la méthode des moindres carrés.
Résoudre le problème avec les coordonnées brutes des pixels entraîne un mauvais conditionnement dû à la magnitude des valeurs des coordonnées. L'algorithme normalisé à 8 points de Hartley normalise l'ensemble de points de chaque image par des transformations de similarité T,T' afin que le centroïde soit nul et la distance moyenne \sqrt{2}, résout le problème dans cet espace et reconstruit finalement :
De plus, la décomposition en valeurs singulières (SVD) de l'image résultante F et l'annulation de la plus petite valeur singulière imposent un rang de 2. Cela peut sembler un détail d'implémentation mineur, mais cela affecte fortement la stabilité de la solution.
Une fois calibré, le même principe permet de construire une estimation initiale de E à partir des correspondances normalisées. Cependant, la solution linéaire à partir de 8 points ne satisfait pas automatiquement la contrainte de valeur singulière plus forte de la matrice essentielle. On calcule E=U\operatorname{diag}(\sigma_1,\sigma_2,\sigma_3)V^\mathsf{T} et on la remplace par \operatorname{diag}((\sigma_1+\sigma_2)/2,(\sigma_1+\sigma_2)/2,0) pour la projeter.
4. L'algorithme à 5 points : Réduction de l'échantillon minimal lors de l'étalonnage
La matrice essentielle possède 5 degrés de liberté. L'algorithme à 5 points est un solveur minimal qui trouve un ensemble fini de candidats E à partir de 5 correspondances ; la méthode de Nistér substitue le noyau par des contraintes polynomiales, énumérant jusqu'à 10 solutions réelles candidates. La dérivation et l'implémentation sont plus complexes que pour l'algorithme à 8 points, mais l'avantage de n'avoir besoin que de 5 points par hypothèse RANSAC est considérable.
Étant donné le ratio d'inliers w, la probabilité qu'un tirage unique ne contienne que des inliers est w^s, la probabilité d'échec p et la taille minimale de l'échantillon s, l'estimation du nombre d'itérations requises est :
Pour w=0.5,p=0.01 : s=8 nécessite environ 1177 itérations, tandis que s=5 en nécessite environ 145. En pratique, la comparaison n'est pas directe, car des méthodes comme PROSAC effectuent des tirages d'échantillons par ordre de qualité de correspondance et s'arrêtent de manière adaptative. Néanmoins, l'intérêt de l'algorithme à 5 points est évident dans les environnements à faible ratio d'inliers.
OpenCV (fichier findEssentialMat) fournit RANSAC/LMEDS ainsi que des implémentations de la famille à 5 points, tandis que (fichier recoverPose) gère la décomposition des candidats et le contrôle de hiérarchie. Pour les développeurs, il est plus important de vérifier que l'entrée est non déformée/normalisée et de connaître les unités de coordonnées utilisées par le seuillage que de se fier à l'appellation « algorithme à 5 points ».
5. RANSAC : Utilisation de la géométrie en tenant compte des valeurs aberrantes
Les algorithmes de correspondance tels que SIFT, ORB, SuperPoint et LoFTR génèrent des erreurs dues aux textures répétées, aux réflexions, aux grilles répétitives et à l'occlusion. L'ajustement de (fichier F) à toutes les correspondances par la méthode des moindres carrés permet à un petit nombre d'erreurs de compromettre l'ensemble de la matrice. RANSAC procède comme suit :
-
Sélection aléatoire d'un ensemble minimal de correspondances et construction d'une hypothèse (F ou E).
-
Calculez le résidu pour chaque correspondance et marquez comme points de référence ceux situés dans la zone définie par un seuil.
-
Conservez l'hypothèse la plus probable, ou celle présentant le meilleur score de robustesse.
-
Réestimez en utilisant tous les points de référence finaux et affinez le résultat par optimisation non linéaire si nécessaire.
Il est déconseillé de seuiller la contrainte épipolaire uniquement à l'aide de l'erreur algébrique \mathbf{x}'^\mathsf{T}F\mathbf{x}, car celle-ci dépend de l'échelle de F. En pratique, on utilise généralement la distance de Sampson.
Il s'agit d'une approximation du premier ordre de l'erreur géométrique : une mesure normalisée de la distance entre chaque correspondance et sa ligne épipolaire. Le seuil, exprimé en coordonnées de pixels, dépend de la résolution de l'image, de la précision de la localisation des points clés, de la distorsion résiduelle et du flou. Il n'existe pas de valeur universelle de « 1 px ». Le seuil est ajusté en visualisant l'histogramme des résidus et la distribution spatiale des points de référence sur l'image.
OpenCV propose également une estimation robuste basée sur la famille USAC. En combinant un échantillonnage ordonné selon la qualité, une optimisation locale et des contrôles de dégénérescence, cette méthode peut être plus rapide et plus stable que RANSAC classique. Cependant, le rejet statistique des valeurs aberrantes repose toujours sur l'hypothèse que « la majorité suit un mouvement statique unique de corps rigide ». Si la majeure partie de l'image représente un véhicule ou une personne en mouvement, il est nécessaire d'ajouter des informations supplémentaires telles que des masques sémantiques, la segmentation du mouvement, une centrale inertielle (IMU) ou la profondeur.
6. Décomposition de E en pose et choix du candidat approprié
Pour une image E=U\operatorname{diag}(s,s,0)V^\mathsf{T} corrigée, l'utilisation de
donne des candidats de rotation R=UWV^\mathsf{T} ou UW^\mathsf{T}V^\mathsf{T}, et des candidats de translation \pm U_{:,3}. Il existe 4 combinaisons de signe et de rotation. L'important ici est que la contrainte à deux vues assure à elle seule la cohérence algébrique de toutes les projections avec la même valeur de E.
La sélection repose sur la verticalité (profondeur positive). Pour chaque candidat, triangulez un petit nombre de points internes et sélectionnez celui qui donne Z>0 pour le plus grand nombre de points dans les deux images de la caméra. Vérifiez également si le déterminant de la matrice de rotation est égal à +1, si l'erreur de reprojection est faible et si la parallaxe est suffisante. Une limitation importante à retenir : \mathbf{t} ne peut être reconstruit qu'à une direction près. La mise à l'échelle de \mathbf{t} et de tous les points 3D par le même facteur ne modifie pas la projection. Une base stéréo connue, l'odométrie des roues, une centrale inertielle, un objet de taille connue ou un système GNSS peuvent fournir l'échelle.
7. Triangulation : De deux rayons à un point 3D
L’équation de projection \mathbf{x}\times(P\mathbf{X})=\mathbf{0} produit deux équations indépendantes par vue. La triangulation DLT résout le système linéaire A\mathbf{X}=0, obtenu par superposition des deux vues, via la décomposition en valeurs singulières (SVD) ; c’est simple, et la fonction triangulatePoints d’OpenCV est proche de cette forme. Par exemple, en considérant \mathbf{p}_{ij}^\mathsf{T} comme la j-ième ligne de P_i, un point (u_i,v_i) donne :
Avant de diviser par la composante homogène finale, vérifiez que w n’est pas extrêmement petit.
Pour une paire stéréo horizontale redressée, c’est plus intuitif. Avec la disparité d=u_L-u_R (la différence de coordonnées horizontales entre la gauche et la droite), la distance focale f et la ligne de base B,
L'erreur de profondeur est approximativement de \delta Z\simeq \frac{Z^2}{fB}\delta d. Plus la distance est grande et plus la distance focale ou la ligne de base est courte, plus l'erreur de profondeur due à une même erreur de disparité d'un pixel est importante. Par conséquent, plutôt que de simplement ajouter le point au nuage de points, il est préférable d'utiliser l'angle de triangulation, la disparité, l'erreur de reprojection et la profondeur positive comme critères de qualité.
La triangulation linéaire ne fournit qu'une estimation initiale ; elle ne minimise pas correctement le bruit de l'image. L'ajustement de faisceaux, qui optimise conjointement les poses de la caméra P_i et les points \mathbf{X}_j, résout :
où \rho est une fonction de perte robuste telle que Huber ou Cauchy, et \pi est la division perspective. C'est pourquoi les reconstructions utilisant COLMAP, Theia ou Ceres Solver gagnent en précision. Pour fixer la liberté de jauge, placez la première caméra à l'origine et, si nécessaire, fixez une échelle connue.
8. Choix entre géométrie épipolaire et homographie
Lorsque chaque point de la scène se trouve sur un seul plan \pi ou que la caméra subit une rotation pure, la correspondance entre les images est bien décrite par une homographie 3×3 \tilde{\mathbf{x}}'\sim H\tilde{\mathbf{x}}. Si le modèle est calibré avec la normale du plan \mathbf{n} et la distance d,
En rotation pure, le terme de translation disparaît et H=KRK^{-1}. Pour une affiche, un bureau, une façade d'immeuble ou une séquence vidéo panoramique sur une scène lointaine, H devient un excellent modèle et constitue le choix naturel pour les ancrages planaires AR et l'assemblage d'images.
Cependant, l'estimation de F/E à partir de données uniquement planaires peut laisser apparaître de nombreux points non concordants, sans pouvoir séparer clairement la structure 3D de la translation. Inversement, forcer une scène générale non plane à se réduire à un seul H entraîne une déformation incohérente des objets proches et éloignés. Lors de la mise en œuvre, estimez F/E et H avec RANSAC et comparez les résidus, le nombre de points expliqués, la distribution des points et la parallaxe après reconstruction. Si vous décidez d'accepter un modèle uniquement en fonction du nombre de correspondances, vous risquez de privilégier un grand mur plan ou un plan dominant le centre de l'image.
| Situation | Premier candidat | Résultat | Avertissements |
|---|---|---|---|
| Calibré, 3D général, translation présente | E + algorithme à 5 points | Pose relative, profondeur clairsemée | Échelle indéterminée, instable à faible parallaxe |
| Paire d'images non calibrées | F + algorithme normalisé à 8 points | Lignes épipolaires, vérification de la correspondance | Ne pas interpréter la pose physique sans K |
| Quasi-planaire, affiche, bureau | H + algorithme à 4 points | Déformation planaire, candidats de pose planaire | Pas de profondeur hors plan |
| Rotation pure / panorama | H | Alignement et rotation de l'image | Translation et profondeur non observables |
| Carte 3D connue avec observations 2D | PnP + RANSAC | Pose absolue | Dépend de la qualité et de l'échelle de la carte |
9. L'étalonnage n'est pas une étape de prétraitement — il fait partie intégrante du modèle
Capturez une grille en damier, Charuco ou AprilTag à différentes distances, inclinaisons et positions d'image pour estimer K et les coefficients de distorsion. La distorsion radiale de Brown-Conrady s'exprime approximativement, pour un rayon normalisé r^2=x^2+y^2, comme suit :
Pour les objectifs grand angle et fisheye, n'imposez pas un modèle de distorsion sténopé standard ; choisissez le modèle fisheye d'OpenCV ou un modèle adapté à l'objectif utilisé. Même lorsque l'erreur moyenne de reprojection de l'étalonnage est faible, la structure d'erreur peut varier sur les bords de l'image, à différentes focales, en fonction de la température, de la mise au point ou de la résolution.
Avant de procéder au traitement de deux vues, vérifiez que les valeurs d'étalonnage ont été obtenues dans les mêmes conditions de résolution, de recadrage et de zoom numérique que votre capture actuelle. Il est facile de confondre l'estimation de E à partir de points normalisés via undistortPoints avec l'estimation de F à partir d'images non déformées. Vérifiez toujours si une API utilise la focale, le point principal et la distorsion en interne, ou si elle attend des coordonnées déjà corrigées. Pour un système stéréo, en plus des paramètres intrinsèques des deux caméras, déterminez la pose relative avec stereoCalibrate et redressez les lignes épipolaires à l'horizontale avec stereoRectify.
10. Un pipeline minimal avec OpenCV
Voici le squelette permettant d'obtenir la pose relative et un ensemble de points 3D clairsemés et filtrés selon leur qualité, à partir de deux images d'une caméra monoculaire calibrée. Il utilise ORB pour l'extraction de caractéristiques, mais celui-ci peut être remplacé par SIFT ou un algorithme d'apprentissage automatique en fonction des conditions de capture. En pratique, il est également conseillé d'enregistrer l'exposition, les objets en mouvement et la synchronisation temporelle.
import cv2 as cv
import numpy as np
# K, dist are values calibrated for this capture resolution and lens
orb = cv.ORB_create(nfeatures=3000)
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
matches = cv.BFMatcher(cv.NORM_HAMMING).knnMatch(des1, des2, k=2)
good = [m for m, n in matches if m.distance < 0.75 * n.distance]
p1 = np.float32([kp1[m.queryIdx].pt for m in good])
p2 = np.float32([kp2[m.trainIdx].pt for m in good])
# threshold is in pixel units. Decide it from the residual distribution, not an initial guess.
E, mask = cv.findEssentialMat(p1, p2, K, method=cv.USAC_MAGSAC,
prob=0.999, threshold=1.0)
in1, in2 = p1[mask.ravel() != 0], p2[mask.ravel() != 0]
count, R, t, pose_mask = cv.recoverPose(E, in1, in2, K)
# P1, P2 are for normalized coordinates. Scale is arbitrary, so t's length is not a physical unit.
n1 = cv.undistortPoints(in1.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
n2 = cv.undistortPoints(in2.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
P1 = np.hstack([np.eye(3), np.zeros((3, 1))])
P2 = np.hstack([R, t])
X4 = cv.triangulatePoints(P1, P2, n1.T, n2.T)
X = (X4[:3] / X4[3]).T
# Further filter by positive depth in both views, reprojection error, and triangulation angle.
z1 = X[:, 2]
z2 = (R @ X.T + t).T[:, 2]
valid = (z1 > 0) & (z2 > 0) & np.isfinite(X).all(axis=1)
Cet exemple transmet directement les pixels bruts et K à findEssentialMat. Cependant, si la distorsion est significative, transmettez d'abord les points normalisés depuis undistortPoints et utilisez ensuite l'API correspondante. Il est également erroné de considérer la valeur \mathbf{t} renvoyée par recoverPose comme une « distance parcourue ». Les applications nécessitant une échelle doivent la contraindre à l'aide d'une ligne de base connue, d'un VIO, de l'odométrie des roues, d'un capteur de profondeur ou d'une méthode similaire.
COLMAP implémente l'extraction de caractéristiques, la mise en correspondance, la vérification géométrique, la cartographie incrémentale et l'ajustement de faisceaux au sein d'un pipeline intégré. Pour les petits jeux de données, vous pouvez examiner le modèle de caméra et la reconstruction via l'interface graphique. En ligne de commande, le choix du modèle de caméra, la gestion de la focale EXIF, la stratégie de mise en correspondance (exhaustive/séquentielle/par arbre de vocabulaire) et l'intervalle de temps entre les paires d'images déterminent la précision et le coût de calcul. Après la reconstruction, vérifiez non pas le nombre de points, mais le nombre d'images enregistrées, l'erreur moyenne de reprojection, le nombre d'observations par image et les lacunes dans le nuage de points.
11. Causes de défaillance courantes et leur diagnostic
Faible parallaxe, absence de ligne de base
En cas de mouvement vers l'avant, de scène éloignée ou d'intervalle d'images court, il est possible d'obtenir des correspondances sans obtenir de profondeur. Si les lignes épipolaires semblent correctes mais que l'angle de triangulation est proche de zéro, il est préférable de ne pas forcer la mise à jour de la profondeur. Les solutions principales consistent à espacer davantage les images clés, à capturer des observations avec un mouvement latéral ou à utiliser un système stéréo avec une ligne de base connue.
Rotation pure ou dégénérescence planaire
Lors de panoramiques ou dans un champ de vision ne contenant qu'un mur, H est un indicateur pertinent. Un nombre élevé de points correspondants pour E n'indique pas nécessairement qu'une translation a été observée. Enregistrez la compétition entre H et E et effectuez un contrôle sur le taux de profondeur positive et la parallaxe médiane après triangulation. Dans le suivi d'affiches en réalité augmentée, il ne s'agit pas d'un échec, mais du choix du modèle approprié.
Incohérences, motifs répétitifs, reflets
Les fenêtres, les carreaux, les étagères, les écrans LCD et les surfaces d'eau produisent des descripteurs locaux similaires. Combinez le test de ratio, la correspondance des plus proches voisins et le RANSAC géométrique, et vérifiez si les points conformes sont répartis sur toute l'image. Les images miroir et les objets transparents invalident l'hypothèse de corps rigide et de réflectance lambertienne ; aucun réglage de seuil ne pourra donc résoudre le problème.
Objets dynamiques et mouvements multiples
RANSAC ne sélectionne que le mouvement le plus important. Si l'arrière-plan est minoritaire, il peut estimer le mouvement d'une voiture par erreur. Selon votre application, vous pouvez exclure sémantiquement les personnes et les véhicules, regrouper les flux optiques, effectuer une estimation multi-modèles ou aligner les données avec la profondeur/IMU.
Distorsion de l'objectif, effet de rolling shutter, asynchronisme
L'utilisation d'un bord grand angle non corrigé engendre une courbure systématique des lignes épipolaires. En cas d'effet de rolling shutter lors de mouvements rapides, l'orientation change au sein d'une même image ; par conséquent, une seule valeur de E n'est qu'une approximation. Même un léger décalage dans le temps d'exposition gauche/droite d'une paire stéréo produit une disparité parasite pour les objets en mouvement. Il est recommandé d'utiliser un obturateur global, une exposition courte, un modèle de synchronisation par rangée, une correction basée sur une centrale inertielle (IMU) et une synchronisation matérielle.
Erreurs numériques et de repères
Mélanger les coordonnées de pixels et les coordonnées normalisées, confondre les coordonnées monde-caméra et caméra-monde pour R,\mathbf{t}, inverser l'ordre des points gauche/droite et oublier de mettre à jour K après le redimensionnement d'une image sont autant d'erreurs courantes. Ne vous fiez pas aveuglément aux valeurs estimées : superposez les correspondances et les lignes épipolaires, et automatisez les vérifications de profondeur positive dans les deux caméras, l’erreur de reprojection, ainsi que les valeurs de \det R=1 et R^\mathsf{T}R\simeq I.
12. Métriques d’évaluation pratiques et liste de contrôle de conception
Ne considérez pas l’estimation à deux vues comme réussie simplement parce qu’« une matrice a été renvoyée ». Le nombre de correspondances est faussé par la quantité de texture, et l’erreur moyenne seule peut masquer quelques points positifs. L'enregistrement des données suivantes par image permet d'identifier ultérieurement l'étape de rupture dans la chaîne capteur/correspondance/estimation de pose :
-
Nombre de détections, nombre de réussites au test de ratio, nombre/ratio d'éléments RANSAC pertinents, distribution sur les cellules de la grille d'image
-
Distance de Sampson médiane et percentile supérieur, erreur de reprojection, taux de profondeur positive, distribution des angles de triangulation
-
Nombre de modèles supportés et score de robustesse pour H par rapport à E/F, et motif d'acceptation ou de rejet du modèle
-
Amplitude de la rotation estimée, continuité temporelle de la direction de translation, cohérence avec un capteur externe mis à l'échelle
-
Temps d'exposition, gain, vitesse angulaire de l'IMU, décalage temporel gauche/droite, métrique de flou, ratio du masque d'image
Pour la recherche ou l'évaluation de produits avec données de référence disponibles, indiquez séparément l'erreur de rotation relative, l'erreur de direction de translation, l'ATE/RPE de la trajectoire et l'erreur de profondeur absolue/relative. La translation monoculaire à deux vues étant ambiguë en termes d'échelle, précisez si l'erreur est calculée après normalisation ou après alignement Sim(3). Plutôt que d'exclure les images défaillantes du calcul de la moyenne, indiquer la dégénérescence ou la condition visuelle sous laquelle chaque défaillance s'est produite permet de communiquer plus fidèlement les limites du système.
13. Développements récents : L'apprentissage a-t-il remplacé la géométrie ?
Les points clés et descripteurs basés sur l'apprentissage (SuperPoint), les correspondances grossières-fines (LoFTR) et l'estimation de correspondance à usage général (LightGlue et similaires) peuvent générer davantage de correspondances potentielles que les descripteurs classiques en cas de faible texture ou de changement de point de vue. Cependant, les correspondances renvoyées par un réseau peuvent toujours être erronées, et les ambiguïtés physiques liées au mouvement de la caméra, aux plans, à l'effet de rolling shutter et à l'échelle persistent. En pratique, pour la SfM/SLAM, une configuration hybride qui vérifie la sortie d'un système de correspondance appris par une estimation robuste de E/F/H et un ajustement de faisceaux reste la solution privilégiée.
Plus largement, les représentations de scènes neuronales/explicites telles que NeRF et le 3D Gaussian Splatting exploitent également la cohérence entre plusieurs vues. Ces méthodes permettent une synthèse de vues inédites et attrayantes, mais sont sensibles à la qualité de la pose de la caméra et de la géométrie d'observation. De nombreuses implémentations s'initialisent avec des poses dérivées de COLMAP. La recherche se poursuit sur l'estimation conjointe de la correspondance, de la profondeur, de la segmentation, des données inertielles et des modèles temporels pour les environnements dynamiques, réfléchissants et à grande échelle.
Ainsi, la décision d'adopter un modèle plus récent ne doit pas se fonder uniquement sur l'augmentation du nombre de correspondances par rapport à ORB. Elle doit également prendre en compte la distribution des points pertinents après l'estimation, l'erreur de pose, la latence de calcul, les exigences GPU, les défaillances hors des conditions d'entraînement et les licences. La géométrie n'est pas une étape de prétraitement obsolète ; elle demeure le vérificateur qui compare la sortie d'un modèle appris à la structure 3D réelle.
14. Conclusion
La géométrie épipolaire est le cadre qui permet d'établir des correspondances entre deux images, en passant de « points d'apparence similaire » à des « points explicables par un seul mouvement de caméra ». Si les paramètres intrinsèques sont connus, on procède à la pose relative via E=[\mathbf{t}]_\times R. Sinon, vérifiez les lignes épipolaires et les correspondances avec F. L'algorithme à 8 points est fondamental pour la compréhension et l'initialisation, l'algorithme à 5 points est un solveur minimal efficace pour une estimation robuste, RANSAC est le mécanisme qui prend en compte les valeurs aberrantes, et la triangulation associée à l'ajustement de faisceaux permet la modélisation 3D.
Cependant, en l'absence de parallaxe, en présence d'un plan, d'une rotation pure, de nombreux objets en mouvement ou d'une forte distorsion/asynchronie, la matrice retournée ne garantit pas une profondeur ou une translation physiquement significative. La conception de la sélection du modèle par homographie, la gestion des conditions d'étalonnage, la vérification de l'erreur de reprojection et de la profondeur positive, ainsi que la fusion avec une échelle externe dans un pipeline unique sont les éléments qui permettent d'obtenir une vision par ordinateur reproductible.
Une ligne épipolaire détermine-t-elle une correspondance de manière unique ?
Elle restreint la recherche à une ligne.
Les preuves visuelles doivent toujours permettre de localiser le point, et la répétition ou l'occlusion peuvent engendrer une ambiguïté. ## Références (Sources primaires et documentation officielle) - [Hartley & Zisserman, Géométrie multivue en vision par ordinateur (page officielle de l'auteur)](https://www.robots.ox.ac.uk/~vgg/hzbook/) - [Longuet-Higgins, Un algorithme informatique pour la reconstruction d'une scène à partir de deux projections (1981, Royal Society)](https://royalsocietypublishing.org/doi/10.1098/rspa.1981.0136) - [Hartley, Plaidoyer pour l'algorithme à huit points (IEEE TPAMI, 1997)](https://doi.org/10.1109/34.601246) - [Nistér, Une solution efficace au problème de la pose relative à cinq points (IEEE TPAMI, 2004)](https://doi.org/10.1109/TPAMI.2004.17) - [Fischler & Bolles, Consensus par échantillonnage aléatoire] (Communications of the ACM, 1981) - [OpenCV — Tutoriel sur la géométrie épipolaire] - [OpenCV — calib3d : findEssentialMat / recoverPose] - [Documentation officielle COLMAP] - [Schönberger & Frahm, Structure-from-Motion Revisited (CVPR 2016)] - [Sarlin et al., LightGlue (ICCV 2023)]
Commentaires
Veuillez vous connecter.
Aucune entrée pour le moment.