Structure à partir du mouvement (SfM) : comment des photos qui se recouvrent deviennent de la 3D

La structure à partir du mouvement (SfM, de l'anglais structure from motion) est la première moitié de la photogrammétrie. À partir d'un ensemble de photos qui se recouvrent, prises de positions différentes, sans aucune trace de l'endroit où se trouvait la caméra, elle retrouve la position de chaque caméra et un ensemble épars de points 3D de la scène. Tout ce qui suit dans une chaîne de cartographie — le nuage dense, la surface, l'orthomosaïque — est construit sur ce résultat : la qualité de l'étape SfM fixe donc le plafond du reste.

STREAM Capture est en cours de développement et n'est pas encore publié. À sa sortie, il arrivera dans le même téléchargement que son programme frère STREAM Terrain ; le téléchargement actuel contient STREAM Terrain.

Ce que signifie structure à partir du mouvement

Le nom dit ce qui se passe. La structure est la forme 3D de la scène ; le mouvement est la caméra qui se déplace entre les photos. Bougez la tête de côté : les objets proches se décalent davantage devant le fond que les objets lointains ; ce décalage, appelé parallaxe, porte la profondeur. Le SfM mesure comment des milliers de points se décalent d'une photo à l'autre et remonte aux positions 3D qui l'expliquent.

L'ancienne photogrammétrie exigeait des caméras à étalonnage connu et des positions levées avant de commencer. Le SfM supprime cette exigence : il calcule ensemble les positions des caméras, l'objectif et les points 3D, à partir des seules photos. C'est pourquoi il fonctionne avec la caméra ordinaire d'un drone et un dossier d'images en vrac, et pourquoi son résultat brut a une échelle et une orientation arbitraires tant que les positions des caméras ou l'appui au sol ne le rattachent pas à un système de coordonnées.

Les étapes d'une chaîne SfM

Le logiciel trouve des points distinctifs dans chaque photo, reconnaît les mêmes points dans les photos voisines, écarte les appariements qui ne peuvent pas appartenir à une même scène rigide, puis construit le réseau de caméras vers l'extérieur à partir d'une paire initiale bien connectée. Chaque point vu sur plusieurs photos est triangulé et une compensation finale affine le tout d'un seul coup.

Les étapes de la structure à partir du mouvement, ce qui se passe dans chacune et ce qui tourne mal d'habitude
ÉtapeCe qui se passeCe qui tourne mal d'habitude
Détection de caractéristiquesDes points distinctifs sont trouvés dans chaque photo et décrits pour pouvoir être reconnus sur d'autres photosTrop peu de texture : eau calme, neige fraîche, photos floues
AppariementLes descriptions sont comparées entre photos qui se recouvrent pour retrouver deux fois le même pointUne texture répétitive, comme des tuiles ou des rangs de culture, donne de faux appariements
Vérification géométriqueLes appariements qui ne s'accordent pas avec une scène rigide sont écartésObjets en mouvement, ou forte parallaxe sur un terrain raide
Reconstruction initialeUne paire de photos bien connectée donne les premières caméras et les premiers points ; d'autres photos s'y ajoutentUn réseau de photos faible : des groupes de photos qui ne se rattachent jamais au reste
TriangulationChaque point vu sur plusieurs photos est placé en 3D là où ses rayons de visée se croisentDes photos prises presque du même endroit donnent une profondeur imprécise
Compensation par faisceauxCaméras, paramètres d'objectif et points sont ajustés ensemble pour s'accorder avec chaque mesureUn modèle d'objectif inadapté, ou une mauvaise focale de départ

La compensation par faisceaux : d'où viennent les chiffres

La compensation par faisceaux est l'étape finale et la plus importante. Elle déplace ensemble les caméras, les paramètres d'objectif et les points 3D pour rendre la somme des carrés des erreurs de reprojection aussi petite que possible. L'erreur de reprojection qu'elle indique, en pixels, mesure l'accord des photos et du modèle calculé ; notre article sur l'erreur de reprojection explique comment la lire.

Comme la compensation ne travaille que sur des mesures d'image, un résultat SfM n'a ni échelle, ni position, ni nord réels tant que quelque chose ne les apporte pas : positions de caméra d'un drone RTK ou PPK, points d'appui, ou les deux. La façon dont la carte terminée s'accorde ensuite avec le terrain est une autre question, à laquelle répondent des points de contrôle indépendants.

SfM, photogrammétrie et SLAM

Le SfM est une étape de la photogrammétrie, pas un synonyme. La photogrammétrie se poursuit à partir du résultat SfM par l'estimation de profondeur dense, la construction de surfaces, l'orthorectification et un contrôle de précision sur des points indépendants. Un logiciel SfM est donc la partie alignement d'un logiciel de photogrammétrie.

Le SfM n'est pas non plus du SLAM. Le SLAM fonctionne en temps réel sur un flux ordonné d'images ou de données de capteurs, en général sur un robot en mouvement, et sacrifie un peu de précision à la vitesse. Le SfM travaille hors ligne sur un ensemble de photos en vrac et peut tout optimiser globalement, ce qui convient à la cartographie, où la précision compte plus que la vitesse.

Ce dont le SfM a besoin et où il échoue

Le SfM a besoin de recouvrement, de photos nettes et de texture visible : chaque point du terrain doit apparaître sur plusieurs photos prises de positions différentes, et le logiciel doit pouvoir distinguer un endroit d'un autre. Il faut au moins trois photos qui se recouvrent pour commencer et un vrai site en demande bien davantage. Il peine sur l'eau calme et la neige fraîche, sur les textures répétitives, sur ce qui bouge entre les photos et sur les caméras à obturateur roulant, qui saisissent la scène ligne par ligne pendant que le drone se déplace.

Dans STREAM Capture, c'est l'étape Alignement. Elle extrait et apparie des caractéristiques SIFT sur le GPU, calcule les caméras et l'objectif, et écrit les poses de caméra, un nuage épars et l'erreur de reprojection en pleine résolution. Les positions lues dans les photos servent d'a priori, un réseau de photos faible est nommé dans le rapport au lieu d'être masqué, et l'auto-étalonnage de l'objectif est rapporté avec son incertitude.

Questions fréquentes

Qu'est-ce que la structure à partir du mouvement (SfM) ?

Une méthode qui retrouve la position de chaque caméra et un ensemble épars de points 3D à partir des seules photos qui se recouvrent, en exploitant la façon dont les points se décalent d'une photo à l'autre quand la caméra bouge. C'est l'étape d'alignement de la photogrammétrie.

Comment fonctionne la structure à partir du mouvement ?

Elle détecte des points distinctifs dans chaque photo, les apparie entre les photos, écarte les faux appariements, construit le réseau de caméras à partir d'une paire bien connectée, triangule les points et affine caméras, objectif et points ensemble par une compensation par faisceaux.

Quelle différence entre SfM et photogrammétrie ?

Le SfM est la première étape : il donne les positions des caméras et un ensemble épars de points. La photogrammétrie couvre toute la chaîne et ajoute la profondeur dense, les surfaces, les orthophotos et les contrôles de précision sur des points indépendants.

Quelle différence entre SfM et SLAM ?

Le SLAM fonctionne en temps réel sur un flux ordonné d'images ou de données de capteurs, en général sur un robot en mouvement. Le SfM travaille hors ligne sur un ensemble de photos en vrac et optimise globalement, ce qui convient à la cartographie.

Le SfM a-t-il besoin de points d'appui ?

Pas pour construire le modèle : le SfM fonctionne avec les seules photos, mais le résultat a une échelle et une position arbitraires. Les positions de caméra d'un drone RTK ou PPK, des points d'appui ou les deux le placent sur le terrain, et des points de contrôle indépendants mesurent la qualité de ce placement.

Pourquoi mon alignement SfM échoue-t-il ou laisse-t-il des caméras de côté ?

Le plus souvent : trop peu de recouvrement, photos floues, surfaces répétitives ou sans caractéristiques comme l'eau calme, ou éléments qui bougent entre les photos. Consultez la carte de recouvrement et l'avertissement de réseau faible après le traitement, puis ajoutez des photos là où la couverture est mince.

Bientôt disponible

Voyez le résultat de l'étape Alignement : poses de caméra, nuage épars et erreur de reprojection

STREAM Capture est en cours de développement et n'est pas encore publié. À sa sortie, il arrivera dans le même téléchargement que son programme frère STREAM Terrain ; le téléchargement actuel contient STREAM Terrain.

Logiciel de traitement d'images de drone