find_surface_modelT_find_surface_modelFindSurfaceModelFindSurfaceModel (Operator)

Name

find_surface_modelT_find_surface_modelFindSurfaceModelFindSurfaceModel — Suche der besten Matches eines Oberflächenmodells in einer Szene.

Signatur

find_surface_model( : : SurfaceModelID, ObjectModel3D, RelSamplingDistance, KeyPointFraction, MinScore, ReturnResultHandle, GenParamName, GenParamValue : Pose, Score, SurfaceMatchingResultID)

Herror T_find_surface_model(const Htuple SurfaceModelID, const Htuple ObjectModel3D, const Htuple RelSamplingDistance, const Htuple KeyPointFraction, const Htuple MinScore, const Htuple ReturnResultHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* Pose, Htuple* Score, Htuple* SurfaceMatchingResultID)

void FindSurfaceModel(const HTuple& SurfaceModelID, const HTuple& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Pose, HTuple* Score, HTuple* SurfaceMatchingResultID)

HPoseArray HObjectModel3D::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, double RelSamplingDistance, double KeyPointFraction, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID) const

HPose HObjectModel3D::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, double RelSamplingDistance, double KeyPointFraction, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

HPose HObjectModel3D::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, double RelSamplingDistance, double KeyPointFraction, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

HPose HObjectModel3D::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, double RelSamplingDistance, double KeyPointFraction, double MinScore, const wchar_t* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const   (Nur Windows)

HPoseArray HSurfaceModel::FindSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID) const

HPose HSurfaceModel::FindSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

HPose HSurfaceModel::FindSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

HPose HSurfaceModel::FindSurfaceModel(const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const wchar_t* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const   (Nur Windows)

static HPoseArray HSurfaceMatchingResult::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID)

HPose HSurfaceMatchingResult::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)

HPose HSurfaceMatchingResult::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)

HPose HSurfaceMatchingResult::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const wchar_t* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)   (Nur Windows)

static void HOperatorSet.FindSurfaceModel(HTuple surfaceModelID, HTuple objectModel3D, HTuple relSamplingDistance, HTuple keyPointFraction, HTuple minScore, HTuple returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple pose, out HTuple score, out HTuple surfaceMatchingResultID)

HPose[] HObjectModel3D.FindSurfaceModel(HSurfaceModel surfaceModelID, double relSamplingDistance, double keyPointFraction, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID)

HPose HObjectModel3D.FindSurfaceModel(HSurfaceModel surfaceModelID, double relSamplingDistance, double keyPointFraction, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult surfaceMatchingResultID)

HPose[] HSurfaceModel.FindSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID)

HPose HSurfaceModel.FindSurfaceModel(HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult surfaceMatchingResultID)

static HPose[] HSurfaceMatchingResult.FindSurfaceModel(HSurfaceModel surfaceModelID, HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID)

HPose HSurfaceMatchingResult.FindSurfaceModel(HSurfaceModel surfaceModelID, HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score)

Beschreibung

Der Operator find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModel sucht die besten Matches des Oberflächenmodells SurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDsurfaceModelID in der 3D-Szene ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D und gibt ihre Posen in PosePosePosePosepose zurück.

Der Matching-Vorgang ist in drei Schritte unterteilt:

  1. Näherungsweises Matching

  2. Grobe Pose-Verfeinerung

  3. Exakte Pose-Verfeinerung

Die einzelnen Schritte und ihre entsprechenden generischen Parameter werden in einem separaten Abschnitt weiter unten genauer erläutert. Die weiteren Abschnitte beschreiben die Parameter und die zu beachtenden Punkte.

Die HDevelop-Prozedur debug_find_surface_model kann verwendet werden, um den Matchingprozess und die eingestellten Parameter zu visualisieren und zu überprüfen.

Zu beachtende Punkte

Zum Auffinden des Oberflächenmodells werden Punkte und Normalen der 3D-Szene verwendet. Die Szene sollte eine der folgenden Optionen zur Verfügung stellen:

Für eine genaue PosePosePosePosepose ist es wichtig, dass die Normalen der Szene und des Modells in die gleiche Richtung zeigen (siehe 'scene_invert_normals'"scene_invert_normals""scene_invert_normals""scene_invert_normals""scene_invert_normals"). Wenn das Oberflächenmodell für kantenunterstütztes oberflächenbasiertes Matching vorbereitet wurde, ist lediglich die zweite Kombination möglich, d.h. die Szene muss ein 2D-Mapping beinhalten. Für solche Oberflächenmodelle ist es notwendig, dass die Normalen einwärts ausgerichtet sind.

Wird eine vermaschte Szene mit Dreiecken oder Polygonen übergeben, etwa ein CAD-Modell, so werden diese 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 etwa 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 (siehe unten).

Parameterbeschreibung

SurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDsurfaceModelID ist das Handle des Oberflächenmodells. Das Modell muss zuvor mittels create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel oder read_surface_modelread_surface_modelReadSurfaceModelReadSurfaceModelReadSurfaceModel erstellt, bzw eingelesen worden sein. Gewisse Oberflächenmodell-Parameter, welche das Auffinden beeinflussen, können über den Operator set_surface_model_paramset_surface_model_paramSetSurfaceModelParamSetSurfaceModelParamSetSurfaceModelParam gesetzt werden, z.B. 'pose_restriction_max_angle_diff'"pose_restriction_max_angle_diff""pose_restriction_max_angle_diff""pose_restriction_max_angle_diff""pose_restriction_max_angle_diff" zum Einschränken des Rotationsbereichs.

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D ist das Handle des 3D-Objektmodells mit der Szene in der die Matches gesucht werden. Es wird angenommen, dass die Kamera entlang der z-Achse ausgerichtet ist. Dies ist wichtig bei der Ausrichtung der Normalen der Szene, falls diese neu berechnet werden (siehe unten).

Der Parameter RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance kontrolliert die Abtastdistanz während des Schrittes Näherungsweises Matching und bei der Berechnung des ScoreScoreScoreScorescore im Schritt Grobe Pose-Verfeinerung. Sein Wert wird relativ zum Durchmesser des Oberflächenmodells angegeben. 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_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel. Die abgetasteten Punkte können mit dem Operator get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult abgerufen werden. Für ein robustes Matching sollten mindestens 50-100 Punkte auf jeder zu findenden Objektinstanz liegen.

Der Parameter KeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionkeyPointFraction kontrolliert wie viele der abgetasteten Szenenpunkte als Schlüsselpunkte ausgewählt werden. Wird dieser Wert etwa auf 0.1 gesetzt, so werden 10% der abgetasteten Szenepunkte als Schlüsselpunkte verwendet. Für robuste Ergebnisse ist es wichtig, dass auf jeder zu findenden Objektinstanz mehrere Schlüsselpunkte liegen. Erhöht man KeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionkeyPointFraction, so werden mehr Punkte als Schlüsselpunkte ausgewählt, was zu einem robusteren aber langsameren Matching führt. Verringert man den Wert so werden weniger Schlüsselpunkte ausgewählt, was zu einem weniger robusten aber schnelleren Matching führt. Für eine visuelle Überprüfung können die ausgewählten Schlüsselpunkte mit dem Operator get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult abgerufen werden.

Der Parameter MinScoreMinScoreMinScoreMinScoreminScore kann verwendet werden um die Ergebnisse zu filtern. Nur Instanzen deren Bewertung größer als MinScoreMinScoreMinScoreMinScoreminScore ist werden zurückgegeben. Wird MinScoreMinScoreMinScoreMinScoreminScore auf 0 gesetzt, so werden alle gefundenen Instanzen zurückgegeben.

Für das kantenunterstützte oberflächenbasierte Matching (siehe create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel) werden vier Einzelbewertungen ermittelt (siehe weiter unten für ihre Beschreibung). Für Modelle die zur Berechnung einer ansichtsbasierten Bewertung trainiert wurden (siehe create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel), wird eine weitere, fünfte Einzelbewertungen ermittelt. Entsprechend können die Resultate mit jeder dieser Bewertungen gefiltert werden, indem MinScoreMinScoreMinScoreMinScoreminScore ein Tupel mit bis zu fünf Schwellwerten übergeben wird. Diese Schwellwerte sind in der gleichen Reihenfolge wie die Bewertungen geordnet (siehe weiter unten) und fehlende Einträge werden als 0 betrachtet, was bedeutet, dass keine Ergebnisse aufgrund dieser Bewertung herausgefiltert wird. Zum Finden geeigneter Schwellwerte können die Einzelbewertungen gefundener Posen mit dem Operator get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult erhalten werden. Je nach Einstellung des Verfahrens sind möglicherweise nicht alle Bewertungen verfügbar. Für nicht verfügbare Bewertungen wird der in MinScoreMinScoreMinScoreMinScoreminScore eingestellte Schwellwert ignoriert. Die fünf Einzelbewertungen, deren Schwellwerte in dieser Reihenfolge in MinScoreMinScoreMinScoreMinScoreminScore übergeben werden müssen, sind:

  1. Die Gesamtbewertung wie in ScoreScoreScoreScorescore und durch 'score'"score""score""score""score" in get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult zurückgegeben.

  2. Der Oberflächenanteil der Ergebnisbewertung, d.h. welcher Anteil der Objektoberfläche in der Szene gefunden wurde, zurückgegeben durch 'score_surface'"score_surface""score_surface""score_surface""score_surface" in get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult.

  3. Der Anteil der 3D-Kanten der Ergebnisbewertung, d.h. wie gut die 3D-Kanten des Objekts mit den in der Szene gefundenen 3D-Kanten übereinstimmen, zurückgegeben durch 'score_3d_edges'"score_3d_edges""score_3d_edges""score_3d_edges""score_3d_edges" in get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult.

  4. Der Anteil der 2D-Kanten der Ergebnisbewertung, d.h. wie gut die projizierten Objektsilhouetten mit den in den Bildern gefundenen Kanten übereinstimmen (nur für die Operatoren find_surface_model_imagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImageFindSurfaceModelImage und refine_surface_model_pose_imagerefine_surface_model_pose_imageRefineSurfaceModelPoseImageRefineSurfaceModelPoseImageRefineSurfaceModelPoseImage verfügbar), zurückgegeben durch 'score_2d_edges'"score_2d_edges""score_2d_edges""score_2d_edges""score_2d_edges" in get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult.

  5. Der ansichtsbasierte Anteil der Ergebnisbewertung, d.h. wie viele Punkte der Szene einem Modellpunkt zugeordnet werden konnten im Verhältnis zu den Modellpunkten, die in dieser Ansicht sichtbar sind, zurückgegeben durch 'score_view_based'"score_view_based""score_view_based""score_view_based""score_view_based" in get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult.

