Verfasst am: 04.11.2011, 15:32
Titel: Transformation von Punkten in unterschiedlichen Grids
Hallo
Ich stehe gerade vor einem geometrischen Problem:
Vorhanden sind zwei 3D Grids, ein irreguläres, ein reguläres, bei denen jeweils die Koordinaten der Knotenpunkte vorhanden sind. Nun sollen Punkte vom irregulären ins reguläre Grid transformiert werden.
Hierzu kann jeder Punkt einem konvexen Polygon (im einfachsten Fall Würfel) zugeordnet werden. Die Frage ist nun, wie man möglichst robust die einzelnen Punkte transformiert.
Einfaches Beispiel:
Sei der Ausgangspunkt der Schwerpunkt eines Wüfels (Grid 1) und sei Grid 2 ein Würfel gleichen Ausmaßes mit einer rein translatorischen Verschiebung, dann ist Punkt x mit eben dieser Verschiebung gesucht.
wenn es sich um eine reine Translation handelt, würde ich folgendes probieren:
- Subtraktion eines Punktes im 1. Grid vom entsprechenden Punkt im 2. Grid --> Verschiebungsvektor
- Addition des Verschiebungsvektors zum irregulären Grid.
Falls das Problem damit nicht beantwortet ist, wäre insbesondere interessant, ob es sich um Transformationen einer bestimmten Art (wie x2 = A x1 + b) handelt oder ob es generische Transformationen sind.
leider sind es keine reinen Translationen, sondern nicht-rigide Deformationen, was jedoch bleibt sind Ausrichtung und Anzahl der Knotenpunkte. Die Knotenpunkte kommen aus einer Bildregistrierung.
Was eine generische Transformation ist, konnte ich bisher nicht in Erfahrung bringen. Vielleicht ein weiteres Beispiel (zum Verständnis in 2D):
Sei x ein Punkt innerhalb eines Rechtecks (alle 4+1 Koordinaten bekannt), wo würde dieser Punkt in einem (verschobenen und rotierten) Trapez (erneut 4 Eckpunkte + Zusammenhang zu den Rechteckspunkten bekannt) liegen.
weiterer Vorschlag:
man weiß ja, wie das reguläre Gitter verschoben wird. Nun könnte man mit griddata3 jeweils die X, Y und Z Koordinaten interpolieren und auf die Weise die neuen Punkte für das irreguläre Gitter erhalten, etwa so:
vielen Dank für dein Bemühen. Entweder kann ich deinem Vorschlag nicht ganz folgen oder es ist noch nicht ganz rüber gekommen, was ich erreichen will (siehe auch das Bild im Anhang).
Viele Grüße,
Daniel
P.S.: Garnicht so einfach, mit dem Touchpad zu pinseln
Schau dir mal das Beispiel in der Doku zu griddata3 an.
Bei dir ist es nur noch komplizierter: du hast zu jedem Punkt nämlich nur nur ein w, sondern drei, nämlich die x-, y- und z-Koordinaten des neuen Punktes.
Code:
figure(1) % Punkte auf regulärem Gitter
x_reg =
y_reg =
z_reg =
% Punkte auf irregulärem Gitter
x_irreg =
y_irreg =
z_irreg =
figure(2) % Neue Punkte für reguläres Gitter
x_neu_reg =
y_neu_reg =
z_neu_reg =
Funktioniert im Beispiel zumindest für 2D, sollte also 3D auch kein Problem sein. Vielen Dank Harald! Ich habe den Einsatz von griddata komplett fehlinterpretiert.
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
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.