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

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

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

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.

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

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

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