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

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)

def create_deformable_surface_model(object_model_3d: HHandle, rel_sampling_distance: float, gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[str, float, int]]) -> HHandle

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.

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

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

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