create_deformable_surface_modelT_create_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModel (Operator)
Name
create_deformable_surface_modelT_create_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModel
— 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_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModel
erstellt aus dem 3D-Objektmodell
ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
ein Modell für deformierbares oberflächenbasiertes
Matching.
Das 3D-Oberflächenmodell kann beispielsweise mittels
read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d
aus einer Datei gelesen worden sein oder
mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d
erstellt worden sein.
Das Handle des erstellten Oberflächenmodells wird in
DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModel
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 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance
spezifiziert, und wird relativ zum Durchmesser des umschließenden
achsenparallelen Quaders angegeben. Wird z.B. RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance
auf 0.05 gesetzt und ist der Durchmesser von
ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
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_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModel
verwendet.
Die abgetasteten Punkte können mit dem Operator
get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamGetDeformableSurfaceModelParam
als '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 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance
, so werden mehr Punkte
abgetastet, was zu einem stabileren aber langsameren Matching führt.
Erhöht man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance
, 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_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModel
erstellte
deformierbare Oberflächenmodelle bereits eine moderate Deformation handhaben.
Der Operator add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSample
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_max'"scale_max""scale_max""scale_max""scale_max" und 'bending_max'"bending_max""bending_max""bending_max""bending_max"
kontrolliert werden (siehe unten).
In den Parametern GenParamNameGenParamNameGenParamNameGenParamNamegenParamName
und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue
können
generische Parameter und deren Werte übergeben werden. GenParamNameGenParamNameGenParamNameGenParamNamegenParamName
enthält ein Tupel von Parameternamen die gesetzt werden sollen, und
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue
die dazugehörigen Werte.
Die folgenden Werte sind für GenParamNameGenParamNameGenParamNameGenParamNamegenParamName
möglich:
- '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"
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.
Mögliche Werte: 'false'"false""false""false""false", 'true'"true""true""true""true"
Standardwert: 'false'"false""false""false""false"
- 'scale_min'"scale_min""scale_min""scale_min""scale_min" and '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.
Suggested values: 0.8, 1, 1.2
Default value: No scaling
Assertion: 0 < 'scale_min'"scale_min""scale_min""scale_min""scale_min" < 'scale_max'"scale_max""scale_max""scale_max""scale_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" verbogen wird.
Dies erlaubt das Finden von Deformationen innerhalb dieses Biegebereichs.
Der Winkel wird in Grad angegeben.
Suggested values: 5, 10, 30
Default value: 20
Assertion: 0 <= 'bending_max'"bending_max""bending_max""bending_max""bending_max" < 90
- '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.
Suggested values: 0.2, 0.5, 0.8
Default value: 0.5
Assertion: 0 < '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
ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
(input_control) object_model_3d →
HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des 3D-Objektmodells.
RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance
(input_control) real →
HTupleHTupleHtuple (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
GenParamNameGenParamNameGenParamNameGenParamNamegenParamName
(input_control) attribute.name(-array) →
HTupleHTupleHtuple (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", 'scale_min'"scale_min""scale_min""scale_min""scale_min", 'scale_max'"scale_max""scale_max""scale_max""scale_max", 'bending_max'"bending_max""bending_max""bending_max""bending_max", 'stiffness'"stiffness""stiffness""stiffness""stiffness"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue
(input_control) attribute.value(-array) →
HTupleHTupleHtuple (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", 'false'"false""false""false""false", 1, 0.9, 1.1, 5, 10, 20, 30, 0.05, 0.1, 0.2
DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModel
(output_control) deformable_surface_model →
HDeformableSurfaceModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des deformierbaren Oberflächenmodells.
Ergebnis
Wenn alle Parameter korrekt sind liefert
create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModel
den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d
,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d
,
get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams
Nachfolger
add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSample
,
add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePoint
,
find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModel
,
refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModel
,
get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamGetDeformableSurfaceModelParam
,
write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModelWriteDeformableSurfaceModel
,
clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModelClearDeformableSurfaceModel
Alternativen
read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModel
Siehe auch
find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModel
,
refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModel
,
read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModel
,
add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSample
,
add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePoint
,
write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModelWriteDeformableSurfaceModel
,
clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModelClearDeformableSurfaceModel
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