Der Parameter ReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandlereturnResultHandle bestimmt, ob ein Handle für das Ergebnis des oberflächenbasierten Matchings zurückgegeben werden soll oder nicht. Falls der Parameter den Wert 'true'"true""true""true""true" erhält, wird das Handle unter dem Parameter SurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDsurfaceMatchingResultID zurückgegeben. Weitere Details des Matchingverfahrens können dann mittels get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult abgerufen werden.

Die Parameter GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue werden zum Setzen generischer Parameter verwendet. Beide erhalten ein Tupel gleicher Länge, wobei das Tupel von GenParamNameGenParamNameGenParamNameGenParamNamegenParamName die Namen der zu setzenden Parameter enthält und das Tupel GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue die entsprechenden Werte. Die möglichen Parameternamen und Parameterwerte sind im Abschnitt Die drei Schritte des Matching-Vorgangs beschrieben.

Der Ausgabeparameter PosePosePosePosepose gibt die Pose der gefundenen Instanzen zurück. Er beschreibt die Pose des Oberflächenmodells im Szenenkoordinatensystem (scs) und bezieht sich auf das Modellkoordinatensystem des 3D-Objektmodells (mcs), welches für create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel verwendet wurde. Somit ist die Pose in der Form (siehe auch Transformationen / Posen und „Solution Guide III-C - 3D Vision“).

Der Ausgabeparameter ScoreScoreScoreScorescore gibt für jede übereinstimmende Instanz eine Bewertung zurück. Der Wert und die Interpretation der Bewertung sind, wie im folgenden Abschnitt erläutert, für verschiedene Fälle unterschiedlich.

Der Ausgabeparameter SurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDsurfaceMatchingResultID gibt ein Ergebnishandle für das Oberflächenmatching zurück. Mittels dieses Handles können weitere Details des Matchingverfahrens unter Verwendung des Operators get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult abgerufen werden. Das Handle wird nur zurückgegeben, wenn ReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandlereturnResultHandle auf 'true'"true""true""true""true" gesetzt ist.

Die drei Schritte des Matching-Vorgangs

Der Matching-Vorgang ist in drei Schritte unterteilt:

1. Näherungsweises Matching

Die ungefähren Posen der Instanzen des Oberflächenmodells in der Szene werden gesucht.

Die 3D-Szene ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D wird zunächst gleichmäßig abgetastet. Die Abtastdistanz wird durch den Parameter RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance kontrolliert.

Aus den abgetasteten Szenepunkten werden eine Reihe von Schlüsselpunkten ausgewählt. Die Anzahl der Schlüsselpunkte wird mit dem Parameter KeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionkeyPointFraction gesteuert.

Für jeden Schlüsselpunkt wird die optimale Pose des Oberflächenmodells unter der Annahme, dass der Schlüsselpunkt auf einer Objektinstanz liegt, bestimmt. Dazu werden Punktpaare aus dem Schlüsselpunkt und allen anderen Szenepunkten gebildet. Für jedes dieser Punktpaare werden die Paare auf der Oberfläche des Oberflächenmodells gesucht, die einen ähnlichen Abstand und eine ähnliche Orientierung besitzen. Das Ähnlichkeitsmaß wird dabei über die Parameter 'feat_step_size_rel'"feat_step_size_rel""feat_step_size_rel""feat_step_size_rel""feat_step_size_rel" und 'feat_angle_resolution'"feat_angle_resolution""feat_angle_resolution""feat_angle_resolution""feat_angle_resolution" im Operator create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel definiert. Die Pose für welche die meisten Punkte aus der abgetasteten Szene auf dem Modell liegen wird als optimale Pose für den Schlüsselpunkt definiert. Die Anzahl abgetasteter Szenepunkten auf dem Objekt ist die Bewertung der Pose.

Wenn das Oberflächenmodell für kantenunterstütztes oberflächenbasiertes Matching vorbereitet wurde, werden -- ähnlich zum Operator edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d -- 3D-Kanten aus der Szene extrahiert und abgetastet. Zusätzlich zu den Oberflächenpunkten werden anschließened Punktpaare aus dem Schlüsselpunkt und den abgetasteten 3D-Kantenpunkten gebildet und ähnliche Paare im Modell gesucht. Die Posebewertung wird anschließend durch Multiplikation der Anzahl an übereinstimmenden Kantenpunkten mit der Anzahl an übereinstimmenden Oberflächenpunkten gebildet.

Aus den Posen aller Schlüsselpunkte werden diejenigen mit der höchsten Bewertung ausgewählt und als näherungsweise Posen weiterverwendet. Die maximale Anzahl an ausgewählten Posen wird mit dem generischen Parameter 'num_matches'"num_matches""num_matches""num_matches""num_matches" gesteuert. Ist die Pose-Verfeinerung deaktiviert, so wird die oben beschriebene Bewertung jeder Pose in ScoreScoreScoreScorescore zurückgegeben. Der Wert der Bewertungen hängt dabei von der Größe der sichtbaren Oberfläche der Instanz und von der Abtastdistanz der Szene ab. Nur Posen deren Bewertung MinScoreMinScoreMinScoreMinScoreminScore überschreitet werden zurückgegeben. Um einen guten Wert für MinScoreMinScoreMinScoreMinScoreminScore zu erhalten wird empfohlen das Matching auf mehreren Szenen zu testen.

Es ist zu beachten, dass in diesem Schritt näherungsweise Posen ermittelt werden. Die Ungenauigkeit der Posen hängt von den Abtastabständen von Szene und Modell ab, und ist normalerweise weniger als 5% des Objektdurchmessers.

