Mit KDTree bestimmte Punkte aus Punktwolke filtern
Verfasst: Dienstag 8. Januar 2019, 22:58
Hi Leute,
ich habe ein Array mit zeilenweise eingetragenen Punkten (in drei Spalten die jeweiligen x-, y- und z-Koordinaten) und muss Punkte herausfiltern die in einem bestimmten minimalen und maximalen Abstand von einem bestimmten Punkt liegen. Dafür kann mir die KDTree-Funktion "query_radius" helfen. Mit dieser Funktion kann ich alle Punkte herausfinden, die sich innerhalb des maximalen Radius befinden und mir dafür die Listen "ind" (Indizes der gültigen Punkte) und "dist" (jeweiliger Abstand zum zetralen Punkt) ausgeben lassen.
Jetzt weiß ich einfach nicht wie ich weitermachen muss, um nochmal alle Punkte innerhalb des maximalen Abstands nach dem minimalen Abstand zu filtern. Ich habe mit den Indizes und Abständen der Punkte ja eigentlich alles was ich brauche, aber ich kann meine Gedanken nicht so ordnen und im Code ausdrücken wie ich gerne möchte.
Könnt ihr mir helfen? Ich habe einen Knoten im Kopf.
Viele Grüße
Hans-Uwe
ich habe ein Array mit zeilenweise eingetragenen Punkten (in drei Spalten die jeweiligen x-, y- und z-Koordinaten) und muss Punkte herausfiltern die in einem bestimmten minimalen und maximalen Abstand von einem bestimmten Punkt liegen. Dafür kann mir die KDTree-Funktion "query_radius" helfen. Mit dieser Funktion kann ich alle Punkte herausfinden, die sich innerhalb des maximalen Radius befinden und mir dafür die Listen "ind" (Indizes der gültigen Punkte) und "dist" (jeweiliger Abstand zum zetralen Punkt) ausgeben lassen.
Code: Alles auswählen
from sklearn.neighbors import KDTree
tree = KDTree(points_plusRand) #points_plusRand ist die Punktwolke
ind, dist = tree.query_radius(points_plusRand[:1], r=max_radius, return_distance=True)
Könnt ihr mir helfen? Ich habe einen Knoten im Kopf.
Viele Grüße
Hans-Uwe