Seite 1 von 1

Kantenerkennung in einer Punktwolke

Verfasst: Samstag 23. März 2019, 15:43
von Soni
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

Re: Kantenerkennung in einer Punktwolke

Verfasst: Samstag 23. März 2019, 19:47
von ThomasL
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]]