WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Einhüllende um Punktewolke

 

Gast_AW

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 10:07     Titel: Einhüllende um Punktewolke
  Antworten mit Zitat      
Hallo an alle,

ich möchte das Thema erneut aufrollen, weil sich im Forum bisher keine zufriedenstellende Antwort finden lässt.

Ich habe eine Punktewolke in 3D, also in Wirklichkeit drei Spaltenvektoren mit den x-, y- und z-Koordinaten der Punkte. Wie man so eine Punktewolke plottet, ist im Forum hinreichend diskutiert.

Mir geht es aber darum, um die Punktewolke eine Einhüllende zu ermitteln. Praktisch gesprochen: Ein Tischtuch über einen Igel legen. Smile

Dabei geht es mir anschließend um eine Identifikation der "äußeren Punkte", d.h. ich will anschließend aus dem vierten Spaltenvektor (dem Zeitkanal) zurückgeben, welcher der Punkte der Punktewolke die Einhüllende bildet und welcher im Inneren liegt.

Ich bin über jeden Ansatz dankbar!

Kann Delauney-Triangulation helfen? Wenn ja, wie?

Danke im Voraus!
Gast_AW


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.11.2012, 10:44     Titel: Re: Einhüllende um Punktewolke
  Antworten mit Zitat      
Hallo Gast_AW,

Der entsprechende Befehl heißt CONVHULL. Dazu findet man einiges im Netz.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast_AW

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 11:21     Titel: Re: Einhüllende um Punktewolke
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Gast_AW,

Der entsprechende Befehl heißt CONVHULL. Dazu findet man einiges im Netz.

Gruß, Jan


CONVHULL gibt doch die Gestalt der Einhüllenden vor, oder?
Ich brauche eine Art Einhüllende für beliebige Punktewolke, die aus n Flächenelementen besteht.
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.11.2012, 11:33     Titel:
  Antworten mit Zitat      
Hallo,

K = convhull(X,Y,Z) gibt das zurück, was im Allgemeinen Fall funktioniert, nämlich eine Triangulierung.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.11.2012, 11:34     Titel: Re: Einhüllende um Punktewolke
  Antworten mit Zitat      
Hallo Gast_AW,

CONVHULL gibt, wie die Dokumentation beschreibt, die minimal konvexe Hülle zurück, in der die Punkte liegen. Ich sehe nicht, dass dabei irgendeine Form vorgegeben wird.
Wo ist genau der Unterschied zu dem, was Du suchst?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.11.2012, 11:45     Titel:
  Antworten mit Zitat      
Ich glaube, ich verstehe, was er will. Es geht nicht um die minimal konvexe Hülle, sondern eine Hülle mit n Flächensegmenten.
Ob Matlab das kann, weiß ich nicht...
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.11.2012, 11:58     Titel:
  Antworten mit Zitat      
[strike]
Ok, Idee für einen Algorithmus:

1. K_alt = convhull(X,Y,Z)
2. Ermittle den Schwerpunkt von K_alt von (X,Y,Z)
3. Entferne den Punkt aus K_alt von (X,Y,Z), der am nächsten am Schwerpunkt liegt -> K_red
4. K_neu = convhull(K_red)
5. K_alt=K_neu
6. Gehe zu 2., solange bis #(K_al)<=n
[/strike]

Edit: Dieser Algorithmus ist falsch, da er der Eindeutigkeit der minimalen konvexen Hülle widerspricht. Man müsste im Gegenteil sogar Punkte außerhalb der konvexen Hülle ergänzen, um die Anzahl der Flächensegmente zu reduzieren... Nach welchen Kriterien das erfolgen muss, ist mir im Augenblick jedoch nicht klar...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast_AW

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 13:29     Titel:
  Antworten mit Zitat      
Hallo und danke für die bisherigen Beiträge!

Ich habe ein bisschen rumprobiert, die Delauney-Triangulation ist nicht gut. CONVHULL scheint aber zu funktionieren.

Um auf Nummer sicher zu gehen, folgendes Beispiel bzw. folgende Punktewolke:
Index-Spaltenvektor:
[1;2;3;4;5;6;7]
Spaltenvektoren der Punktkoordinaten:
X=[-1;-1;1;1;0;0;0]
Y=[-1;1;-1;1;0;0;0]
Z=[0;0;0;0;2;-2;0]