Die folgenden generischen Parameter steuern das näherungsweise Matching, und werden mit GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt:

'num_matches'"num_matches""num_matches""num_matches""num_matches":

Setzt die maximale Anzahl an gefundenen Instanzen die zurückgegeben werden.

Vorgeschlagene Werte: 1, 2, 5

Standardwert: 1

Assertion: 'num_matches'"num_matches""num_matches""num_matches""num_matches" > 0

'max_overlap_dist_rel'"max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel":

Aus Laufzeitgründen kann die maximale Überlappung zweier Matches nicht in 3D definiert werden. Stattdessen kann mit 'max_overlap_dist_rel' der minimale Abstand zwischen den Mittelpunkten der kleinsten achsparallelen, die Matches umschließenden Quader angegeben werden. Der Wert wird relativ zum Objektdurchmesser angegeben. Wenn ein Objekt mit einem hohen ScoreScoreScoreScorescore gefunden wurde, werden alle anderen Matches unterdrückt, für die der Mittelpunkt ihres kleinsten umschließenden Quaders zu nahe am Mittelpunkt des kleinsten umschließenden Quaders des ersten Matches liegt. Wenn sich die gefundenen Matches nicht überlappen sollen, muss der Wert für 'max_overlap_dist_rel' auf 1.0 gesetzt werden. Nur einer der beiden Parameter 'max_overlap_dist_rel'"max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel" und 'max_overlap_dist_abs'"max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs" sollte gesetzt werden. Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert verwendet.

Vorgeschlagene Werte: 0.1, 0.5, 1

Standardwert: 0.5

Assertion: 'max_overlap_dist_rel'"max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel" >= 0

'max_overlap_dist_abs'"max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs":

Dieser Parameter hat den gleichen Effekt wie der Parameter 'max_overlap_dist_rel'. Allerdings wird der Wert im Gegensatz zum Parameter 'max_overlap_dist_rel' bei 'max_overlap_dist_abs' als absoluter Wert angegeben. Eine Beschreibung des Effekts dieses Parameters ist weiter oben bei dem Parameter 'max_overlap_dist_rel' zu finden. Nur einer der beiden Parameter 'max_overlap_dist_rel'"max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel" und 'max_overlap_dist_abs'"max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs" sollte gesetzt werden. Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert verwendet.

Vorgeschlagene Werte: 1, 2, 3

Assertion: 'max_overlap_dist_abs'"max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs" >= 0

'scene_normal_computation'"scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation":

Dieser Parameter kontrolliert die Normalenberechnung der abgetasteten 3D-Szene. Im Standard-Modus 'fast'"fast""fast""fast""fast" werden die Normalen anhand einer relativ kleinen Nachbarschaft berechnet. Falls die 3D-Szene bereits Normalen enthält, werden diese benutzt. 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. In diesem Modus werden die Normalen der abgetasteten Szene in jedem Fall neu berechnet, auch wenn sie bereits Normalen enthält. 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, etwa 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"

'scene_invert_normals'"scene_invert_normals""scene_invert_normals""scene_invert_normals""scene_invert_normals":

Dieser Parameter invertiert die Normalenausrichtung der 3D-Szene. Die Normalenausrichtungen (einwärts oder auswärts) der Szene müssen mit den Ausrichtungen des 3D-Objektmodells übereinstimmen. Wenn sowohl das Modell als auch die Szene mit demselben Aufbau aufgenommen werden, so zeigen die Normalen bereits in die gleiche Richtung. Wenn beim Matching der Effekt auftritt, dass das Modell auf der 'Außenseite' der Szene gefunden wird, 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 Szene alle entweder nach innen oder nach außen zeigen, d.h. konsistent orientiert sind. Für kantenunterstütztes oberflächenbasiertes Matching müssen die Normalen einwärts ausgerichtet sein.

Für die Pose-Verfeinerung ist die Normalenausrichtung irrelevant.

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

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

'3d_edges'"3d_edges""3d_edges""3d_edges""3d_edges":

Erlaubt das manuelle Setzen der 3D-Kanten der Szene für das kantenunterstützte oberflächenbasierte Matching, wenn das Oberflächenmodell für kantenunterstütztes oberflächenbasiertes Matching vorbereitet wurde. Der Wert dieses Parameters muss ein 3D-Objektmodell-Handle sein. Die Kanten sind üblicherweise das Ergebnis des Operators edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d, können aber weiter gefiltert werden um Ausreißer zu entfernen. Wird dieser Parameter nicht angegeben, dann extrahiert find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModel die Kanten intern, analog zum Operator edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d.

'3d_edge_min_amplitude_rel'"3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel":

Setzt den Amplitudenschwellwert bei der automatischen Extraktion von 3D-Kanten für das kantenunterstützte oberflächenbasierte Matching, d.h. wenn das Oberflächenmodell mit aktiviertem 'train_3d_edges'"train_3d_edges""train_3d_edges""train_3d_edges""train_3d_edges" erzeugt wurde und keine Kanten mittels '3d_edges'"3d_edges""3d_edges""3d_edges""3d_edges" manuell übergeben wurden. Der Schwellwert wird relativ zum Durchmesser des Modells angegeben und verhält sich analog zum Parameter 'MinAmplitude'"MinAmplitude""MinAmplitude""MinAmplitude""MinAmplitude" des Operators edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d.

Vorgeschlagene Werte: 0.05, 0.1, 0.5

Standardwert: 0.05

Assertion: '3d_edge_min_amplitude_rel'"3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel" >= 0

'3d_edge_min_amplitude_abs'"3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs":

