Odm: Während align_submodels wird nur eine Teilrekonstruktion pro Submodell ausgerichtet

Erstellt am 2. März 2020  ·  5Kommentare  ·  Quelle: OpenDroneMap/ODM

Wie haben Sie OpenDroneMap installiert? (Docker, nativ, ...)?

Docker

Was ist Ihr Browser und Betriebssystem? (Kopieren Sie die Ausgabe von https://www.whatismybrowser.com/ / fügen Sie sie ein.)

Chrome 79 unter Linux

Worin besteht das Problem?

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.

Was sollte das erwartete Verhalten sein? Wenn es sich um eine Funktionsanforderung handelt, beschreiben Sie bitte detailliert die Änderungen, die Ihrer Meinung nach am Code vorgenommen werden sollten, und zitieren Sie Dateien und Zeilen, in denen nach Möglichkeit Änderungen vorgenommen werden sollten.

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?)

Wie können wir das reproduzieren? (Welche Schritte haben Sie unternommen, um das Problem auszulösen? Welche Parameter verwenden Sie für die Verarbeitung? Wenn möglich, fügen Sie bitte eine Kopie Ihres Datensatzes bei, der auf Google Drive oder Dropbox hochgeladen wurde. Seien Sie detailliert.)

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.

bug help wanted

Hilfreichster Kommentar

Kein Problem! Es ist eine lustige Codebasis. :Geschenk:
Jetzt in OpenDroneMap / OpenSfM und Mapillary / OpenSfM zusammengeführt, also schließen. :) :)

Alle 5 Kommentare

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. :) :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen