|
|
|
Aus Punkten Position eines Körper bestimmen - aber wie? |
|
| Bootsucher |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 08.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2012, 14:13
Titel: Aus Punkten Position eines Körper bestimmen - aber wie?
|
 |
Hallo zusammen,
ich bin neu hier und hoffe mal das ich im richtigen Unterforum gelandet bin.
Ich habe ein kleines Problem:
Ich habe einen Körper, der durch 4 Punkte(Merkmale) auf seiner Oberfläche in seiner Position/Lage eindeutig beschrieben wird.
Nun werden die Punkte verschoben, gedreht (mit ihnen der Körper)etc. und liegen jetzt aber nicht mehr so, dass der Körper genau "reinpasst", sondern etwas verzerrt.
Jetzt möchte ich aus dieses Punkten möglichst genau, wieder mein X_state_neu bestimmen, also Postion und Lage meines Körpers.
Eigentlich sollte das ja nicht schwer sein, weil ich ja "nur" mein X_state_neu finden will für das der Abstand der seiner Punkte zu den "alten" Punkten minimal wird, aber irgendwie habe ich ein Brett vorm Kopf wie das konkret geht.
Hoffe es hat jemand eine Idee.
|
|
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2012, 14:56
Titel: Re: Aus Punkten Position eines Körper bestimmen - aber wie?
|
 |
| |
 |
|
| Bootsucher hat Folgendes geschrieben: |
Nun werden die Punkte verschoben, gedreht (mit ihnen der Körper)etc. und liegen jetzt aber nicht mehr so, dass der Körper genau "reinpasst", sondern etwas verzerrt. |
Dieses ist mir irgendwie nicht klar, wenn ich in eine Körper durch sagen wir mal entsprechende Vektoren in einem Raum beschreibe, dann diese Vektoren durch eine affine Abbildung (eine Drehung ist eine affine Abbildung) verändere, dann verändert sich der Körper nicht. Eine Drehung im R^3 wird durch eine Matrix beschrieben und diese kann ich passend ermitteln. Analog verhält sich eine Translation bzw Skalierung und es lassen sich natürlich Rotation, Translation und Skalierung verketten, was sich dann letztendlich als Matrixoperationen abbilden lässt
Wenn ich nun annehme, dass sich Dein Körper durch Vektoren beschreiben lässt (sprich durch die Eckpunkte), dann kann ich auf diese Vektoren eine Translations-, Skalierungs- und/oder Rotationsmatrix anwenden und der Körper wird sich nicht verändern. Bei der Skalierung würde sich das Volumen z.B. verändern, aber die Verhältnisse des Körpers bleiben erhalten. Ebenso wird aus einem Quader auch nicht auf einmal eine Kugel.
Wenn Dein Koordinatensystem bekannt ist, dann kannst Du aus Source- und Zielposition der Vektoren die Rotationsmatrix bestimmen bzw. wenn Du die Vektoren der Source kennst und den/die entsprechenden Winkel kannst Du den Zielkörper bestimmen. Dies ist auch unter http://de.wikipedia.org/wiki/Koordinatentransformation zu finden.
Vielleicht kannst Du das Problem etwas detaillierter beschreiben
|
|
|
|
| Bootsucher |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 08.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2012, 15:29
Titel:
|
 |
| |
 |
|
Danke für die schnelle Antwort!
vielleicht hätte ich mein Problem genauer beschreiben sollen:
der Körper hat, wie beschrieben, mehrer Merkmale auf der Oberfläche. Diese sind z.B. zu einem Rechteck angeordnet. Wenn sich der Körper jetzt irgendwie bewegt, bewegen sich auch die Merkmale entsprechend mit.
Körper mit Merkmalen vor Bewegung:
Nun mache ich mit 2 (simulierten) Kameras Bilder vom Körper bzw. seinen Merkmalen und bekomme dadurch (nach ein bisschen rechnen - Rückprojektion etc) die Positon der Merkmale in 3D Koordinaten. Diese liegen nun aber so im Raum, dass das ursprüngliche Muster nicht mehr direkt reinpasst, dies kommt durch Verzerrungen während Rückabbildung.
Nun habe ich mein Verzerrtes Muster aus den Merkmalen und möchte daraus jetzt herausfinden, wie die Position meines Körpers hierzu am besten passt.
Merkmal-Postionen(3D) aus Fotos berechnet nach der Bewegung
Berechnung der passenden Körperposition:
Bedeutet im Endeffekt: wie muss mein Körper liegen, damit seine "realen" Merkmale mit ihrem Muster möglichst genau zu den verzerrten aus dem Kamerabildern berechneten Punkten/Muster passen?
Die beste Position/Lage meines Körpers müsste ich (m.W.) gefunden haben, wenn der Abstand der Foto-Merkmale zu dem Modell-Merkmal minimal ist. - müsste eigentlich auf ein least-squares-Verfahren hinauslaufen.
hoffe mein Problem ist jetzt verständlicher.
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2012, 16:17
Titel:
|
 |
| |
 |
|
Das ist doch genau der Ansatz, den ich beschrieben habe.
Ich habe "irgendwelche" Vektoren und transformiere diese mit Hilfe einer Matrix.
Ob diese Vektoren nun den Körper beschreiben oder eben das Muster was auf der Fläche des Körpers liegt, ist unerheblich. Wenn ich einen Vektor [x y z] mit einer Rotationsmatrix der Form [1 0 0; 0 cos(a) -sin(a); 0 sin(a) cos(a)] rotiere, dann ist der Vektor immer noch der gleiche, aber eben um den Winkel a um die X-Achse rotiert.
Deine Kameras sind im Raum durch ihre Positionen bekannt, d.h. ich kann Kamera a durch die Operation M in Kamera a' überführen und analog gilt dies für die Punkte, d.h. a' = Ma, wenn ich nun das Objekt o einmal durch Kamera a aufnehme und einmal durch Kamera a', dann gilt auch hier genau dieses. Damit wird Dein Muster, dass Du durch die Vektoren 1,2,3,4 beschrieben ist mit Hilfe der Matrix M verändert. Wenn nun die Kamera a zum Zeitpunkt t das Objekt aufnimmt und die Kamera a' zum Zeitpunkt t+1, dann kann ich das M bestimmen (ggf. ist das M eine Verkettung von verschiedenen Matrizen, wenn man noch unterschiedliche Kamerapositionen berücksichtigen muss)
Zum Problem: Ich kann aus den Daten von Source und Ziel die Matrix M bestimmen, denn sie muss es muss ja für alle Deine Vektoren gelten, d.h. Dein Vektor 1 muss mit der gleichen Matrix abgebildet werden um 1' zu erhalten, ebenso wie 2 bzw 2'
Was mir aber hier scheint, da Du von einem "least square" sprichst, dass Du das Muster an sich vergleichen willst und nicht dessen Lage im Raum. Sprich Du möchtest wissen wie ähnlich / unähnlich sind zwei Muster. In einem solchen Fall würde man eben das Muster "normalisieren" und dann die Distanz zwischen zwei normierten Mustern bestimmen. Das ist aber zunächst etwas völlig anderes als die Position innerhalb des Raumes
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|