Guten Tag,
mir stellt sich folgendes Programmierungsproblem:
Ich habe nach einer Höhenmessung eines Bauteils eine Punktwolke aus x-Millionen 3D-Punkten vorliegen. Nun möchte ich die Kante des Bauteils erkennen, um dieser Kante den Y-Wert 0 zuzuweisen, da dieser Y-Position des Bauteils zwischen verschiedenen Messungen variiert.
Ich suche also den kleinsten Y-Wert für den alle Punkte der Punktwolke einen Z-Wert > x haben (x bspw. 0.5 bei einer Sollbauteilhöhe von 1).
Zur Konkretisierung des Problems folgendes abstrahiertes Beispiel:
Beispiel = []
x = 0.5
Beispiel.append([1,1,1])
for i in range(4):
Beispiel.append([i,0,0])
Beispiel.append([i,1,0])
Beispiel.append([i,2,1])
Beispiel.append([i,3,2])
Hier wäre der gesuchte Y-Wert 2, da für alle Y = 2 gilt: Z>x
Vielen Dank im Voraus und die Bitte um Nachsicht bezüglich meiner noch beschiedenen Programmierkenntnisse!
Soni
Kantenerkennung in einer Punktwolke
Vorausgesetzt in deinem Beispiel ist ein Punkt durch [X,Y,Z] definiert,
ist in deinem Beispiel Y=1 für alle Z > x
und nur dann 2 wenn das erste Element [1,1,1] nicht mitgezählt werden soll.
ist in deinem Beispiel Y=1 für alle Z > x
und nur dann 2 wenn das erste Element [1,1,1] nicht mitgezählt werden soll.
Code: Alles auswählen
import numpy as np
cloud = np.array(Beispiel)
print(cloud[cloud[:,2] > x])
Code: Alles auswählen
[[1 1 1]
[0 2 1]
[0 3 2]
[1 2 1]
[1 3 2]
[2 2 1]
[2 3 2]
[3 2 1]
[3 3 2]]
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png