Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.11.2012, 08:01

3x3-Matrix - Transformationen extrahieren

Das ist jetzt zwar kein Grafik/Spieleproblem, aber da die mathematischen Grundlagen die gleichen sind, frage ich einfach mal hier:

Ich habe eine Kamera, die mir ein Bild von einem flachen Objekt aufnimmt. Dieses Objekt wird immer in gleichem Abstand und immer parallel zur Kamera abgelegt - allerdings gerne mal verschoben.

Mittels OpenCV mache ich nun auf dieses Bild eine Mustererkennung und erhalte als Ergebnis eine 3x3-Matrix mtrx[3][3], welche alle möglichen Transformationen enthält, um von meiner Referenz auf die aktuelle Lage des erkannten Musters zu kommen. Da das aufgezeichnete Objekt aber immer parallel zur Kamera liegt, sind nur die XY-Verschiebung und die Rotation um die Z-Achse interessant, alles andere müssen zwangsläufig Ungenauigkeiten durch Kamera/Objektiv/Rundungsfehler sein.

Meine XY-Verschiebung finde ich in mtrx[0][2] und mtrx[1][2]. Aber wie komme ich an die Verdrehung (Rotation um die Z-Achse) heran? Die zurückgelieferte 3x3-Matrix kann ich ja nicht direkt verwenden, da ich dann die Verzerrungen/Ungenauigkeiten mit ins Zielsystem übernehmen würde.

Danke schon mal!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

14.11.2012, 08:13

OpenCV hat eine Funktion "RQDecomp3x3", die das kann.
"Rodrigues2" sollte auch gehen.

Aber mal ne andere Frage:
Hast du die Kamera kalibriert? Damit kannst du geometrische Verzerrungen durch die Linse komplett entfernen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

14.11.2012, 08:15

Habe ich ein Déjà vu oder hast Du die selbe Frage schon mal vor genau 4 Wochen gestellt?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

14.11.2012, 08:28

Hast du die Kamera kalibriert? Damit kannst du geometrische Verzerrungen durch die Linse komplett entfernen.


Ähm jein...ich will hier fehlertolerant bleiben, so dass der Krempel bei geringen Genauigkeitsanforderungen und/oder bei Usern, die nicht kalibrieren auch noch funktioniert.

5

14.11.2012, 08:29

Habe ich ein Déjà vu oder hast Du die selbe Frage schon mal vor genau 4 Wochen gestellt?


Ähm nein, da war es eine 3x2 Matrix und die hatte das Problem mit den zusätzlichen Verzerrungen nicht (anderes Problem und andere Datenquelle) :-)

Werbeanzeige