Docker
Chrome 79 unter Linux
Wenn Teilrekonstruktionen erzeugt werden, scheint es ein Problem bei der Ausgabe der Rekonstruktionsausrichtung zu geben.
Gemäß den OpenSfM-Quellen wird jede Teilrekonstruktion von jedem Untermodell in ein großes Bündelanpassungsproblem geworfen, dann als eine Reihe von Ähnlichkeitstransformationen ausgegeben, die auf jede Teilrekonstruktion angewendet und dann in der ausgerichteten Rekonstruktionsdatei gespeichert werden.
In Wirklichkeit scheint jedoch nur eine Teilrekonstruktion aktualisiert zu werden. Ich kann nicht herausfinden warum.
Ich würde erwarten, dass jeder Punkt und jede Aufnahme in jeder Teilrekonstruktion mindestens in der Größenordnung 1e-6 modifiziert wird, aber dies scheint nur für eine einzelne Teilrekonstruktion in jedem Teilmodell zu gelten. Alle anderen Teilrekonstruktionen sind in einem Nebeneinander-Vergleich für jede Aufnahme und jeden Punkt identisch.
(Als Randnotiz wäre ich daran interessiert zu verstehen, warum die Ähnlichkeitstransformation generiert wird, um eine starre Transformation zu erstellen, anstatt nur die Bündelausgabe auf die Rekonstruktion als Ganzes anzuwenden. Ich würde erwarten, dass dies glattere Grenzen zwischen Submodellen schafft? Ausreißer Handhabung?)
Lösen Sie die Stufe align_submodels in OpenSfM für ein Dataset aus, das in mehrere Untermodelle aufgeteilt ist und auch mehrere Teilrekonstruktionen enthält. Dies sollte leicht zu erreichen sein, indem die minimale Anzahl von Features verringert und eine Aufteilung für ein Dataset mit einer ausreichenden Anzahl von Einträgen festgelegt wird.
Ich denke, dies könnte eher ein Fehler als eine Verbesserung sein.
Aus den Quellen sollten alle Teilrekonstruktionen immer ausgerichtet werden, aber ich kann nicht unbedingt sagen, dass sogar der Index 0-Teil, den wir derzeit beim Teilen / Zusammenführen verwenden, tatsächlich in der Ausrichtung aktualisiert wird - was impliziert, dass wir in diesen Fällen möglicherweise a sehen Zusammenführen führt zu nicht ausgerichteten Wolken.
Fand es. Anscheinend muss der Methode itertools.groupby, die in apply_transformations (transformations) in OpenSfM verwendet wird, eine bereits sortierte Liste übergeben werden, sonst werden Einträge nicht korrekt gruppiert. Da die Rekonstruktion für jede Gruppe geladen wird, werden die nicht ausgerichteten Rekonstruktionen neu geladen und alle zuvor ausgerichteten Komponenten überschrieben.
Senden einer PR an 099 und Mapillary OpenSfM in Kürze. : tada:
Fantastisch! Vielen Dank, dass Sie sich dieses @linusmartensson angesehen haben
Kein Problem! Es ist eine lustige Codebasis. :Geschenk:
Jetzt in OpenDroneMap / OpenSfM und Mapillary / OpenSfM zusammengeführt, also schließen. :) :)
Hilfreichster Kommentar
Kein Problem! Es ist eine lustige Codebasis. :Geschenk:
Jetzt in OpenDroneMap / OpenSfM und Mapillary / OpenSfM zusammengeführt, also schließen. :) :)