Analog zu '3d_edge_min_amplitude_rel'"3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel", allerdings wird der Schwellwert nicht relativ zum Modelldurchmesser sondern als absoluter Wert angegeben.

Assertion: '3d_edge_min_amplitude_abs'"3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs" >= 0

'viewpoint'"viewpoint""viewpoint""viewpoint""viewpoint":

Dieser Parameter gibt die 3D-Position des Blickpunktes an, von dem aus die 3D-Punkte in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D gesehen werden. Der Blickpunkt wird verwendet, um die Blickrichtung und die Kantenrichtungen zu berechnen, sofern das Oberflächenmodell mit aktiviertem 'train_3d_edges'"train_3d_edges""train_3d_edges""train_3d_edges""train_3d_edges" erstellt wurde. Der Blickpunkt wird auch bei Modellen mit ansichtsbasierter Bewertung benutzt (d.h. mit aktiviertem 'train_view_based'"train_view_based""train_view_based""train_view_based""train_view_based"), um die Anzahl der Punkte des Modells abzufragen die von diesem Blickpunkt aus sichtbar sind. Definiert ist der Blickpunkt im gleichen Koordinatensystem wie ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D. Die 3D-Koordinaten des Blickpunktes (x, y und z) werden als Strings, getrennt durch Leerzeichen, übergeben.

Werden Kanten manuell mit dem generischen Parameter '3d_edges'"3d_edges""3d_edges""3d_edges""3d_edges" übergeben ist zu beachten, dass 'viewpoint'"viewpoint""viewpoint""viewpoint""viewpoint" in diesem Fall ignoriert wird. Andernfalls verhält sich 'viewpoint'"viewpoint""viewpoint""viewpoint""viewpoint" analog zum entsprechenden generischen Parameter des Operators edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d.

Um das Ergebnis des kantenunterstützten oberflächenbasierten Matchings zu verbessern, sollte der Blickpunkt in etwa der Sensorposition bei der Aufnahme der 3D-Szene entsprechen.

Mit der Prozedur debug_find_surface_model kann die Lage des Blickpunktes visualisiert und überprüft werden.

Standardwert: '0 0 0'"0 0 0""0 0 0""0 0 0""0 0 0"

'max_gap'"max_gap""max_gap""max_gap""max_gap":

Dieser Parameter gibt die maximale Größe einer Lücke in Pixeln in einer 3D-Szene an. Dies gilt nur sofern das Oberflächenmodell mit aktiviertem 'train_3d_edges'"train_3d_edges""train_3d_edges""train_3d_edges""train_3d_edges" erstellt wurde. Für Lücken, die einen größeren Durchmesser haben als 'max_gap'"max_gap""max_gap""max_gap""max_gap", werden Kanten an den Rändern der Lücke erzeugt, kleinere Lücken werden geschlossen. Dadurch können Kanten unterdrückt werden, welche an Lücken in den 3D-Daten entstehen, die der Sensor nicht rekonstruieren konnte. Für besonders hochauflösende Sensoren sollte der Wert erhöht werden.

Werden Kanten manuell mit dem generischen Parameter '3d_edges'"3d_edges""3d_edges""3d_edges""3d_edges" übergeben, so ist zu beachten, dass 'max_gap'"max_gap""max_gap""max_gap""max_gap" in diesem Fall ignoriert wird. Andernfalls verhält sich 'max_gap'"max_gap""max_gap""max_gap""max_gap" analog zum entsprechenden generischen Parameter des Operators edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d.

Inwiefern sich 'max_gap'"max_gap""max_gap""max_gap""max_gap" auf das Modell auswirkt kann mit Hilfe der Prozedur debug_find_surface_model visualisiert werden.

Standardwert: 30

'use_3d_edges'"use_3d_edges""use_3d_edges""use_3d_edges""use_3d_edges":

Schaltet die Kantenunterstützung ein oder aus. Er kann verwendet werden, um ein Matching ohne Kantenunterstützung durchzuführen, obwohl das Modell mit Kantenunterstützung erstellt wurde. Wenn das Oberflächenmodell nicht mit aktiviertem 'train_3d_edges'"train_3d_edges""train_3d_edges""train_3d_edges""train_3d_edges" erstellt wurde, wird ein Fehler zurückgegeben.

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

Standardwert: 'true'"true""true""true""true"

2. Grobe Pose-Verfeinerung

In diesem zweiten Schritt werden die im vorherigen Schritt gefundenen näherungsweisen Posen verfeinert. Dies erhöht die Genauigkeit der Posen sowie die Aussagekraft der Bewertung.

Die grobe Pose-Verfeinerung verwendet die abgetasteten Szenepunkte des näherungsweisen Matchings. Die Pose wird derart verbessert, dass die Abstände der abgetasteten Szenepunkte zur Ebene des nächsten gefundenen Modellpunktes minimiert werden. Die Ebene jedes Modellpunkts ist dabei die auf den Normalenvektor des Punktes senkrecht stehende Ebene.

Wenn das Oberflächenmodell für kantenunterstütztes oberflächenbasiertes Matching vorbereitet wurde, und dieses nicht über den Parameter 'use_3d_edges'"use_3d_edges""use_3d_edges""use_3d_edges""use_3d_edges" deaktiviert wurde (s.o), werden bei der Pose-Verfeinerung auch die abgetasteten 3D-Kanten der Szene mit dem Modellkanten ausgerichtet.

