Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Algorithmen / Datenstrukturen » Algorithmus, um Steigung in Punktwolke zu bestimmen
Autor
Universität/Hochschule J Algorithmus, um Steigung in Punktwolke zu bestimmen
Nummi
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 01.12.2021
Mitteilungen: 6
  Themenstart: 2021-12-01

Hallo zusammen Ich arbeite zur Zeit an einem Projekt im Studium, bei welchem ich eine Frage habe. Ich habe Daten, welche eine 3D-Punktwolke generieren. Diese stellt vereinfacht gesagt einen Trichter dar. Ich suche nun einen Algorithmus, welcher die Steigung in diesem Trichter berechnet. Implementiert wird das ganze über Matlab. Ich bin relativ unerfahren in diesem Thema, bitte entschuldigt wenn meine Fragestellung allenfalls keinen Sinn ergibt :) Ich danke euch Freundliche Grüsse I.G.


   Profil
Bozzo
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.04.2011
Mitteilungen: 2186
Wohnort: Franken
  Beitrag No.1, eingetragen 2021-12-01

Hallo Nummi, willkommen auf dem Matheplanet! Ich verstehe deine Frage noch nicht so ganz. Wie nahe ist folgende Beschreibung dran? Du hast 3D-Punkte, die nahe der Mantelfläche eines Kegels liegen und möchtest den Öffnungswinkel des Kegels bestimmen. Wenn das in die richtige Richtung geht, was weißt du über die Lage des Kegels? Z. B. ob seine symmetrieachse auf der z-Achse oder einer anderen bestimmten Achse liegt, ob seine Spitze im Ursprung liegt, etc. Viele Grüße Bozzo


   Profil
Nummi
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 01.12.2021
Mitteilungen: 6
  Beitrag No.2, vom Themenstarter, eingetragen 2021-12-01

Hallo Bozzo, ich danke Dir für die schnelle Antwort. Ich habe die Daten mit Hilfe eines LiDAR-Sensors generiert und in Matlab zu einer 3D-Punktwolke verarbeitet (https://matheplanet.com/matheplanet/nuke/html/uploads/b/55185_Screenshot_2021-12-01_134931.png) Nun will ich die Steigung innerhalb dieses Kegels mit einem Algorithmus bestimmen. Die Lage des Kegels ist immer unterschiedlich. Ich könnte aber sicherlich über Matlab den Ursprung auf den tiefsten Punkt setzen. Das Ziel ist es, unterschiedliche Punktwolken (alle mit Kegel aber unterschiedliche Steigungen) einzulesen und durch den Algorithmus stets die Steigungen zu erhalten. Viele Grüsse Nummi


   Profil
Bozzo
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.04.2011
Mitteilungen: 2186
Wohnort: Franken
  Beitrag No.3, eingetragen 2021-12-01

Wenn der Trichter so orientiert wäre, dass die Öffnung immer nach oben entlang der z-Achse zeigt, könntest du für jeden Punkt den Abstand r = √(x2+y2) bestimmen und die Punkte in ein 2-dimensionales r-z-Koordinaten plotten. Ich vermute, der Trichter hat darin dann etwa die Form einer Parabel. Diese könntest du mit Least-Squares anfitten und deren Öffnungsfaktor als Beschreibung der Form des Trichters/Kelchs angeben. Geht das, oder ist der Kelch nicht rotationssymmetrisch um die z-Achse? Was verstehst du unter "der Steigung"? Diese scheint hier ja an jeder Stelle anders zu sein (unten fast flach, oben fast senkrecht).


   Profil
Nummi
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 01.12.2021
Mitteilungen: 6
  Beitrag No.4, vom Themenstarter, eingetragen 2021-12-02

Die Öffnung ist immer nach oben und es kann durchaus sein, dass eine Parabel entsteht. Ich habe die Punktwolke mal bei 0° als 2D geplottet und die Steigung, die mich interessiert eingezeichnet. Diese beginnt bei der oberen Kante des Trichters und geht nach unten.(https://matheplanet.com/matheplanet/nuke/html/uploads/b/55185_Screenshot_2021-12-02_110407.png) Ich denke, ich werde von der Kante her eine gewisse Anzahl an Messpunkten nehmen und mit diesen die Steigung berechnen, dies auf den ganzen Umfang bezogen in 5°. Die Frage ist noch, wie die obere Kante von selbst erkannt werden soll. Schlussendlich sollte ich eine Punktwolke einlesen können, den Algorithmus laufen lassen und so an die gewünschte Steigung kommen (ohne manuell die Punkte festzulegen) Ich hoffe man versteht, was ich in etwa erreichen möchte :) Gruss IG


   Profil
Nummi
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 01.12.2021
Mitteilungen: 6
  Beitrag No.5, vom Themenstarter, eingetragen 2021-12-02

https://matheplanet.com/matheplanet/nuke/html/uploads/b/55185_Screenshot_2021-12-02_110407.png


   Profil
Bozzo
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.04.2011
Mitteilungen: 2186
Wohnort: Franken
  Beitrag No.6, eingetragen 2021-12-02

Du könntest versuchen, die Ableitung deiner Reihe (Differenzenquotienten) zu plotten und gucken, ob du darin das entsprechende Plateau identifizieren kannst. Ggf. kann es sinnvoll sein, die Ableitung vorher zu glätten. Wie sieht der Plott für andere Richtungen aus (10 Grad, 60 Grad, 120 Grad, etc.? Vergleichbar? Was, wenn du alle Richtungen gleichzeitig in ein Diagramm plottest (das r-z-Diagramm aus meinem vorherigen Vorschlag).


   Profil
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6919
Wohnort: Niedersachsen
  Beitrag No.7, eingetragen 2021-12-03

Man könnte aus je n (z.B. n=9) "nebeneinander" liegenden Punkten die lokale Steigung der Ausgleichsgerade berechnen. Das Maximum dieser Steigungen wäre dann vielleicht das, was Du suchst.


   Profil
Nummi
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 01.12.2021
Mitteilungen: 6
  Beitrag No.8, vom Themenstarter, eingetragen 2021-12-10

@Kitaktus An diesem Ansatz bin ich jetzt auch dran. Wie kann ich auf Matlab ausführen?


   Profil
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 6919
Wohnort: Niedersachsen
  Beitrag No.9, eingetragen 2021-12-12

Ob Deine Punkte schon in entsprechender Sortierung vorliegen, oder Du erst sortieren musst, weiß ich nicht. In Matlab gibt es die Funktion "polyfit", die bei entsprechender Wahl der Parameter die lineare Ausgleichsgerade berechnet. Das funktioniert erstmal aber nur für 2D-Punktwolken. Ob Du das verwenden kannst, hängt also davon ab, wie Deine Daten aussehen. Kann ja gut sein, dass von Deinen Messpunkten die x- und y-Koordinaten auf Strahlen liegen.


   Profil
Nummi hat die Antworten auf ihre/seine Frage gesehen.
Nummi hat selbst das Ok-Häkchen gesetzt.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2022 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]