KlassenKlassenKlassenKlassen | | | | Operatoren

create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModel (Operator)

Name

create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModel — Erstellt die für deformierbares oberflächenbasiertes Matching notwendigen Datenstrukturen.

Signatur

create_deformable_surface_model( : : ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue : DeformableSurfaceModel)

Herror create_deformable_surface_model(const Hlong ObjectModel3D, double RelSamplingDistance, const char* GenParamName, const char* GenParamValue, Hlong* DeformableSurfaceModel)

Herror T_create_deformable_surface_model(const Htuple ObjectModel3D, const Htuple RelSamplingDistance, const Htuple GenParamName, const Htuple GenParamValue, Htuple* DeformableSurfaceModel)

Herror create_deformable_surface_model(const HTuple& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue, Hlong* DeformableSurfaceModel)

HDeformableSurfaceModel HObjectModel3D::CreateDeformableSurfaceModel(const HTuple& RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const

void HDeformableSurfaceModel::CreateDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& GenParamName, const HTuple& GenParamValue)

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

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::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 HOperatorSetX.CreateDeformableSurfaceModel(
[in] VARIANT ObjectModel3D, [in] VARIANT RelSamplingDistance, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* DeformableSurfaceModel)

IHDeformableSurfaceModelX* HObjectModel3DX.CreateDeformableSurfaceModel(
[in] double RelSamplingDistance, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

void HDeformableSurfaceModelX.CreateDeformableSurfaceModel(
[in] IHObjectModel3DX* ObjectModel3D, [in] double RelSamplingDistance, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

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_modelCreateDeformableSurfaceModelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModel erstellt aus dem 3D-Objektmodell ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D ein Modell für deformierbares oberflächenbasiertes Matching. Das 3D-Oberflächenmodell kann beispielsweise mittels read_object_model_3dread_object_model_3dReadObjectModel3dread_object_model_3dReadObjectModel3dReadObjectModel3d aus einer Datei gelesen worden sein oder mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d erstellt worden sein. Das Handle des erstellten Oberflächenmodells wird in DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModel 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 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance spezifiziert, und wird relativ zum Durchmesser des umschließenden achsenparallelen Quaders angegeben. Wird z.B. RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance auf 0.05 gesetzt und ist der Durchmesser von ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D 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_modelFindDeformableSurfaceModelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModel verwendet. Die abgetasteten Punkte können mit dem Operator get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParam 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 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance, so werden mehr Punkte abgetastet, was zu einem stabileren aber langsameren Matching führt. Erhöht man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance, so werden weniger Punkte abgetastet, was zu einem schnelleren aber weniger stabilen Matching führt.

(1) (2) (3) (4)
(1) Ursprüngliches 3D-Modell. (2) 3D-Modell abgetastet mit RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance = 0.02. (3) RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance = 0.03. (4) RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance = 0.05.

Standardmäßig können mit create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModel erstellte deformierbare Oberflächenmodelle bereits eine moderate Deformation handhaben. Der Operator add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSample 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 GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue können generische Parameter und deren Werte übergeben werden. GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName enthält ein Tupel von Parameternamen die gesetzt werden sollen, und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue die dazugehörigen Werte. Die folgenden Werte sind für GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName 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 dem selben 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 aussen zeigen, d.h. konsistent orientiert sind.

Mögliche Werte: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"

Standardwert: 'false'"false""false""false""false""false"

'scale_min'"scale_min""scale_min""scale_min""scale_min""scale_min" and '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.

Suggested values: 0.8, 1, 1.2

Default value: No scaling

Assertion: 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.

Suggested values: 5, 10, 30

Default value: 20

Assertion: 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.

Suggested values: 0.2, 0.5, 0.8

Default value: 0.5

Assertion: 0 < 'stiffness'"stiffness""stiffness""stiffness""stiffness""stiffness" <= 1

Parallelisierung

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.

Parameter

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D (input_control)  object_model_3d HObjectModel3D, HTupleHTupleHObjectModel3D, HTupleHObjectModel3DX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des 3D-Objektmodells.

RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (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"

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHTupleVARIANTHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong) (BSTR / 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

DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModel (output_control)  deformable_surface_model HDeformableSurfaceModel, HTupleHTupleHDeformableSurfaceModel, HTupleHDeformableSurfaceModelX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des deformierbaren Oberflächenmodells.

Ergebnis

Wenn alle Parameter korrekt sind liefert create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModel den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

read_object_model_3dread_object_model_3dReadObjectModel3dread_object_model_3dReadObjectModel3dReadObjectModel3d, 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

Nachfolger

add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSample, add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePoint, find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModel, refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModel, get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParam, write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModel, clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModel

Alternativen

read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModel

Siehe auch

find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModel, refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModel, read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModel, add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSample, add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePoint, write_deformable_surface_modelwrite_deformable_surface_modelWriteDeformableSurfaceModelwrite_deformable_surface_modelWriteDeformableSurfaceModelWriteDeformableSurfaceModel, clear_deformable_surface_modelclear_deformable_surface_modelClearDeformableSurfaceModelclear_deformable_surface_modelClearDeformableSurfaceModelClearDeformableSurfaceModel

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


KlassenKlassenKlassenKlassen | | | | Operatoren