Name
find_deformable_surface_modelT_find_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModel — Suchen des besten Matches eines deformierbaren Oberflächenmodells in einer
Szene.
void FindDeformableSurfaceModel(const HTuple& DeformableSurfaceModel, const HTuple& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& MinScore, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HTuple* DeformableSurfaceMatchingResult)
HTuple HObjectModel3D::FindDeformableSurfaceModel(const HDeformableSurfaceModel& DeformableSurfaceModel, double RelSamplingDistance, const HTuple& MinScore, const HTuple& GenParamName, const HTuple& GenParamValue, HDeformableSurfaceMatchingResultArray* DeformableSurfaceMatchingResult) const
double HObjectModel3D::FindDeformableSurfaceModel(const HDeformableSurfaceModel& DeformableSurfaceModel, double RelSamplingDistance, double MinScore, const HTuple& GenParamName, const HTuple& GenParamValue, HDeformableSurfaceMatchingResult* DeformableSurfaceMatchingResult) const
HTuple HDeformableSurfaceModel::FindDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HTuple& MinScore, const HTuple& GenParamName, const HTuple& GenParamValue, HDeformableSurfaceMatchingResultArray* DeformableSurfaceMatchingResult) const
double HDeformableSurfaceModel::FindDeformableSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double MinScore, const HTuple& GenParamName, const HTuple& GenParamValue, HDeformableSurfaceMatchingResult* DeformableSurfaceMatchingResult) const
static HTuple HDeformableSurfaceMatchingResult::FindDeformableSurfaceModel(const HDeformableSurfaceModel& DeformableSurfaceModel, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, const HTuple& MinScore, const HTuple& GenParamName, const HTuple& GenParamValue, HDeformableSurfaceMatchingResultArray* DeformableSurfaceMatchingResult)
double HDeformableSurfaceMatchingResult::FindDeformableSurfaceModel(const HDeformableSurfaceModel& DeformableSurfaceModel, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double MinScore, const HTuple& GenParamName, const HTuple& GenParamValue)
static void HOperatorSet.FindDeformableSurfaceModel(HTuple deformableSurfaceModel, HTuple objectModel3D, HTuple relSamplingDistance, HTuple minScore, HTuple genParamName, HTuple genParamValue, out HTuple score, out HTuple deformableSurfaceMatchingResult)
HTuple HObjectModel3D.FindDeformableSurfaceModel(HDeformableSurfaceModel deformableSurfaceModel, double relSamplingDistance, HTuple minScore, HTuple genParamName, HTuple genParamValue, out HDeformableSurfaceMatchingResult[] deformableSurfaceMatchingResult)
double HObjectModel3D.FindDeformableSurfaceModel(HDeformableSurfaceModel deformableSurfaceModel, double relSamplingDistance, double minScore, HTuple genParamName, HTuple genParamValue, out HDeformableSurfaceMatchingResult deformableSurfaceMatchingResult)
HTuple HDeformableSurfaceModel.FindDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, HTuple minScore, HTuple genParamName, HTuple genParamValue, out HDeformableSurfaceMatchingResult[] deformableSurfaceMatchingResult)
double HDeformableSurfaceModel.FindDeformableSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, double minScore, HTuple genParamName, HTuple genParamValue, out HDeformableSurfaceMatchingResult deformableSurfaceMatchingResult)
static HTuple HDeformableSurfaceMatchingResult.FindDeformableSurfaceModel(HDeformableSurfaceModel deformableSurfaceModel, HObjectModel3D objectModel3D, double relSamplingDistance, HTuple minScore, HTuple genParamName, HTuple genParamValue, out HDeformableSurfaceMatchingResult[] deformableSurfaceMatchingResult)
double HDeformableSurfaceMatchingResult.FindDeformableSurfaceModel(HDeformableSurfaceModel deformableSurfaceModel, HObjectModel3D objectModel3D, double relSamplingDistance, double minScore, HTuple genParamName, HTuple genParamValue)
find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModel sucht den besten Match des
deformierbaren Oberflächenmodells DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModel in der
3D-Szene ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D.
Das deformierbare Oberflächenmodell DeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModelDeformableSurfaceModeldeformableSurfaceModel muss
zuvor z.B. mittels create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModel oder
read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModel erstellt worden sein.
Das 3D-Objektmodell der Szene kann beispielsweise mittels
read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d aus einer Datei gelesen worden sein oder
aus Bildern mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d erstellt worden sein.
Für das Auffinden des deformierbaren Oberflächenmodells muss das
3D-Objektmodell der Szene Punkte und Normalen aufweisen.
Die folgenden Kombinationen sind hier möglich:
Wird eine vermaschte Szene mit Dreiecken oder Polygonen übergeben, z.B. ein
CAD-Modell, so werden die Flächen ignoriert und nur die Punkte der Szene
verwendet. In der Regel sollte daher nicht in einer vermaschten Szene
gesucht werden. Stattdessen sollte eine solche Szene zuvor beispielsweise mit
sample_object_model_3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3dSampleObjectModel3d in Punkte mit Normalen umgewandelt werden.
Werden verrauschte Daten verwendet, z.B. von Time-of-Flight-Kameras,
sollte der generische Parameter 'scene_normal_computation'"scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation" auf
'mls'"mls""mls""mls""mls" gesetzt werden um robustere Ergebnisse zu erhalten (s.u.).
Die 3D-Szene ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D wird zunächst gleichmäßig
abgetastet. Der Parameter RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance gibt die
Abtastdistanz relativ zum Durchmesser des Oberflächenmodells an.
Verkleinert man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance, so werden mehr
Punkte der Szene abgetastet, was zu einem stabileren aber
langsameren Matching führt.
Erhöht man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance, so werden weniger Punkte
abgetastet, was zu einem weniger stabilen aber schnelleren Matching
führt. Eine Illustration zur RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance befindet sich
bei dem Operator create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModel.
Die abgetasteten Punkte können mit dem Operator
get_deformable_surface_matching_resultget_deformable_surface_matching_resultGetDeformableSurfaceMatchingResultGetDeformableSurfaceMatchingResultGetDeformableSurfaceMatchingResult abgerufen werden. Für ein
robustes Matching sollten mindestens 50-100 Punkte auf jeder
zu findenden Objektinstanz liegen.
Zunächst wird die ungefähre Lage des Objektes gesucht. Diese wird
anschließend verfeinert, d.h. genauer an die Szene angepasst.
Die generischen Parameter zum Steuern der Verfeinerung sind weiter unten
beschrieben.
Wurde eine Objektinstanz gefunden, so wird in ScoreScoreScoreScorescore eine
Bewertung des Ergebnisses zurückgeliefert und im Ergebnishandle
DeformableSurfaceMatchingResultDeformableSurfaceMatchingResultDeformableSurfaceMatchingResultDeformableSurfaceMatchingResultdeformableSurfaceMatchingResult dessen Lage und Deformation.
Die Details des Ergebnisses, z.B. das deformierte Modell oder die Lage
von Referenzpunkten, können über den Operator
get_deformable_surface_matching_resultget_deformable_surface_matching_resultGetDeformableSurfaceMatchingResultGetDeformableSurfaceMatchingResultGetDeformableSurfaceMatchingResult abgerufen werden.
Das zurückgegebene Ergebnishandle muss mittels
clear_deformable_surface_matching_resultclear_deformable_surface_matching_resultClearDeformableSurfaceMatchingResultClearDeformableSurfaceMatchingResultClearDeformableSurfaceMatchingResult
freigegeben werden.
Die Bewertung ist zwischen 0 und 1 normalisiert und
repräsentiert welcher Anteil der Oberfläche des Modells in der Szene
gefunden wurde.
Ein Wert von 1 bedeutet dabei ein perfektes Ergebnis, d.h. das
gesamte Modell wurde gefunden.
Der Parameter MinScoreMinScoreMinScoreMinScoreminScore kann verwendet werden um das Ergebnis zu
filtern. Ein Match wird nur zurückgegeben, wenn sein Score größer
als MinScoreMinScoreMinScoreMinScoreminScore ist.
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:
- 'scene_normal_computation'"scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation":
-
Dieser Parameter steuert die Normalenberechnung der
abgetasteten 3D-Szene.
Im Standard-Modus 'fast'"fast""fast""fast""fast" werden die Normalen anhand einer
relativ kleinen Nachbarschaft berechnen.
Im Modus 'mls'"mls""mls""mls""mls" wird eine größere Nachbarschaft
einbezogen und das komplexere aber genauere 'mls'"mls""mls""mls""mls"-Verfahren
für die Normalenberechnung verwendet.
Eine genauere Beschreibung des 'mls'"mls""mls""mls""mls"-Verfahrens findet sich
beim Operator surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d.
Der 'mls'"mls""mls""mls""mls"-Modus ist vor allem für Daten mit hohem Rauschen
gedacht, z.B. für Bilder aus Time-of-Flight-Kameras.
Mögliche Werte: 'fast'"fast""fast""fast""fast", 'mls'"mls""mls""mls""mls"
Standardwert: 'fast'"fast""fast""fast""fast"
- 'pose_ref_num_steps'"pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps":
-
Anzahl der Iterationen der deformierbaren Verfeinerung.
Erhöht man diesen Wert, so wird die Verfeinerung genauer aber
langsamer.
Verringert man den Wert, so wird sie entsprechend ungenauer und
schneller.
Ab einer gewissen Anzahl an Iterationen konvergiert das Verfahren,
so dass eine weitere Erhöhung keinen Effekt mehr auf die
Genauigkeit hat.
Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung
deaktiviert ist.
Vorgeschlagene Werte: 1, 10, 25,
50
Standardwert: 25
Assertion: 'pose_ref_num_steps'"pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps" > 0
- 'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel":
-
Setzt den Abstandsschwellwert für die deformierbare Verfeinerung
relativ zum Durchmesser des Modells.
Nur Punkte deren Abstand zur Objektinstanz diesen Schwellwert
unterschreiten gehen in die Verfeinerung ein. Punkte, die
weiter von der Instanz entfernt sind, werden ignoriert.
Nur einer der beiden Parameter 'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel"
und 'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs" sollte gesetzt werden.
Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert
verwendet.
Vorgeschlagene Werte: 0.05, 0.1,
0.25, 0.3
Standardwert: 0.25
Assertion: 0 < 'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel"
- 'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs":
-
Setzt den Abstandsschwellwert für die deformierbare Verfeinerung
als absoluten Wert.
Für Details siehe den Parameter
'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel".
Nur einer der beiden Parameter 'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel"
und 'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs" sollte gesetzt werden.
Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert
verwendet.
Assertion: 0 < 'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs"
- 'pose_ref_scoring_dist_rel'"pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel":
-
Setzt den Abstandsschwellwert für die Score-Berechnung relativ
zum Durchmesser des Modells.
Für Details siehe den Parameter
'pose_ref_scoring_dist_abs'"pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs".
Nur einer der beiden Parameter 'pose_ref_scoring_dist_rel'"pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel"
und 'pose_ref_scoring_dist_abs'"pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs" sollte gesetzt werden.
Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert
verwendet.
Vorgeschlagene Werte: 0.1, 0.05,
0.03, 0.005
Standardwert: 0.03
Assertion: 0 < 'pose_ref_scoring_dist_rel'"pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel"
- 'pose_ref_scoring_dist_abs'"pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs":
-
Setzt den Abstandsschwellwert für die Score-Berechnung als
absoluten Wert.
Nur Szenepunkte deren Abstand zur gefundenen Objektinstanz diesen
Schwellwert unterschreiten gehen in die Berechnung der Bewertung
ein und werden als 'auf dem Objekt liegend' klassifiziert. Alle
anderen Szenepunkte werden ignoriert.
Der Schwellwert sollte entsprechend dem zu erwartenden
Rauschen und der Genauigkeit der Pose-Verfeinerung gesetzt werden.
Nur einer der beiden Parameter 'pose_ref_scoring_dist_rel'"pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel"
und 'pose_ref_scoring_dist_abs'"pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs" sollte gesetzt werden.
Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert
verwendet.
Assertion: 0 < 'pose_ref_scoring_dist_abs'"pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs"
- 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.
This operator supports cancelling timeouts.
Handle des deformierbaren Oberflächenmodells.
Handle des 3D-Objektmodells, welches die Szene
enthält.
Abtastdistanz der Szene relativ zum
Durchmesser des Oberflächenmodells.
Defaultwert: 0.05
Wertevorschläge: 0.1, 0.07, 0.05, 0.04, 0.03
Restriktion: 0 < RelSamplingDistance < 1
Mindestbewertung des zurückgegebenen Matches.
Defaultwert: 0
Restriktion: MinScore >= 0
Namen der generischen Parameter.
Defaultwert: []
Werteliste: 'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs", 'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel", 'pose_ref_num_steps'"pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps", 'pose_ref_scoring_dist_abs'"pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs", 'pose_ref_scoring_dist_rel'"pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel", 'scene_normal_computation'"scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation"
Werte der generischen Parameter
Defaultwert: []
Wertevorschläge: 'fast'"fast""fast""fast""fast", 'mls'"mls""mls""mls""mls", 0, 1, 10, 25, 50, 0.05, 0.1, 0.25, 0.3, 0.05, 0.03, 0.005
Bewertung der gefundenen Objektinstanz.
Ergebnishandle des Matchings.
Wenn alle Parameter korrekt sind liefert
find_deformable_surface_modelfind_deformable_surface_modelFindDeformableSurfaceModelFindDeformableSurfaceModelFindDeformableSurfaceModel den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
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,
read_deformable_surface_modelread_deformable_surface_modelReadDeformableSurfaceModelReadDeformableSurfaceModelReadDeformableSurfaceModel,
create_deformable_surface_modelcreate_deformable_surface_modelCreateDeformableSurfaceModelCreateDeformableSurfaceModelCreateDeformableSurfaceModel,
get_deformable_surface_model_paramget_deformable_surface_model_paramGetDeformableSurfaceModelParamGetDeformableSurfaceModelParamGetDeformableSurfaceModelParam,
add_deformable_surface_model_reference_pointadd_deformable_surface_model_reference_pointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePointAddDeformableSurfaceModelReferencePoint,
add_deformable_surface_model_sampleadd_deformable_surface_model_sampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSampleAddDeformableSurfaceModelSample
refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModel,
get_deformable_surface_matching_resultget_deformable_surface_matching_resultGetDeformableSurfaceMatchingResultGetDeformableSurfaceMatchingResultGetDeformableSurfaceMatchingResult,
clear_deformable_surface_matching_resultclear_deformable_surface_matching_resultClearDeformableSurfaceMatchingResultClearDeformableSurfaceMatchingResultClearDeformableSurfaceMatchingResult,
clear_object_model_3dclear_object_model_3dClearObjectModel3dClearObjectModel3dClearObjectModel3d
refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModel
refine_deformable_surface_modelrefine_deformable_surface_modelRefineDeformableSurfaceModelRefineDeformableSurfaceModelRefineDeformableSurfaceModel
3D Metrology