Genaue Messung des relativen Abstands zwischen einer Reihe von Herstellungen (Augmented Reality Application)

StackOverflow https://stackoverflow.com/questions/8379902

Frage

Nehmen wir an, ich habe einen Satz von 5 Markern. Ich versuche, die relativen Abstände zwischen jedem Marker mit einem erweiterten Reality -Framework wie zu finden, wie z. Artoolkit. In meiner Kamera -Feed zeigen Sie die ersten 20 Frames, die mir die ersten 2 Markierungen nur zeigen, damit ich die Transformation zwischen den 2 Markierungen erarbeiten kann. Die zweiten 20 Frames zeigen mir nur die 2. und 3. Marker und so weiter. Die letzten 20 Frames zeigen mir die 5. und 1. Marker. Ich möchte eine 3D -Karte der Markerpositionen aller 5 Marker aufbauen.

Meine Frage ist, dass es bei geringer Qualität des Video -Feeds Ungenauigkeiten mit den Entfernungen geben wird.

Mein naiver Ansatz wäre es, den ersten Marker als Basispunkt zu verwenden, von den ersten 20 Frames nehmen den Mittelwert der Transformationen ein und platzieren den 2. Marker und so weiter für den 3. und 4.. Für den 5. Marker platzieren Sie ihn zwischen dem 4. und 1., indem Sie es in die Mitte des Mittelwerts der Transformationen zwischen dem 5. und 1. und dem 4. und 5. Platz setzen. Dieser Ansatz, der mir der Meinung ist, hat jedoch eine Voreingenommenheit in Richtung der ersten Markierungsplatzierung und berücksichtigt die Kamera nicht mehr als 2 Markierungen pro Rahmen.

Letztendlich möchte ich, dass mein System die Karte der x -Anzahl von Markern erarbeiten kann. In einem bestimmten Rahmen bis zu X-Markern können aufgrund der Bildqualität nicht-systemische Fehler auftreten.

Jede Hilfe zu dem richtigen Ansatz für dieses Problem wäre sehr geschätzt.

Bearbeiten: Weitere Informationen zum Problem:

Nehmen wir an, die Realworld -Karte lautet wie folgt:

enter image description here

Nehmen wir an, ich erhalte 100 Messwerte für jede der Transformationen zwischen den Punkten, die durch die Pfeile im Bild dargestellt werden. Die realen Werte werden über den Pfeilen geschrieben.

Die Werte, die ich erhalten habe, haben einen Fehler (werden angenommen, dass sie einer Gaußschen Verteilung über den tatsächlichen Wert folgen). Zum Beispiel könnte eine der für Marker 1 bis 2 erhaltenen Messwerte x: 9,8 y: 0,09 sein. Angesichts der Tatsache, dass ich all diese Lesungen habe, wie schätze ich die Karte. Das Ergebnis sollte idealerweise so nahe wie möglich an den tatsächlichen Werten sein.

Mein naiver Ansatz hat das folgende Problem. Wenn der Durchschnitt der Transformationen von 1 auf 2 leicht von der Platzierung von 3 liegt, kann der Wert von 2 bis 3 sehr genau sein. Dieses Problem wird unten angezeigt:

enter image description here

Die Grüns sind die tatsächlichen Werte, die Schwarzen sind die berechneten Werte. Die durchschnittliche Transformation von 1 zu 2 beträgt x: 10 y: 2.

War es hilfreich?

Lösung

Sie können a verwenden kleinsten Quadrate Methode, um die Transformation zu finden, die die beste Passform für alle Ihre Daten gibt. Wenn Sie nur den Abstand zwischen den Markern wollen, ist dies nur der Durchschnitt der gemessenen Entfernungen.

Unter der Annahme, dass Ihre Markerpositionen festgelegt sind (z. B. zu einem festen starren Körper) und Sie ihre relative Position möchten, können Sie einfach ihre Positionen aufzeichnen und durchdurchschnittlich. Wenn es das Potenzial hat, einen Marker mit einem anderen zu verwechseln, können Sie sie von Frame zu Rahmen verfolgen und die Kontinuität jedes Markers zwischen seinen beiden Perioden verwenden, um seine Identität zu bestätigen.

Wenn Sie erwarten, dass sich Ihr starrer Körper bewegt (oder wenn der Körper nicht starr und so weiter ist), ist Ihr Problem erheblich schwieriger. Zwei Marker gleichzeitig reichen nicht aus, um die Position eines starren Körpers (für das drei erforderlich ist) zu reparieren. Beachten Sie jedoch, dass Sie bei jedem Übergang fast zur gleichen Zeit den Ort des alten Markers, des neuen Markers und des kontinuierlichen Markers haben. Wenn Sie für jede Ihrer Markierungen bereits einen erwarteten Standort auf dem Körper haben, sollte dies eine gute Schätzung einer starren Pose alle 20 Frames liefern.

Wenn sich Ihr Körper bewegt, erfordert die beste Leistung im Allgemeinen eine Art Modell für seine Dynamik, mit der seine Pose im Laufe der Zeit verfolgt werden sollte. Bei einem dynamischen Modell können Sie a verwenden Kalman -Filter die Verfolgung machen; Kalman-Filter sind gut an die Integration Ihrer beschriebenen Daten.

Durch die Einbeziehung der Standorte Ihrer Marker als Teil des Kalman State Vector können Sie möglicherweise in der Lage sein, ihre relativen Standorte aus reiner Sensordaten (das anscheinend Ihr Ziel zu sein scheint) abzuleiten können, anstatt diese Informationen a priori zu verlangen. Wenn Sie in der Lage sein möchten, eine willkürliche Anzahl von Markern effizient zu bewältigen, müssen Sie möglicherweise eine clevere Mutation der üblichen Methoden entwickeln. Ihr Problem scheint so konzipiert zu sein, dass Lösung durch herkömmliche Zersetzungsmethoden wie sequentielle Kalman -Filterung vermieden wird.


Bearbeiten Sie laut den Kommentaren unten:

Wenn Ihre Markierungen eine vollständige 3D -Pose ergeben (anstelle einer 3D -Position), erleichtern die zusätzlichen Daten die Aufrechterhaltung genauer Informationen über das von Ihnen verfolgte Objekt. Die obigen Empfehlungen gelten jedoch weiterhin:

  • Wenn das markierte Körper festgelegt ist, verwenden Sie eine Anpassung der kleinsten Quadrate aller relevanten Rahmendaten.
  • Wenn sich der markierte Körper bewegt, modellieren Sie seine Dynamik und verwenden Sie einen Kalman -Filter.

Neue Punkte, die mir in den Sinn kommen:

  • Der Versuch, eine Kette relativer Transformationen zu verwalten, ist möglicherweise nicht der beste Weg, um sich dem Problem zu nähern. Wie Sie bemerken, ist es anfällig für akkumulierte Fehler. Es ist jedoch auch nicht unbedingt ein schlechter Weg, solange Sie die erforderliche Mathematik in diesem Rahmen implementieren können.
  • Insbesondere eine Anpassung der kleinsten Quadrate sollte perfekt mit einer Kette oder einem Ring mit relativen Posen funktionieren.
  • In jedem Fall wird eine gute Schätzung der Unsicherheit Ihrer Messungen für eine gute Schätzung der Unsicherheit Ihrer Messungen die Leistung verbessern.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top