|
D-RSPhoenix |
Forum-Anfänger
|
|
Beiträge: 33
|
|
|
|
Anmeldedatum: 31.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.06.2012, 10:26
Titel: Würfel konstruieren
|
|
|
|
|
Hallo,
Ich hab da ein kleines Problem bei dem mir ein wenig die Ideen fehlen.
Und zwar will ich einen beliebig dimensionierten und im Raum liegenden Quader konstruieren. Als Beispiel habe ich erst mal einen Würfel, den habe ich abgescannt, sodass ich Punkte auf seiner Oberfläche habe (5 Seiten, die Unterseite war logischerweise verschattet). Aus diesen Punkten habe ich Ebenen gerechnet, deren Parameter ich in Form der Koordinatengleichung habe. Jetzt will ich die Koordinaten der 8 Eckpunkte berechnen.
Meine aufwendig zu berechnende Idee wäre, dass ich alle 5 Ebenen miteinander verschneide und damit die Schnittgeraden errechne. Diese Geraden würde ich dann erneut verschneiden, um die 8 Schnitt-/Eckpunkte zu erhalten.
Problem dabei ist, dass wenn der Scan der Punkte nicht 100%ig ist, es sein kann das die Ebenen sich nicht mit exakt 90grad aufeinander stehen und sich damit die Schnittgeraden der Ebenen nicht mehr schneiden.
Zudem ist das ziemlich viel Rechnerei, die ich aus Geschwindigkeitsgründen gerne vermeiden würde. Hat jemand eine bessere Idee?
Für die, die Probleme habe sich das vorzustellen:
Ich von einem Spielwürfel, beliebig im 3D Raum liegend, nur die Koordinaten der "Augen" aus denen ich eine Ebene rechnen kann will aber die Koordinaten der Ecken haben.
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 20.06.2012, 13:48
Titel: Re: Würfel konstruieren
|
|
Hallo D-RSPhoenix,
Das mag zwar auf dem Papier viel Rechnerei sein, es wird aber in einem modernen Prozessor nur wenige Millisekunden benötigen. Wo liegt dann das Problem?
Man benötigt mindestens 3 Punkte um eine Ebene zu bestimmen. Wenn Du wirklich nur die Augen hast, wird die bei 1 und 2 scheitern.
Gruß, Jan
|
|
|
D-RSPhoenix |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 33
|
|
|
|
Anmeldedatum: 31.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2012, 15:30
Titel:
|
|
an den Augen wirds nich fehlen...
druchschnittlich hab ich pro seite 1000 Augen ;P
Wie würdest du dass denn machen wenn du für jede seite des würfels den Normalen vektor in einer matrix hast?
primitiv beispiel:
Model=[0 0 0 0 1 2;0 0 1 2 0 0;1 2 0 0 0 0]; %Normalen Vektoren spaltenweise in der Matrix
Ich würde gern jede Art von Schleife wenn möglich vermeiden weil ich die Daten ich echtzeit haben will (max laufzeit auf dualcore 2,2ghz 100ms)
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 20.06.2012, 23:36
Titel:
|
|
Hallo D-RSPhoenix,
Bitte beschreibe die Aufgabenstellung nochmal. Aus 6 Einheitsvektoren kann man nicht die Position der 8 Ecken bestimmen.
Wenn Du nur ein paar Punkte pro Seite hättest, ließe sich ein Modell fitten, bei dem Du die Seitenlängen und die Orthogonalität der Kanten vorgibts. Wenn Du also nur die genaue Position des Würfels bestimmen möchtest, würdest Du die Position des Mittelpunktes und die 3 Winkel im Raum so anpassen, dass der Abstand der Punkte auf den Flächen zu den gemessenen Punkten minimal wird.
Gruß, Jan
|
|
|
D-RSPhoenix |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 33
|
|
|
|
Anmeldedatum: 31.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.06.2012, 11:45
Titel:
|
|
|
|
|
Hm... warum soll das nicht gehen?
Das ist einfach ein achsparalleler Einheitswürfel der um den Vektor (1,1,1) aus dem Ursprung verschoben wurde.
Die Eckpunkte sind also (1,1,1); (1,2,1); (2,1,1); (2,2,1); (1,1,2); (1,2,2); (2,1,2); (2,2,2)
Der einfachste Fall wie ein Würfel liegen kann.
Die Ebenen von achsparallelen Würfeln haben immer Einheitsvektoren als Normalenvektoren, das sollte also berechenbar sein.
Aufgabe ist:
Ich habe 6 Ebenen (in der Form Ax+By+Cz=D) von denen immer 2 parallel sind und die anderen 4 senkrecht zu diesen 2 stehen. (Eben einen Würfel bzw Quader)
Und jetzt will ich:
1. Diesen Würfel Plotten.
2. Die Parameter die die Lage des Würfels im Raum eindeutig beschreiben (ich dachte da an die 8 Eckpunkte.
3. Eine Abstandsberechnung aus den Parametern von 2. zwischen beliebigen liegenden Punkten (auch innerhalb des Würfels) und der Oberfläche des Würfels.
Um Missverständnisse zu vermeiden der Quader muss nicht achsparallel sein, kann es aber sein.
@ Jan mit dem Fitting liegst du schon mal sehr gut
Ich will in eine Punktwolke einen Quader mit dem RANSAC fitten.
Da ich im Moment aber noch keine Funktion die einen Quader bestimmt wollte ich mein Problem auf Ebenen runterbrechen die kann ich fitten.
|
|
|
flashpixx |
Forum-Guru
|
|
Beiträge: 355
|
|
|
|
Anmeldedatum: 19.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.06.2012, 12:17
Titel: Re: Würfel konstruieren
|
|
D-RSPhoenix hat Folgendes geschrieben: |
Und zwar will ich einen beliebig dimensionierten und im Raum liegenden Quader konstruieren. |
Jan S hat Folgendes geschrieben: |
Man benötigt mindestens 3 Punkte um eine Ebene zu bestimmen. |
Nein das stimmt so nicht. In einem n-dimensionalen Raum benötige ich n Vektoren um eine (Hyper)Ebene zu bestimmen.
Ich denke die Darstellung sollte sich mit Hilfe von http://de.wikipedia.org/wiki/Hesses.....malform#Verallgemeinerung besser beschreiben lassen bzw die Aussage
http://de.wikipedia.org/wiki/Hyperebene
Zitat: |
Ist der zugrunde liegende Vektorraum endlichdimensional mit Dimension , so sind die (affinen) Hyperebenen gerade die (affinen) Unterräume mit Dimension . |
wohl der sinnvollste Ansatz. Um den den Hypercube zu plotten benötigst Du bei mehr als 3 Dimensionen aber ein Projektionsverfahren
|
|
|
D-RSPhoenix |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 33
|
|
|
|
Anmeldedatum: 31.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.06.2012, 12:39
Titel:
|
|
Oh mein Gott ich hab glaub mit meiner unbedachten Aussage eine Tür in die falsche Richtung aufgestoßen ;P
Mit beliebig dimensioniert meinte ich, dass die Seitenlängen des Quaders beliebig lang (>0) sein können.
Ich würde mich wenn irgendmöglich gerne auf den 3D-Raum beschränken. Weil ich da schon genug Probleme hab ;P
Es sei denn ihr habt mir jetzt die super einfache und unglaublich schnelle Lösung für mein Problem wenn ich auf irgendein R^n gehe.
Aber da würde ich dann an die Grenzen meiner Intelligenz stoßen ;P
Womit ich sagen will, dass ihr mir dann schon sehr genau erklären müsstet, wie das geht, weil ich dazu absolut keine Vorkenntnisse mitbringe.
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 21.06.2012, 17:13
Titel: Re: Würfel konstruieren
|
|
Hallo flashpixx,
D-RSPhoenix spricht im letzten Satz der Frage explizit von einem 3D-Raum. Aber auch in jedem Hyperraum benötigt man mindestens 3 Punkte für eine Ebene, um genau zu sein sogar mehr. Und in 2D gibt es keine "Ebene".
Hallo D-RSPhoenix,
Nun schreibst Du zusätzlich, dass es ein Achsen-paralleler Einheitswürfel ist. Die Länge der Kanten ist bereits mehr Information als nur die Normalen-Vektoren der Flächen zu haben.
Ich verstehe die Aufgabe aber immer noch nicht. Was möchtest Du konkret, also physikalisch machen?
Allerdings schreibst Du dann wieder, dass der Quader nicht achsenparallel sein muss. Das verwirrt mich.
Gruß, Jan
|
|
|
flashpixx |
Forum-Guru
|
|
Beiträge: 355
|
|
|
|
Anmeldedatum: 19.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.06.2012, 18:19
Titel:
|
|
@Jan: Der Ansatz meinerseits bezog sich auf das "beliebig dimensioniert", was ja nicht bedeutet, dass man im R^3 ist.
Aber wenn es letztendlich nur um einen wie auch immer gearteten Quader im R^3 geht, ist es natürlich schon etwas leichter.
Was ich allerdings an der Frage nicht verstehe, wenn ich http://de.wikipedia.org/wiki/RANSAC.....gehensweise_und_Parameter lese, dann sehe ich nicht, wifür ein Quader benötigt wird, da es sich hier um eine Heuristik handelt und selbst die Parameter adaptiv bzw. iterativ mit bestimmt werden können
|
|
|
D-RSPhoenix |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 33
|
|
|
|
Anmeldedatum: 31.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.06.2012, 08:50
Titel:
|
|
|
|
|
Das Beispiel war für einen achsparallelen Würfel, weil der sich am einfachsten synthetisch hat herstellen lassen bzw weil man sich da das Ergebnis noch leicht vorstellen kann...
Physikalisch scanne ich einen Quader (ein Stahlblock beliebiger Maße) und erhalten dabei Punkte auf jeder Seite (allerdings keine auf den Kanten)
in diese Punktwolke will ich jetzt einen Quader fitten, um seine Position und Größe im Raum festzustellen.
Da ich aber im Moment nicht in der Lage bin einen Quader als einen geschlossenen Körper in Koordinatenform zu beschreiben aber eine Ebene schon zerlege ich den Quader 6 Ebenen, die ich miteinander verschneiden, will um die Koordinaten der 8 Eckpunkte zuerhalten.
Und wenn ich die hab muss ich mir noch was Nettes einfallen lassen, wie ich den Abstand von Punkten zu der Quaderoberfläche berechne.
Die Abstände brauch ich nämlich für meine Genauigkeitsanalyse.
@ flashpixx gut erkannt der RANSAC bestimmt die Parameter der Funktion, die ich ihm geben, dh konkret: wenn ich ihm die Ebene in Koordinatenform geben ( Ax+By+Cz=D) bestimmt er mir für die vorliegenden Punkte A,B,C,D.
Was mich immer noch vor das Problem stellt, dass ich entweder eine Koordinatenform für den Quader, direkt, brauch oder ihn indirekt über das Zerlegen in 6 Ebenen bestimmen muss....
Also immer noch das gleiche Problem...
Beschreibung: |
Blau meine synthetischen Daten, grün die gefunden Ebenen. Gesucht Koords des Quaders und Abstände aller Punkte zur Oberfläche des Quaders |
|
Download |
Dateiname: |
Unbenannt.JPG |
Dateigröße: |
106.63 KB |
Heruntergeladen: |
1006 mal |
|
|
|
flashpixx |
Forum-Guru
|
|
Beiträge: 355
|
|
|
|
Anmeldedatum: 19.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.06.2012, 10:28
Titel:
|
|
Müsste da nicht die Hesseform sinnvoller sein, denn sie beschreibt ja die Ebene durch den Normalenvektor (Lot) und einen Skalar. Bei parallelen ist das Lot gleich (bis auf das Vorzeichen, aber das kann man ja entsprechend definieren) und nur der Skalar ist unterschiedlich,
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 22.06.2012, 11:39
Titel:
|
|
|
|
|
Hallo D-RSPhoenix,
Es ist schwierig ein Problem eindeutig zu beschreiben, wenn man bereits sehr vertraut damit ist. Ich frage deshalb nochmal nach Details:
1. Was genau ist "achsenparallel" an dem Würfel?
2. Scannst Du in 2D oder 3D und in welcher Form liegen die Ergebnisse vor?
3. Wieso setzt Du nicht einfach die gescannten Punkte auf die Kanten?
4. Einen Quader kannst Du sehr leicht darstellen durch die 3D-Position des Mittelpunktes, die drei orthogonalen Vektoren des lokalen Koordinatensystems und die Kantenlänge als Konstante.
5. Was ist auf dem Bild zu sehen? Die grüne Masse soll eine Fläche sein und die vielen blauen Punkte sind dann was?
6. Geht es um ein einzelnes Bild oder eine Bilderfolge, bei der die Punkte sich Quasi-kontinuierlich bewegen?
7. Hast Du einen definierten Ausgangspunkt, bei dem der Quader in einer bekannten Position liegt?
8. Sind die Kantenlängen und ihre relative Ausrichtung bekannt vor der Messung, oder soll die Messung dazu dienen diese Winkel und die Längen zu messen?
Oder anders ausgedrückt: Was sind genau die Inputs und welche Outputs suchst Du?
Gruß, Jan
|
|
|
D-RSPhoenix |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 33
|
|
|
|
Anmeldedatum: 31.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.06.2012, 12:08
Titel:
|
|
|
|
|
Hi
Inputs:
Keine Vorkenntnisse, außer dass ein Quader gescannt wurde!
20000 Punkte mit x,y,z-Koordinaten wovon ca. 1000 auf jeder Seite des Quaders liegen also ca. 6000 Punkte auf der Quaderoberfläche. Die restlichen Punkte sind Rauschen oder Scannfehler.
(genaue Anzahl der Punkte auf der Quaderoberfläche ist nicht bekannt, dies ist abhängig von der gewählten Scannauflösung, Scannabstand und der Größe des Objekts. Sicher ist nur das es deutlich mehr als 3 pro Quaderseite sind)
(Kanten sind in einem Laserscanning nicht eindeutig bestimmbar deswegen keine Punkte auf den Kanten des Quaders)
Daraus mit dem RANSAC berechnete Ebenen:
Seite1: A1*x+B1*y*C1*z=D1
Seite2: A2*x+B2*y*C2*z=D2
Seite3: A3*x+B3*y*C3*z=D3
Seite4: A4*x+B4*y*C4*z=D4
Seite5: A5*x+B5*y*C5*z=D5
Seite6: A6*x+B6*y*C6*z=D6
also 6mal A, B, C und D der einzelnen Quaderseiten
gesuchte Outputs:
1. 8mal X,Y,Z für die 8 Ecken des Quaders
oder
2. X,Y,Z des Mittelpunktes, die drei orthogonalen Vektoren des lokalen Koordinatensystems und die Kantenlänge als Konstante
eine Gleichung d( 1. )=....
die mir den Abstand der 200000 Punkte zu der Oberfläche des Quaders berechnet
oder
eine Gleichung d( 2. )=....
die mir den Abstand der 200000 Punkte zu der Oberfläche des Quaders berechnet
|
|
|
|
|
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 - 2024
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.
|
|