|
Autor |
Rotationsachse und Rotationszentrum aus Bildern ermitteln |
|
rm-rStern
Neu  Dabei seit: 16.03.2018 Mitteilungen: 4
 | Themenstart: 2018-04-09
|
Hallo liebe Matheplanet-Bewohner,
Ich knobele im Moment an folgendem Problem und wollte wissen ob sich vielleicht schon mal jemand damit beschäftigt hat und mir evtl. helfen kann.
Aufbau:
Ein Kalibrierungsbrett wird auf einem Drehteller positioniert und von einer stationären Kamera aus in verschiedenen (Drehteller-)Positionen fotografiert.
Dadurch, dass die Geometrie der Brett-Elemente bekannt ist, lassen sich zu jedem Bild zugehörige 4x4 Matrizen errechnen, welche die Transformation vom Kamera-Sensor zum jeweiligen Bild (oder andersrum) beschreibt.
Die 4x4 Matrizen bestehen aus einer 3x3 Drehmatrix (1:3,1:3) und (1:3,4) beschreibt eine Translation. Anders ausgedrückt beschreibt (1:3,4) die Position des Kalibrierungsbretts relativ zur Kamera.
Gegeben:
Gegeben sind nun also mehrere (mind. 3) solcher 4x4 Matrizen.
Gesucht:
Rotationsachse und zugehöriges Zentrum auf dem Drehteller.
(Das Kalibrierungsbrett muss nicht zwangsweise planar auf dem Teller liegen!)
Mein momentaner Ansatz:
Angenommen ich habe drei (4x4) Matrizen A, B und C.
1. Ich bestimme die Abbildung
\(f = B A^{-1}\) und von dieser suche ich dann den zum EW 1 gehörenden Eigenvektor. Dieser ist meine Rotationsachse, welche ich folgend mit R bezeichne.
2. Berechne den Winkel \(\alpha\) zwischen der Rotationsachse R und der kanonischen Z-Achse Z.
3. Drehe alle BoardCenter (1:3,4) um die Achse \(Z\times R\) um den Winkel \(\alpha\). Somit sollten alle BoardCenters ungefähr auf der gleichen Z-Höhe liegen.
4. Führe ein Kreis-Fitting durch diese rotierten Punkte durch (deshalb auch mind. 3 Matrizen nötig)
(ich benutze https://de.mathworks.com/matlabcentral/fileexchange/22643-circle-fit--pratt-method-)
5. Rotiere den erhaltenen Punkt zurück. Damit erhalte ich mein gewünschtes RotationsCenter
Evaluation:
Ich habe mir ein Evaluationsscript geschrieben, welches mir zufällige Scenarios generiert (mit zufälliger Positionierung des Kalibrierungsbrettes, zufälliger Anzahl an Aufnahmen > 3, zufälliger Drehwinkel zwischen den Aufnahmen und mit der Möglichkeit normalverteilte Fehler einzustreuen).
Wenn ich keine, bzw. sehr sehr kleine Störungen induziere, dann erhalte ich stets ein sehr exaktes Ergebnis, jedoch sobald ich die Störungen größer mache explodieren die Fehler. Sprich: Diese Methode scheint alles andere als stabil zu sein.
Jetzt meine Fragen an euch:
F1: Mein Ansatz erscheint mir mittlerweile sehr umständlich. Kennt daher jemand einen eleganteren (und vorallem stabileren) Ansatz?
F2: Ist es vlcht sogar möglich das ganze mit nur 2 beliebigen Aufnahmen des Kalibrierungsbrettes zu bewerkstelligen? Wenn ja, wie? (Das Kreis-Fitting scheidet dann ja aus)
Viele Grüße
rm
|
Profil
|
rm-rStern
Neu  Dabei seit: 16.03.2018 Mitteilungen: 4
 | Beitrag No.1, vom Themenstarter, eingetragen 2018-04-23
|
UPDATE:
Ich habe mittlerweile ein 3D circle fitting, mittels SVD implementiert (dabei habe ich mich an diesem schönen Blog-Beitrag orientiert.
Diese Implementierung scheint um einiges stabiler zu sein, als mein oben beschriebener Ansatz.
Mir bleibt jedoch noch die Frage:
Gibt es für das Problem einen besseren /eleganteren Lösungsansatz?
Viele Grüße
rm
|
Profil
|
rm-rStern wird per Mail über neue Antworten informiert. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|