create_deformable_surface_modelT_create_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model (Operator)
Name
create_deformable_surface_modelT_create_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model — Erstellt die für deformierbares oberflächenbasiertes Matching notwendigen
Datenstrukturen.
Signatur
void CreateDeformableSurfaceModel(const HTuple& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* DeformableSurfaceModel)
HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const
HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const HString& GenParamName, const HString& GenParamValue) const
HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const char* GenParamName, const char* GenParamValue) const
HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(double RelSamplingDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue) const
(Nur Windows)
void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue)
void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HString& GenParamName, const HString& GenParamValue)
void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const char* GenParamName, const char* GenParamValue)
void HDeformableSurfaceModel::HDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue)
(Nur Windows)
void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue)
void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HString& GenParamName, const HString& GenParamValue)
void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const char* GenParamName, const char* GenParamValue)
void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue)
(Nur Windows)
static void HOperatorSet.CreateDeformableSurfaceModel(HTuple objectModel3D, HTuple relSamplingDistance, HTuple genParamName, HTuple genParamValue, out HTuple deformableSurfaceModel)
HDeformableSurfaceModel HObjectModel3D.CreateDeformableSurfaceModel(double relSamplingDistance, HTuple genParamName, HTuple genParamValue)
HDeformableSurfaceModel HObjectModel3D.CreateDeformableSurfaceModel(double relSamplingDistance, string genParamName, string genParamValue)
public HDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, HTuple genParamName, HTuple genParamValue)
public HDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, string genParamName, string genParamValue)
void HDeformableSurfaceModel.CreateDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, HTuple genParamName, HTuple genParamValue)
void HDeformableSurfaceModel.CreateDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, string genParamName, string genParamValue)
Beschreibung
create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model erstellt aus dem 3D-Objektmodell
ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d ein Modell für deformierbares oberflächenbasiertes
Matching.
Das 3D-Oberflächenmodell kann beispielsweise mittels
read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3dread_object_model_3d aus einer Datei gelesen worden sein oder
mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d erstellt worden sein.
Das Handle des erstellten Oberflächenmodells wird in
DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModeldeformable_surface_model zurückgegeben.
Für die Erstellung des deformierbaren Oberflächenmodells aus dem
3D-Objektmodell werden Punkte und Normalen aus dem 3D-Objektmodell benötigt.
Hier sind die folgenden Kombinationen möglich:
Es ist zu beachten, dass die Richtung und Ausrichtung (einwärts oder
auswärts) der Normalen des Modells wichtig für das Matching sind.
Für das deformierbare Oberflächenmodell wird die Oberfläche des
3D-Objektmodells mit einem bestimmten Abstand abgetastet.
Die Abtastdistanz wird im Parameter RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance
spezifiziert, und wird relativ zum Durchmesser des umschließenden
achsenparallelen Quaders angegeben. Wird z.B. RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance
auf 0.05 gesetzt und ist der Durchmesser von
ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d gleich 10 cm, dann haben die Punkte
der abgetasteten Oberfläche einen Abstand von etwa 5 mm.
Die abgetasteten Punkte werden für das Matching
in find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModelfind_deformable_surface_model verwendet.
Die abgetasteten Punkte können mit dem Operator
get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamget_deformable_surface_model_param als 'sampled_model'"sampled_model""sampled_model""sampled_model""sampled_model""sampled_model"
abgerufen werden.
Es ist zu beachten, dass einzelne Ausreißerpunkte im 3D-Objektmodell
den Durchmesser des umschließenden Quaders deutlich verändern können,
was aufgrund der relativen Parametrisierung die Abtastdistanz stark stören
kann.
Ausreißerpunkte im 3D-Objektmodell sind daher vor dem Aufruf des Operators
zu entfernen.
Verringert man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance, so werden mehr Punkte
abgetastet, was zu einem stabileren aber langsameren Matching führt.
Erhöht man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance, so werden weniger Punkte
abgetastet, was zu einem schnelleren aber weniger stabilen Matching führt.
Standardmäßig können mit create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model erstellte
deformierbare Oberflächenmodelle bereits eine moderate Deformation handhaben.
Der Operator add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sample kann verwendet
werden um dem Modell weitere Trainingsbeispiele hinzuzufügen, was den
Bereich der möglichen Deformationen erweitert.
Der Deformationsbereich kann auch über die generischen Parameter
'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min", 'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max" und 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max"
kontrolliert werden (siehe unten).
In den Parametern GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value können
generische Parameter und deren Werte übergeben werden. GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name
enthält ein Tupel von Parameternamen die gesetzt werden sollen, und
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value die dazugehörigen Werte.
Die folgenden Werte sind für GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name möglich:
- 'model_invert_normals'"model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals":
-
Invertieren der Normalenausrichtung des 3D-Objektmodells.
Die Normalenausrichtungen (einwärts oder auswärts)
müssen für die Erstellung des Oberflächenmodells bekannt sein und
mit der Ausrichtung in der Szene übereinstimmen.
Wenn sowohl das Modell als auch die Szene mit demselben Aufbau
aufgenommen werden, so zeigen die Normalen bereits in die gleiche
Richtung.
Wenn das Modell aus einer CAD-Datei geladen wurde dann könnten die
Normalen in unterschiedliche Richtungen zeigen. Wenn beim Matching
der Effekt auftritt, dass das Modell auf der 'Außenseite' der
Szene gefunden wird und das Modell aus einer CAD-Datei stammt,
so sollte versucht werden diesen Parameter auf 'true'"true""true""true""true""true"
zu setzen.
Es ist auch darauf zu achten, dass die Normalen in der CAD-Datei
alle entweder nach innen oder nach außen zeigen, d.h. konsistent
orientiert sind.
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true".
Default: 'false'"false""false""false""false""false".
- 'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min" und 'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max":
-
Kontrollieren des Skalierungsbereichs des Modells.
Wird einer der beiden Parameter gesetzt, dann muss auch der andere
Parameter gesetzt werden.
Wertevorschläge: 0.8, 1, 1.2.
Default: Keine Skalierung.
Restriktion: 0 < 'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min" < 'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max"
- 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max":
-
Kontrollieren der automatisch erlernten Deformation des Modells.
Das Modell wird automatisch deformiert in dem es um einen Winkel bis
zu 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max" verbogen wird.
Dies erlaubt das Finden von Deformationen innerhalb dieses Biegebereichs.
Der Winkel wird in Grad angegeben.
Wertevorschläge: 5, 10, 30.
Default: 20.
Restriktion: 0 <= 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max" < 90
- 'stiffness'"stiffness""stiffness""stiffness""stiffness""stiffness":
-
Kontrollieren der Steifheit des Modells während der Lageverfeinerung.
Größere Werte führen zu einem steiferen Modell das weniger stark
deformiert werden kann.
Kleinere Werte dieses Parameters führen zu einem weniger steifen Modell,
welches mehr Deformation erlaubt.
Wertevorschläge: 0.2, 0.5, 0.8.
Default: 0.5.
Restriktion: 0 < 'stiffness'"stiffness""stiffness""stiffness""stiffness""stiffness" <= 1
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf interner Datenebene.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Dieser Operator unterstützt Cancel-Timeouts und Interrupts.
Parameter
ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d (input_control) object_model_3d → HObjectModel3D, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des 3D-Objektmodells.
RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistancerel_sampling_distance (input_control) real → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Abtastdistanz relativ zum Durchmesser des Objekts.
Defaultwert: 0.05
Wertevorschläge: 0.1, 0.05, 0.03, 0.02, 0.01
Restriktion: 0 < RelSamplingDistance < 1
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control) attribute.name(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Namen der generischen Parameter.
Defaultwert: []
Wertevorschläge: 'model_invert_normals'"model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals", 'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min", 'scale_max'"scale_max""scale_max""scale_max""scale_max""scale_max", 'bending_max'"bending_max""bending_max""bending_max""bending_max""bending_max", 'stiffness'"stiffness""stiffness""stiffness""stiffness""stiffness"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control) attribute.value(-array) → HTupleMaybeSequence[Union[str, float, int]]HTupleHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong)
Werte der generischen Parameter.
Defaultwert: []
Wertevorschläge: 'true'"true""true""true""true""true", 'false'"false""false""false""false""false", 1, 0.9, 1.1, 5, 10, 20, 30, 0.05, 0.1, 0.2
DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModeldeformable_surface_model (output_control) deformable_surface_model → HDeformableSurfaceModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des deformierbaren Oberflächenmodells.
Ergebnis
Wenn alle Parameter korrekt sind liefert
create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModelcreate_deformable_surface_model den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3dread_object_model_3d,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d,
get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParamsget_object_model_3d_params
Nachfolger
add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sample,
add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointadd_deformable_surface_model_reference_point,
find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModelfind_deformable_surface_model,
refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModelrefine_deformable_surface_model,
get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamget_deformable_surface_model_param,
write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModelWriteDeformableSurfaceModelwrite_deformable_surface_model,
clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModelClearDeformableSurfaceModelclear_deformable_surface_model
Alternativen
read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModelread_deformable_surface_model
Siehe auch
find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModelfind_deformable_surface_model,
refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModelrefine_deformable_surface_model,
read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModelread_deformable_surface_model,
add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sample,
add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointadd_deformable_surface_model_reference_point,
write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModelWriteDeformableSurfaceModelwrite_deformable_surface_model,
clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModelClearDeformableSurfaceModelclear_deformable_surface_model
Literatur
Bertram Drost, Slobodan Ilic: „Graph-Based Deformable
3D Object Matching.“ Proceedings of the 37th German Conference
on Pattern Recognition, pp. 222-233, 2015.
Modul
3D Metrology