| Operatoren |
sample_object_model_3d — Abtasten eines 3D-Objektmodells.
sample_object_model_3d( : : ObjectModel3D, Method, SampleDistance, GenParamName, GenParamValue : SampledObjectModel3D)
sample_object_model_3d erzeugt eine abgetastete Variante des 3D-Objektmodells ObjectModel3D, welches aus Punkten besteht, die zueinander den Mindestabstand SampleDistance haben. Das erzeugte 3D-Objektmodell wird in SampledObjectModel3D zurückgegeben.
Der Gebrauch von sample_object_model_3d ist empfohlen, wenn komplexe Punktwolken zur Nachverarbeitung ausgedünnt werden oder Primitive in Punktwolken umgewandelt werden sollen. Wenn das 3D-Objektmodell trianguliert ist und unter bestmöglicher Beibehaltung seiner ursprünglichen Geometrie vereinfacht werden soll, sollte stattdessen simplify_object_model_3d verwendet werden.
Besteht das Eingabemodell ObjectModel3D nur aus Punkten, so stehen einige Methoden zur Verfügung die über den Parameter Method ausgewählt werden können.
Die Standardmethode 'fast' fügt der Reihe nach alle Punkte, die bisher keinen Nachbarpunkt mit einem Abstand unter der angegebenen Schwelle haben, in das Ausgabeobjekt ein. In diesem Fall werden, soweit vorhanden, die Punktnormalen, das Mapping sowie erweiterte Punktattribute kopiert.
Die Methode 'fast_compute_normals' berechnet die Normalen von allen Punkten die wie bei der Methode 'fast' ausgewählt wurden. Dazu muss das Eingabeobjektmodell entweder Normalen aufweisen, die kopiert werden, oder ein XYZ-Mapping aus dem die Normalen berechnet werden. Das XYZ-Mapping wird beispielsweise von xyz_to_object_model_3d erzeugt.
Die Methode 'accurate' geht alle Punkte von ObjectModel3D durch und berechnet, ob innerhalb einer Kugel mit dem Radius SampleDistance um den untersuchten Punkt noch andere Punkte liegen. Wenn keine anderen Punkte in der Kugel enthalten sind, wird der ursprüngliche Punkt in SampledObjectModel3D gespeichert. Falls noch andere Punkte in der Kugel sind, wird ihr Schwerpunkt (inklusive dem ursprünglichen Punkt) berechnet und der resultierende Punkt in SampledObjectModel3D gespeichert. Dieser Vorgang wird mit den restlichen Punkten wiederholt, bis keine Punkte mehr übrig sind. Bei der Methode gehen erweiterte Attribute verloren, Normalen und XYZ-Mapping werden kopiert. Punkte, die keine oder wenig Nachbarn in der Originalpunktwolke haben, können als Ausreißer erkannt und entfernt werden, indem die Mindestanzahl an Nachbarn mit Hilfe von 'min_num_points' in GenParamName und einer Anzahl in GenParamValue angegeben wird.
Die Methode 'accurate_use_normals' benötigt bereits berechnete Normalen, und interpoliert benachbarte Punkte nur dann, wenn sie eine ähnliche Normale aufweisen. Der Schwellwert auf diese Ähnlichkeit kann mit 'max_angle_diff' in GenParamName und einem Winkel in GenParamValue angegeben werden. Der Standardwert für den Schwellwert ist '180' Grad. Es kann außerdem das selbe Ausreißerkriterium wie bei der Methode 'accurate' angewandt werden.
Besteht das Eingabeobjektmodell aus Flächen (Dreiecke oder Polygone) oder aus einem 3D-Primitiv, so wird die Oberfläche mit der angegebenen Distanz abgetastet. In diesem Fall wird die in Method angegebene Methode ignoriert. 3D-Primitive vom Typ Ebene oder Zylinder dürfen nur endliche Ausdehnung haben. Besteht das Eingabeobjektmodell aus Linien, so werden die Linien mit der angegebenen Distanz abgetastet.
Der Abtastprozess approximiert Oberflächen, indem neue Punkte im Ausgabeobjektmodell erzeugt werden. Daher gehen erweiterte Attribute des Eingabeobjektmodell verloren.
Bei gemischten Eingabeobjektmodellen entscheidet die Abtastpriorität (von hoch bis niedrig): Flächen, Linien, Primitive, und Punkte, d.h. nur die Objekte der höchsten Priorität werden abgetastet.
Für die Abtastdistanz in SampleDistance kann entweder ein Wert übergeben werden, der für alle in ObjectModel3D übergebenen 3D-Objektmodelle gültig ist, oder für jedes Eingabemodell ein eigener Wert. Die Einheit der Abtastdistanz ist die HALCON-übliche Einheit 'm'.
Falls ein 3D-Objektmodell nicht mehr benötigt wird oder überschrieben werden soll, so muss sein Speicher durch einen Aufruf von clear_object_model_3d freigegeben werden.
This operator supports cancelling timeouts.
Handle des abzutastenden 3D-Objektmodells.
Verwendete Methode zum Abtasten.
Defaultwert: 'fast'
Werteliste: 'accurate', 'accurate_use_normals', 'fast', 'fast_compute_normals'
Abtastdistanz.
Parameteranzahl: SampleDistance == 1 || SampleDistance == ObjectModel3D
Defaultwert: 0.05
Namen der generischen Parameter, die für die Abtastung eingestellt werden sollen.
Defaultwert: []
Werteliste: 'max_angle_diff', 'min_num_points'
Werte der generischen Parameter, die für die Abtastung eingestellt werden sollen.
Defaultwert: []
Wertevorschläge: 1, 2, 5, 10, 20, 0.1, 0.25, 0.5
Handle des 3D-Objektmodells mit den abgetasteten Punkten.
Parameteranzahl: SampledObjectModel3D == ObjectModel3D
gen_box_object_model_3d ([0,0,0,0,0,0,0],3,2,1, ObjectModel3D)
sample_object_model_3d (ObjectModel3D, 'fast', 0.05, [], [], \
SampledObjectModel3D)
dev_get_window (WindowHandle)
visualize_object_model_3d (WindowHandle, SampledObjectModel3D, \
[], [], [], [], [], [], [], PoseOut)
sample_object_model_3d liefert den Wert 2 (H_MSG_TRUE) wenn alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung durchgeführt.
read_object_model_3d, gen_plane_object_model_3d, gen_sphere_object_model_3d, gen_cylinder_object_model_3d, gen_box_object_model_3d, gen_sphere_object_model_3d_center, xyz_to_object_model_3d
get_object_model_3d_params, clear_object_model_3d
simplify_object_model_3d, smooth_object_model_3d
3D Metrology
| Operatoren |