Die grobe Pose-Verfeinerung ist standardmäßig aktiviert und kann durch Setzen des generischen Parameters 'sparse_pose_refinement'"sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement" auf 'false'"false""false""false""false" deaktiviert werden. Die Anzahl der verfeinerten Posen ist proportional zur Anzahl der im vorherigen Schritt ausgewählten Schlüsselpunkte. Für große Szenen, die viele Stördaten (Szenenteile die auf keiner Objektinstanz liegen) enthalten, kann es sinnvoll sein, die grobe Pose-Verfeinerung zu deaktivieren.

Die Bewertung jeder Pose wird nach der Verfeinerung neu berechnet.

Die folgenden generischen Parameter steuern die grobe Pose-Verfeinerung und werden mit GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt:

'sparse_pose_refinement'"sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement":

Aktiviert oder deaktiviert die grobe Pose-Verfeinerung.

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

Standardwert: 'true'"true""true""true""true"

'pose_ref_use_scene_normals'"pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals":

Aktiviert oder deaktiviert die Verwendung von Szenennormalen für die Pose-Verfeinerung. Wenn dieser Parameter aktiviert wird und die Szene Normalenvektoren enthält, dann werden diese Normalenvektoren verwendet um die Genauigkeit der Pose-Verfeinerung zu steigern. Dazu wird der Einfluss derer Szenenpunkte verringert, deren Normalenvektor in eine andere Richtung als der entsprechende Objektnormalenvektor zeigt. Enthält die Szene keine Punktnormalen, so wird dieser Parameter ignoriert.

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

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

'use_view_based'"use_view_based""use_view_based""use_view_based""use_view_based":

Schaltet die ansichtsbasierte Bewertung beim oberflächenbasierten Matching ein oder aus. Dies ist vor allem dann sinnvoll, wenn ein Matching ohne Verwendung der ansichtsbasierten Bewertung durchgeführt wird, obwohl das Modell speziell dafür trainiert wurde. Der Einfluss von 'use_view_based'"use_view_based""use_view_based""use_view_based""use_view_based" auf die Bewertung ist in der Beschreibung zu ScoreScoreScoreScorescore weiter oben erklärt. Wenn das Oberflächenmodell nicht mit aktiviertem 'train_view_based'"train_view_based""train_view_based""train_view_based""train_view_based" erstellt wurde, wird bei aktiviertem 'use_view_based'"use_view_based""use_view_based""use_view_based""use_view_based" ein Fehler zurückgegeben.

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

Standardwert: 'false'"false""false""false""false", falls 'train_view_based'"train_view_based""train_view_based""train_view_based""train_view_based" bei Modellerstellung deaktiviert, andernfalls 'true'"true""true""true""true".

3. Exakte Pose-Verfeinerung

Verfeinert die in den vorherigen Schritten gefundenen Posen. Dieser Schritt arbeitet ähnlich zur groben Pose-Verfeinerung und minimiert die Abstände zwischen den Szenepunkten und den Ebenen der nächstliegenden Modellpunkte. Anders als bei der groben Pose-Verfeinerung werden:

  1. Nur die 'num_matches'"num_matches""num_matches""num_matches""num_matches" besten Posen des vorherigen Schritts verfeinert.

  2. Alle Punkte der in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D übergebenen Szene für die Verfeinerung verwendet.

  3. Alle extrahierten 3D-Kanten für die Verfeinerung verwendet und nicht nur die abgetasteten, sofern das Oberflächenmodell für kantenunterstütztes oberflächenbasiertes Matching vorbereitet und dieses nicht über den Parameter 'use_3d_edges'"use_3d_edges""use_3d_edges""use_3d_edges""use_3d_edges" deaktiviert wurde (s.o),wurde.

Die Verwendung aller Szenepunkte erhöht die Genauigkeit der Verfeinerung, ist aber langsamer als eine Verfeinerung nur auf den abgetasteten Punkten. Die exakte Pose-Verfeinerung ist standardmäßig aktiviert, und kann mit dem generischen Parameter 'dense_pose_refinement'"dense_pose_refinement""dense_pose_refinement""dense_pose_refinement""dense_pose_refinement" deaktiviert werden.

Nach der exakten Pose-Verfeinerung wird die Bewertung jeder Pose neu berechnet. Der maximale Abstand eines Punktes zum Modell, so dass er als 'auf dem Modell liegend' betrachtet wird, wird durch die 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" oder '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" gesteuert (siehe unten). Für das kantenunterstützte Matching gehen zusätzlich die Parameter 'pose_ref_scoring_dist_edges_rel'"pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel" oder 'pose_ref_scoring_dist_edges_abs'"pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs" ein.

Die nach der Posen-Verfeinerung erreichte Positionsgenauigkeit ist von verschiedenen Faktoren abhängig. Der interne Verfeinerungs-Algorithmus hat eine Genauigkeit von bis zu 1e-7 mal die Modellgröße (Durchmesser). Diese maximale Genauigkeit wird nur für bestmögliche Bedingungen erreicht. Die weiteren Faktoren für die finale Positionsgenauigkeit sind die Modellform, die Anzahl der Szenenpunkte, das Rauschen der Szenenpunkte, der sichtbare Bereich der Objektinstanz sowie die Position des Objekts.

Die folgenden generischen Parameter steuern die exakte Pose-Verfeinerung und beeinflussen ihre Genauigkeit und Geschwindigkeit. Die Werte werden über GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt:

'dense_pose_refinement'"dense_pose_refinement""dense_pose_refinement""dense_pose_refinement""dense_pose_refinement":

Aktiviert oder deaktiviert die exakte Pose-Verfeinerung.

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

