Kantenerkennung in einer Punktwolke

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Soni
User
Beiträge: 1
Registriert: Samstag 23. März 2019, 15:29

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
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

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.

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
Antworten