Name
sample_object_model_3dT_sample_object_model_3dSampleObjectModel3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3d — Abtasten eines 3D-Objektmodells.
Herror sample_object_model_3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& SampleDistance, const HTuple& GenParamName, const HTuple& GenParamValue, Hlong* SampledObjectModel3D)
Herror sample_object_model_3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& SampleDistance, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SampledObjectModel3D)
HTuple HObjectModel3D::SampleObjectModel3d(const HTuple& Method, const HTuple& SampleDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const
void SampleObjectModel3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& SampleDistance, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SampledObjectModel3D)
static HObjectModel3DArray HObjectModel3D::SampleObjectModel3d(const HObjectModel3DArray& ObjectModel3D, const HString& Method, const HTuple& SampleDistance, const HTuple& GenParamName, const HTuple& GenParamValue)
HObjectModel3D HObjectModel3D::SampleObjectModel3d(const HString& Method, double SampleDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const
HObjectModel3D HObjectModel3D::SampleObjectModel3d(const char* Method, double SampleDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const
static void HOperatorSet.SampleObjectModel3d(HTuple objectModel3D, HTuple method, HTuple sampleDistance, HTuple genParamName, HTuple genParamValue, out HTuple sampledObjectModel3D)
static HObjectModel3D[] HObjectModel3D.SampleObjectModel3d(HObjectModel3D[] objectModel3D, string method, HTuple sampleDistance, HTuple genParamName, HTuple genParamValue)
HObjectModel3D HObjectModel3D.SampleObjectModel3d(string method, double sampleDistance, HTuple genParamName, HTuple genParamValue)
sample_object_model_3dsample_object_model_3dSampleObjectModel3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3d erzeugt eine abgetastete Variante des
3D-Objektmodells ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D, welches aus Punkten besteht, die
zueinander den Mindestabstand SampleDistanceSampleDistanceSampleDistanceSampleDistanceSampleDistancesampleDistance haben. Das erzeugte
3D-Objektmodell wird in SampledObjectModel3DSampledObjectModel3DSampledObjectModel3DSampledObjectModel3DSampledObjectModel3DsampledObjectModel3D zurückgegeben.
Der Gebrauch von sample_object_model_3dsample_object_model_3dSampleObjectModel3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3d 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_3dsimplify_object_model_3dSimplifyObjectModel3dsimplify_object_model_3dSimplifyObjectModel3dSimplifyObjectModel3d verwendet werden.
Besteht das Eingabemodell ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D nur aus Punkten, so
stehen einige Methoden zur Verfügung die über den Parameter
MethodMethodMethodMethodMethodmethod ausgewählt werden können.
Die Standardmethode 'fast'"fast""fast""fast""fast""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'"fast_compute_normals""fast_compute_normals""fast_compute_normals""fast_compute_normals""fast_compute_normals" berechnet die Normalen von allen
Punkten die wie bei der Methode 'fast'"fast""fast""fast""fast""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_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d
erzeugt.
Die Methode 'accurate'"accurate""accurate""accurate""accurate""accurate" geht alle Punkte von ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D durch
und berechnet, ob innerhalb einer Kugel mit dem Radius SampleDistanceSampleDistanceSampleDistanceSampleDistanceSampleDistancesampleDistance
um den untersuchten Punkt noch andere Punkte liegen. Wenn keine anderen Punkte
in der Kugel enthalten sind, wird der ursprüngliche Punkt
in SampledObjectModel3DSampledObjectModel3DSampledObjectModel3DSampledObjectModel3DSampledObjectModel3DsampledObjectModel3D gespeichert.
Falls noch andere Punkte in der Kugel sind, wird ihr Schwerpunkt (inklusive dem
ursprünglichen Punkt) berechnet und der resultierende Punkt in
SampledObjectModel3DSampledObjectModel3DSampledObjectModel3DSampledObjectModel3DSampledObjectModel3DsampledObjectModel3D 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'"min_num_points""min_num_points""min_num_points""min_num_points""min_num_points" in GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName
und einer Anzahl in GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue angegeben wird.
Die Methode 'accurate_use_normals'"accurate_use_normals""accurate_use_normals""accurate_use_normals""accurate_use_normals""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'"max_angle_diff""max_angle_diff""max_angle_diff""max_angle_diff""max_angle_diff" in GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und einem Winkel in
GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue angegeben werden. Der Standardwert für den Schwellwert
ist '180'"180""180""180""180""180" Grad. Es kann außerdem das selbe Ausreißerkriterium
wie bei der Methode 'accurate'"accurate""accurate""accurate""accurate""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 MethodMethodMethodMethodMethodmethod 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 SampleDistanceSampleDistanceSampleDistanceSampleDistanceSampleDistancesampleDistance kann entweder ein Wert
übergeben werden, der für alle in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D übergebenen
3D-Objektmodelle gültig ist, oder für jedes Eingabemodell ein eigener Wert.
Die Einheit der Abtastdistanz ist die HALCON-übliche Einheit 'm'"m""m""m""m""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_3dclear_object_model_3dClearObjectModel3dclear_object_model_3dClearObjectModel3dClearObjectModel3d freigegeben werden.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Handle des abzutastenden 3D-Objektmodells.
Verwendete Methode zum Abtasten.
Defaultwert:
'fast'
"fast"
"fast"
"fast"
"fast"
"fast"
Werteliste: 'accurate'"accurate""accurate""accurate""accurate""accurate", 'accurate_use_normals'"accurate_use_normals""accurate_use_normals""accurate_use_normals""accurate_use_normals""accurate_use_normals", 'fast'"fast""fast""fast""fast""fast", 'fast_compute_normals'"fast_compute_normals""fast_compute_normals""fast_compute_normals""fast_compute_normals""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'"max_angle_diff""max_angle_diff""max_angle_diff""max_angle_diff""max_angle_diff", 'min_num_points'"min_num_points""min_num_points""min_num_points""min_num_points""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_3dsample_object_model_3dSampleObjectModel3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3d liefert den Wert 2 (H_MSG_TRUE) wenn alle
Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung durchgeführt.
read_object_model_3dread_object_model_3dReadObjectModel3dread_object_model_3dReadObjectModel3dReadObjectModel3d,
gen_plane_object_model_3dgen_plane_object_model_3dGenPlaneObjectModel3dgen_plane_object_model_3dGenPlaneObjectModel3dGenPlaneObjectModel3d,
gen_sphere_object_model_3dgen_sphere_object_model_3dGenSphereObjectModel3dgen_sphere_object_model_3dGenSphereObjectModel3dGenSphereObjectModel3d,
gen_cylinder_object_model_3dgen_cylinder_object_model_3dGenCylinderObjectModel3dgen_cylinder_object_model_3dGenCylinderObjectModel3dGenCylinderObjectModel3d,
gen_box_object_model_3dgen_box_object_model_3dGenBoxObjectModel3dgen_box_object_model_3dGenBoxObjectModel3dGenBoxObjectModel3d,
gen_sphere_object_model_3d_centergen_sphere_object_model_3d_centerGenSphereObjectModel3dCentergen_sphere_object_model_3d_centerGenSphereObjectModel3dCenterGenSphereObjectModel3dCenter,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d
get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParams,
clear_object_model_3dclear_object_model_3dClearObjectModel3dclear_object_model_3dClearObjectModel3dClearObjectModel3d
simplify_object_model_3dsimplify_object_model_3dSimplifyObjectModel3dsimplify_object_model_3dSimplifyObjectModel3dSimplifyObjectModel3d,
smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3d
3D Metrology