Standardwert: 'true'"true""true""true""true"

'pose_ref_num_steps'"pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps":

Anzahl der Iterationen der exakten Pose-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, 3, 5, 20

Standardwert: 5

Assertion: 'pose_ref_num_steps'"pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps" > 0

'pose_ref_sub_sampling'"pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling":

Setzt, wieviele der Szenepunkte für die exakte Pose-Verfeinerung verwendet werden. Wird dieser Wert z.B. auf 5 gesetzt, so wird jeder fünfte Punkt der Szene verwendet. Dieser Parameter erlaubt einen einfachen Kompromiss zwischen Genauigkeit und Geschwindigkeit der Verfeinerung. Erhöht man den Wert, so werden weniger Punkte verwendet, was zu einer schnelleren aber weniger genauen Verfeinerung führt. Eine Verringerung des Wertes hat den umgekehrten Effekt.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist.

Vorgeschlagene Werte: 1, 2, 5, 10

Standardwert: 2

Assertion: 'pose_ref_sub_sampling'"pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling" > 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 exakte Pose-Verfeinerung relativ zum Durchmesser des Modells. Nur Punkte deren Abstand zur Objektinstanz diesen Schwellwert unterschreiten gehen in die Pose-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.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist.

Vorgeschlagene Werte: 0.03, 0.05, 0.1, 0.2

Standardwert: 0.1

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 exakte Pose-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.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist.

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 Bewertung der Pose 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.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist.

Vorgeschlagene Werte: 0.2, 0.01, 0.005, 0.0001

Standardwert: 0.005

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 Bewertung der Pose 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.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist.

'pose_ref_use_scene_normals'"pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals":

Aktiviert oder deaktiviert die Verwendung von Szenennormalen für die Pose-Verfeinerung. Eine genauere Beschreibung dieses Parameters findet sich weiter oben im Abschnitt Grope Pose-Verfeinerung.

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

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

'pose_ref_dist_threshold_edges_rel'"pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel":

Setzt den Abstandsschwellwert von Kanten für die exakte Pose-Verfeinerung relativ zum Durchmesser des Modells. Nur Kanten deren Abstand zur Objektinstanz diesen Schwellwert unterschreiten gehen in die Pose-Verfeinerung ein. Kanten, die weiter von der Instanz entfernt sind, werden ignoriert. Nur einer der beiden Parameter 'pose_ref_dist_threshold_edges_rel'"pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel" und 'pose_ref_dist_threshold_edges_abs'"pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs" sollte gesetzt werden. Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert verwendet.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist oder wenn kein kantenunterstütztes Matching durchgeführt wird.

Vorgeschlagene Werte: 0.03, 0.05, 0.1, 0.2

Standardwert: 0.1

Assertion: 0 < 'pose_ref_dist_threshold_edges_rel'"pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel"

'pose_ref_dist_threshold_edges_abs'"pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs":

Setzt den Abstandsschwellwert von Kanten für die exakte Pose-Verfeinerung als absoluten Wert. Für Details siehe den Parameter 'pose_ref_dist_threshold_edges_rel'"pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel". Nur einer der beiden Parameter 'pose_ref_dist_threshold_edges_rel'"pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel" und 'pose_ref_dist_threshold_edges_abs'"pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs" sollte gesetzt werden. Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert verwendet.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist oder wenn kein kantenunterstütztes Matching durchgeführt wird.

Assertion: 0 < 'pose_ref_dist_threshold_edges_abs'"pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs"

'pose_ref_scoring_dist_edges_rel'"pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel":

Setzt den Abstandsschwellwert von Kanten für die Bewertung der Pose relativ zum Durchmesser des Modells. Für Details siehe den Parameter 'pose_ref_scoring_dist_edges_abs'"pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs". Nur einer der beiden Parameter 'pose_ref_scoring_dist_edges_rel'"pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel" und 'pose_ref_scoring_dist_edges_abs'"pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs" sollte gesetzt werden. Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert verwendet.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist oder wenn kein kantenunterstütztes Matching durchgeführt wird.

Vorgeschlagene Werte: 0.2, 0.01, 0.005, 0.0001

Standardwert: 0.005

Assertion: 0 < 'pose_ref_scoring_dist_edges_rel'"pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel"

'pose_ref_scoring_dist_edges_abs'"pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs":

Setzt den Abstandsschwellwert von Kanten für die Bewertung der Pose als absoluten Wert. Nur Szenenkanten deren Abstand zu den Kanten der gefundenen Objektinstanz diesen Schwellwert unterschreiten gehen in die Berechnung der Bewertung ein und werden als 'auf dem Objekt liegend' klassifiziert. Alle anderen Szenenkanten werden ignoriert. Der Schwellwert sollte entsprechend der zu erwartenden Genauigkeit der extrahierten Kanten und der Genauigkeit der Pose-Verfeinerung gesetzt werden. Nur einer der beiden Parameter 'pose_ref_scoring_dist_edges_rel'"pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel" und 'pose_ref_scoring_dist_edges_abs'"pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs" sollte gesetzt werden. Werden beide gesetzt, so wird nur der zuletzt gesetzte Wert verwendet.

Dieser Parameter wird ignoriert, wenn die exakte Pose-Verfeinerung deaktiviert ist oder wenn kein kantenunterstütztes Matching durchgeführt wird.

Assertion: 0 < 'pose_ref_scoring_dist_edges_abs'"pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs"

'use_view_based'"use_view_based""use_view_based""use_view_based""use_view_based":