Die Einhüllende um die Punktewolke ist ein Körper, der aus zwei 4seitigen Pyramiden besteht. Für mich wichtig ist, dass der 7. Punkt (0;0;0) kein äußerer Punkt ist.

Delaunay-Triangulation liefert nichts sinnvolles.
TRI = delaunay(X,Y,Z)
trisurf(TRI,X,Y,Z)

Also mit CONVHULL:
K = convhull(X,Y,Z)

Wenn ich die Matrix K durchsuche, finde ich nirgends eine 7.
Heißt das, dass der 7. Punkt wie es sein sollte kein äußerer Punkt ist?

Dann wäre das Problem für beliebig große Punktewolken gelöst?

Bitte nochmal bestätigen!

Danke im Voraus
 
Gast_AW

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 13:44     Titel:
  Antworten mit Zitat      
Nachtrag und gleichzeitig Enttäuschung:

CONVHULL schreibt die Gestalt der Einhüllenden, nämlich dass diese konvex ist, vor. Für eine Art nierenförmigen Körper funktioniert dies also nicht.
Nehmen wir einen 8. Punkt mit den Koordinaten (-0.5;-0.5;0.7) dazu, wird dieser von CONVHULL nicht als interessant eingestuft, weil er innerhalb der Doppelpyramide liegt. Ich hätte diesen Punkt jedoch gerne trotzdem als äußeren Punkt identifiziert.
Das Problem liegt also bei der Wahl der Triangulation.

Lösungsvorschläge?
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.11.2012, 14:15     Titel:
  Antworten mit Zitat      
Dann nach concave hull googeln...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast_AW

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 14:47     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Dann nach concave hull googeln...


Ob konkav oder konvex, eine solche Annahme gibt zumindest grob die Gestalt der Einhüllenden vor.
Das will ich aber gerade nicht.

Ich glaube die ganze Fragestellung lässt sich wie folgt reduzieren:
Was ist die geeignete Triangulation für die Einhüllende einer Punktewolke?
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.11.2012, 15:02     Titel:
  Antworten mit Zitat      
Hallo Gast_AW,

Nein. Wenn man nicht minimlaes Volumen und Konvexität vorgibt, muss man ein anderes Kriterium vorgeben, damit die Aufgabe überhaupt eindeutig lösbar ist. Es gibt einfach extrem viele unterschiedliche konkave Hüllen, welche soll dann "die Einhüllende sein"?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast_AW

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 15:28     Titel:
  Antworten mit Zitat      
Hallo Jan,

ja genau, das macht Sinn. Selbst 2 Menschen können ja unendlich lange streiten, was aus einer gegebenen Punktewolke nun die "äußeren" Punkte sind und welche die "inneren".

Hat also jemand Erfahrungen, welche Triangulation und welche Bedingungen ein gutes Ergebnis liefern, für ich sag mal nieren- bzw. kartoffelförmige Punktewolken?

Danke
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.11.2012, 15:34     Titel:
  Antworten mit Zitat      
Hallo Gast_AW,

Was genau ist "gut" dann? Es kommt wohl darauf an, in welchem Radius um einen Punkt herum Nachbarn als solche akzeptiert werden. Das ist ähnlich wie bei der Küste Englands (oder auch Borkums): Je höher die Auflösung, mit der man misst, je kleiner also der Radius um jeden Punkt, desto länger wird die Küste - zumindest bis der Abstandsbegriff unterhalb des Atom-Radius sinnfrei wird.

Es liegt hier bei Dir zunächst das Problem genau zu definieren.

Was hat Dir die Webrecherche nach "konkave hull" gebracht? Immerhin íst das Problem ja hunderte Male auf verschiedene Weisen gelöst worden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.11.2012, 15:41     Titel:
  Antworten mit Zitat      
Schau' mal das hier: http://www.mathworks.de/matlabcentr.....change/28851-alpha-shapes

Das alpha definiert dann wohl, was "gut" ist. Siehe dazu auch hier: http://www.mpi-inf.mpg.de/~jgiesen/tch/sem06/Celikik.pdf

Schau' dir mal die Bilder (mit Untertitel "How to determine the “best” a ?") ziemlich weit unten an.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.