Docker
Chrome 79 sous Linux
Lorsque des reconstructions partielles sont générées, il semble y avoir un problème dans la sortie d'alignement de reconstruction.
Selon les sources d'OpenSfM, chaque reconstruction partielle à partir de chaque sous-modèle est jetée dans un gros problème d'ajustement de faisceau, puis sortie sous la forme d'un ensemble de transformées de similitude qui sont appliquées à chaque reconstruction partielle puis enregistrées dans le fichier de reconstruction aligné.
En réalité cependant, il semble qu'une seule reconstruction partielle soit mise à jour. Je n'arrive pas à comprendre pourquoi.
Je m'attendrais à ce que chaque point et chaque plan de chaque reconstruction partielle soient modifiés au moins à la magnitude 1e-6, mais cela ne semble être vrai que pour une seule reconstruction partielle dans chaque sous-modèle. Toutes les autres reconstructions partielles sont identiques dans une comparaison côte à côte pour chaque plan et chaque point.
(En passant, je serais intéressé à comprendre pourquoi la transformation de similarité est générée pour créer une transformation rigide, plutôt que d'appliquer simplement la sortie du bundle à la reconstruction dans son ensemble. Je m'attendrais à ce que cela crée des limites plus lisses entre les sous-modèles? manipulation?)
Déclenchez l'étape align_submodels dans OpenSfM sur un ensemble de données divisé en plusieurs sous-modèles qui contient également plusieurs reconstructions partielles. Cela devrait être facilement réalisable en réduisant le nombre minimum d'entités et en définissant une division sur un jeu de données avec un nombre suffisant d'entrées.
Je pense que cela pourrait être un bug plutôt qu'une amélioration.
À partir des sources, toutes les reconstructions partielles doivent toujours être alignées, mais je ne peux pas nécessairement dire que c'est même l'index 0 partiel que nous utilisons actuellement dans la division / fusion qui est en fait mis à jour dans l'alignement - ce qui implique que nous pourrions dans ces cas fusion résultant en des nuages non alignés.
Je l'ai trouvé. Apparemment, la méthode itertools.groupby utilisée dans apply_transformations (transformations) dans OpenSfM doit recevoir une liste déjà triée, sinon elle ne regroupera pas correctement les entrées. Puisque la reconstruction est chargée pour chaque groupe, les reconstructions non alignées seront rechargées et écraseront tous les composants précédemment alignés.
Soumettre un PR à 099 et OpenSfM mapillaire dans un peu. : tada:
Fantastique! Merci d'avoir regardé dans ce @linusmartensson
Pas de problème! C'est une base de code amusante. :cadeau:
Maintenant fusionné à la fois dans OpenDroneMap / OpenSfM et mapillary / OpenSfM, donc fermeture. :)
Commentaire le plus utile
Pas de problème! C'est une base de code amusante. :cadeau:
Maintenant fusionné à la fois dans OpenDroneMap / OpenSfM et mapillary / OpenSfM, donc fermeture. :)