Schaltet die ansichtsbasierte Bewertung beim oberflächenbasierten Matching ein oder aus. Für weitere Informationen siehe die entsprechende Berschreibung im Abschnitt zur groben Pose-Verfeinerung.

Wenn das Oberflächenmodell nicht mit aktiviertem 'train_view_based'"train_view_based""train_view_based""train_view_based""train_view_based" erstellt wurde, wird bei aktiviertem 'use_view_based'"use_view_based""use_view_based""use_view_based""use_view_based" ein Fehler zurückgegeben.

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

Standardwert: 'false'"false""false""false""false", falls 'train_view_based'"train_view_based""train_view_based""train_view_based""train_view_based" bei Modellerstellung deaktiviert, andernfalls 'true'"true""true""true""true".

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

SurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDsurfaceModelID (input_control)  surface_model HSurfaceModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Oberflächenmodells.

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D (input_control)  object_model_3d HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des 3D-Objektmodells, welches die Szene enthält.

RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

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

KeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionkeyPointFraction (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Anteil der abgetasteten Szenepunkte, die als Schlüsselpunkte verwendet werden.

Defaultwert: 0.2

Wertevorschläge: 0.3, 0.2, 0.1, 0.05

Restriktion: 0 < KeyPointFraction <= 1

MinScoreMinScoreMinScoreMinScoreminScore (input_control)  real(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Mindestbewertung der zurückgegebenen Posen.

Defaultwert: 0

Restriktion: MinScore >= 0

ReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandlereturnResultHandle (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Aktiviert die Rückgabe eines Ergebnishandels in SurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDsurfaceMatchingResultID.

Defaultwert: 'false' "false" "false" "false" "false"

Wertevorschläge: 'true'"true""true""true""true", 'false'"false""false""false""false"

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name-array HTupleHTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter.

Defaultwert: []

Werteliste: '3d_edge_min_amplitude_abs'"3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs", '3d_edge_min_amplitude_rel'"3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel", '3d_edges'"3d_edges""3d_edges""3d_edges""3d_edges", 'dense_pose_refinement'"dense_pose_refinement""dense_pose_refinement""dense_pose_refinement""dense_pose_refinement", 'max_gap'"max_gap""max_gap""max_gap""max_gap", 'max_overlap_dist_abs'"max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs", 'max_overlap_dist_rel'"max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel", 'num_matches'"num_matches""num_matches""num_matches""num_matches", '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_edges_abs'"pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs""pose_ref_dist_threshold_edges_abs", 'pose_ref_dist_threshold_edges_rel'"pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_rel""pose_ref_dist_threshold_edges_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_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_edges_abs'"pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs""pose_ref_scoring_dist_edges_abs", 'pose_ref_scoring_dist_edges_rel'"pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_rel""pose_ref_scoring_dist_edges_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_rel", 'pose_ref_sub_sampling'"pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling", 'pose_ref_use_scene_normals'"pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals", 'scene_invert_normals'"scene_invert_normals""scene_invert_normals""scene_invert_normals""scene_invert_normals", 'scene_normal_computation'"scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation", 'sparse_pose_refinement'"sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement", 'use_3d_edges'"use_3d_edges""use_3d_edges""use_3d_edges""use_3d_edges", 'use_view_based'"use_view_based""use_view_based""use_view_based""use_view_based", 'viewpoint'"viewpoint""viewpoint""viewpoint""viewpoint"

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: 0, 1, 'true'"true""true""true""true", 'false'"false""false""false""false", 0.005, 0.01, 0.03, 0.05, 0.1, 'num_scene_points'"num_scene_points""num_scene_points""num_scene_points""num_scene_points", 'model_point_fraction'"model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction", 'num_model_points'"num_model_points""num_model_points""num_model_points""num_model_points", 'fast'"fast""fast""fast""fast", 'mls'"mls""mls""mls""mls"

PosePosePosePosepose (output_control)  pose(-array) HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

3D-Lage des Oberflächenmodells in der Szene.

ScoreScoreScoreScorescore (output_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Bewertung der gefundenen Objektinstanzen.

SurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDsurfaceMatchingResultID (output_control)  surface_matching_result(-array) HSurfaceMatchingResult, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Ergebnishandle, wenn ReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandlereturnResultHandle aktiviert ist.

Ergebnis

Wenn alle Parameter korrekt sind liefert find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModel 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, read_surface_modelread_surface_modelReadSurfaceModelReadSurfaceModelReadSurfaceModel, create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel, get_surface_model_paramget_surface_model_paramGetSurfaceModelParamGetSurfaceModelParamGetSurfaceModelParam, edges_object_model_3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3dEdgesObjectModel3d

Nachfolger

refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPoseRefineSurfaceModelPose, get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResultGetSurfaceMatchingResult, clear_surface_matching_resultclear_surface_matching_resultClearSurfaceMatchingResultClearSurfaceMatchingResultClearSurfaceMatchingResult, clear_object_model_3dclear_object_model_3dClearObjectModel3dClearObjectModel3dClearObjectModel3d

Alternativen

refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPoseRefineSurfaceModelPose, find_surface_model_imagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImageFindSurfaceModelImage, refine_surface_model_pose_imagerefine_surface_model_pose_imageRefineSurfaceModelPoseImageRefineSurfaceModelPoseImageRefineSurfaceModelPoseImage

Siehe auch

refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPoseRefineSurfaceModelPose, find_surface_model_imagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImageFindSurfaceModelImage

Modul

3D Metrology