| Operatoren |
find_surface_model — Suche der besten Matches eines Oberflächenmodells in einer Szene.
find_surface_model( : : SurfaceModelID, ObjectModel3D, RelSamplingDistance, KeyPointFraction, MinScore, ReturnResultHandle, GenParamName, GenParamValue : Pose, Score, SurfaceMatchingResultID)
find_surface_model sucht die besten Matches des Oberflächenmodells SurfaceModelID in der 3D-Szene ObjectModel3D. Das Oberflächenmodell SurfaceModelID muss zuvor mittels create_surface_model oder read_surface_model erstellt worden sein. Das 3D-Objektmodell der Szene kann beispielsweise mittels read_object_model_3d aus einer Datei gelesen worden sein oder mittels xyz_to_object_model_3d erstellt worden sein.
Für das Auffinden des Oberflächenmodells muss das 3D-Objektmodell der Szene Punkte und Normalen aufweisen. Die folgenden Kombinationen sind möglich:
Punkte und Punktnormalen;
Punkte und ein 2D-Mapping, z.B. für 3D-Objektmodelle die mittels xyz_to_object_model_3d erstellt wurden.
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. 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_3d in Punkte mit Normalen umgewandelt werden. Werden verrauschte Daten verwendet, z.B. von Time-of-Flight-Kameras, sollte der generische Parameter 'scene_normal_computation' auf 'mls' gesetzt werden um robustere Ergebnisse zu erhalten (s.u.).
Die 3D-Pose der gefundenen Instanzen wird in Pose zurückgegeben. Sie beschreibt die Pose des Oberflächenmodells im Szenenkoordinatensystem und bezieht sich auf das Modellkoordinatensystem des 3D-Objektmodells, welches für create_surface_model verwendet wurde.
Weiterhin wird in Score für jede Instanz eine Bewertung zurückgeliefert. Der Wert und die Interpretation der Bewertung hängt von den folgenden Fällen ab:
Ohne Pose-Verfeinerung
Ohne Kantenunterstützung
Die Bewertung ist die ungefähre Anzahl an Szenenpunkten der abgetasteten Szene die auf dem gefundenen Objekt liegen.
Score >= 0
Mit Kantenunterstützung
Die Bewertung ist die ungefähre Anzahl an Szenenpunkten der abgetasteten Szene die auf dem gefundenen Objekt liegen, multipliziert mit der Anzahl an Punkten der abgetasteten 3D-Kanten die mit Kanten des Modells ausgerichtet sind.
Score >= 0
Mit Pose-Verfeinerung
Ohne Kantenunterstützung
Die Bewertung ist der Oberflächenanteil, d.h. der ungefähre Anteil der in der Szene sichtbaren Fläche des Objekts.
0 <= Score <= 1
Mit Kantenunterstützung
Die Bewertung ist das geometrische Mittel des Oberflächenanteils und des Kantenanteils. Der Kantenanteil ist die Anzahl an abgetasteten Kantenpunkten des Modells die mit Kanten der Szene ausgerichtet sind, geteilt durch die maximale Anzahl an Modellkantenpunkten, die von einem einzigen Blickpunkt aus sichtbar sein können.
0 <= Score <= 1 (wenn die Szene von einem einzigen Blickpunkt aus gesehen wurde)
0 <= Score <= N (wenn die Gesamtszene aus Einzelszenen zusammengesetzt wurde, die von insgesamt N verschiedenen Blickpunkten gesehen wurde)
Der Parameter MinScore kann verwendet werden um die Ergebnisse zu filtern. Nur Instanzen deren Bewertung größer als MinScore ist werden zurückgegeben. Wird MinScore auf 0 gesetzt, so werden alle gefundenen Instanzen zurückgegeben.
Wird ReturnResultHandle auf 'true' gesetzt, so wird in SurfaceMatchingResultID ein Ergebnishandle zurückgegeben. Weitere Details des Matchingverfahrens können dann mittels get_surface_matching_result abgerufen werden. Das zurückgegebene Handle muss mittels clear_surface_matching_result freigegeben werden um Speicherverlust zu vermeiden.
Der Matching-Vorgang ist in drei Schritte unterteilt:
Näherungsweises Matching: Die ungefähren Posen der Instanzen des Oberflächenmodells in der Szene werden gesucht.
Die 3D-Szene ObjectModel3D wird zunächst gleichmäßig abgetastet. Der Parameter RelSamplingDistance gibt die Abtastdistanz relativ zum Durchmesser des Oberflächenmodells an. Verkleinert man RelSamplingDistance, so werden mehr Punkte der Szene abgetastet, was zu einem stabileren aber langsameren Matching führt. Erhöht man RelSamplingDistance, so werden weniger Punkte abgetastet, was zu einem weniger stabilen aber schnelleren Matching führt. Eine Illustration zur RelSamplingDistance befindet sich bei dem Operator create_surface_model. Die abgetasteten Punkte können mit dem Operator get_surface_matching_result abgerufen werden. Für ein robustes Matching sollten mindestens 50-100 Punkte auf jeder zu findenden Objektinstanz liegen.
Aus den abgetasteten Szenepunkten werden eine Reihe von Schlüsselpunkten ausgewählt. Die Anzahl der Schlüsselpunkte wird mit dem Parameter KeyPointFraction gesteuert. 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 KeyPointFraction, 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. Die ausgewählten Schlüsselpunkte können mit dem Operator get_surface_matching_result abgerufen werden.
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' und 'feat_angle_resolution' im Operator create_surface_model 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 an abgetasteten Szenepunkten 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_3d -- 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' gesteuert. Ist die Pose-Verfeinerung deaktiviert, so wird die oben beschriebene Bewertung jeder Pose in Score 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 MinScore überschreitet werden zurückgegeben. Um einen guten Wert für MinScore 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 GenParamName und GenParamValue gesetzt:
Setzt die maximale Anzahl an gefundenen Instanzen die zurückgegeben werden.
Vorgeschlagene Werte: 1, 2, 5
Standardwert: 1
Assertion: 'num_matches' > 0
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 Score 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' und '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' >= 0
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' und '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' >= 0
Dieser Parameter kontrolliert die Normalenberechnung der abgetasteten 3D-Szene. Im Standard-Modus 'fast' werden die Normalen anhand einer relativ kleinen Nachbarschaft berechnet. Falls die 3D-Szene bereits Normalen enthält, werden diese benutzt. Im Modus 'mls' wird eine größere Nachbarschaft einbezogen und das komplexere, aber genauere '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'-Verfahrens findet sich beim Operator surface_normals_object_model_3d. Der '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', 'mls'
Standardwert: 'fast'
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_3d, können aber weiter gefiltert werden um Ausreißer zu entfernen. Wird dieser Parameter nicht angegeben, dann extrahiert find_surface_model die Kanten intern, analog zum Operator edges_object_model_3d.
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' erzeugt wurde und keine Kanten mittels '3d_edges' manuell übergeben wurden. Der Schwellwert wird relativ zum Durchmesser des Modells angegeben und verhält sich analog zum Parameter 'MinAmplitude' des Operators edges_object_model_3d.
Vorgeschlagene Werte: 0.05, 0.1, 0.5
Standardwert: 0.05
Assertion: '3d_edge_min_amplitude_rel' >= 0
Analog zu '3d_edge_min_amplitude_rel', allerdings wird der Schwellwert nicht relativ zum Modelldurchmesser sondern als absoluter Wert angegeben.
Assertion: '3d_edge_min_amplitude_abs' >= 0
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, 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' auf '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. Dazu wird gezählt, wieviele Punkte des Modells einen entsprechenden Punkt in der Szene haben, und diese Anzahl wird durch die Anzahl der Modellpunkte geteilt. Dies führt zu einem Wert zwischen 0 und 1, der in etwa den Anteil an Modellfläche beschreibt, der in der Szene sichtbar ist (siehe unten). Diese Bewertung ist genauer und stabiler als die Bewertung aus dem näherungsweisen Matching, hängt aber immer noch von der Abtastdistanz RelSamplingDistance ab. Wenn das Oberflächenmodell für kantenunterstütztes oberflächenbasierte Matching vorbereitet wurde, ist der Score das geometrische Mittel aus dem gerade beschriebenen Oberflächenscore sowie des entsprechenden Anteils der in der Szene sichtbaren Modellkanten. Wenn die 3D-Kanten aus mehreren Sichtrichtungen extrahiert wurden, kann dies zu einem Score größer 1 führen.
Die folgenden generischen Parameter steuern die grobe Pose-Verfeinerung und werden mit GenParamName und GenParamValue gesetzt:
Aktiviert oder deaktiviert die grobe Pose-Verfeinerung.
Mögliche Werte: 'true', 'false'
Standardwert: 'true'
Setzt die Art der zurückgegebenen Bewertung.
Verschiedene Bewertungen können nach der Pose-Verfeinerung berechnet und zurückgegeben werden. Dieser Parameter wird ignoriert, wenn sowohl die grobe als auch die exakte Pose-Verfeinerung deaktiviert ist.
Es ist zu beachten, dass für die Berechnung der Bewertung nach der groben Pose-Verfeinerung die abgetasteten Szenepunkte verwendet werden, während für die Berechnung nach der exakten Pose-Verfeinerung alle Szenepunkte verwendet werden (siehe unten). Die Bewertung nach der groben Pose-Verfeinerung hängt damit von der Abtastdistanz RelSamplingDistance ab.
Die folgenden Bewertungsarten werden unterstützt:
Die gewichtete Anzahl an abgetasteten Szenepunkten, die auf der Oberfläche der gefundenen Objektinstanz liegen. Jeder Szenenpunkt wird je nach Abstand zum gefundenen Modell gewichtet. Diese Bewertung ist genauer als die im näherungsweisen Matching berechnete Bewertung. Der Wert hängt von der Abtastdistanz RelSamplingDistance ab und liegt zwischen Null und der Anzahl der abgetasteten Szenepunkte.
Die Anzahl der abgetasteten Modellpunkte, die in der Szene gefunden wurden. Ein Modellpunkt gilt als 'gefunden', wenn es einen Szenepunkt in seiner Nähe gibt. Der zurückgegebene Wert liegt zwischen Null und der Anzahl der abgetasteten Modellpunkte.
Ohne Kantenunterstützung ist die Bewertung der Oberflächenanteil, d.h. der ungefähre Anteil der in der Szene sichtbaren Fläche des Objekts. Für diesen Wert werden die gefundenen Modellpunkte wie für 'num_model_points' ermittelt und durch die Anzahl der abgetasteten Modellpunkte geteilt.
Mit Kantenunterstützung ist die Bewertung das geometrische Mittel des Oberflächenanteils und des Kantenanteils. Der Kantenanteil ist die Anzahl an abgetasteten Kantenpunkten des Modells die mit Kanten der Szene ausgerichtet sind, geteilt durch die maximale Anzahl an Modellkantenpunkten, die von einem einzigen Blickpunkt aus sichtbar sein können.
Details über die möglichen Wertebereiche dieser Bewertungsart sind weiter oben beschrieben.
Mögliche Werte: 'model_point_fraction', 'num_scene_points', 'num_model_points'
Standardwert: 'model_point_fraction'
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 Szenenpunkten 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', 'false'
Standardwert: 'false'
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 allerdings
nur die 'num_matches' besten Posen des vorherigen Schritts verfeinert, und
alle Punkte der in ObjectModel3D übergebenen Szene für die Verfeinerung verwendet.
wenn das Oberflächenmodell für kantenunterstütztes oberflächenbasiertes Matching vorbereitet wurde, werden alle extrahierten 3D-Kanten für die Verfeinerung verwendet, nicht nur die abgetasteten.
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' 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' oder 'pose_ref_scoring_dist_abs' gesteuert (siehe unten).
Die numerisch maximal erreichbare Positionsgenauigkeit nach der exakten Posen-Verfeinerung liegt bei etwa 0.1% der Modellgröße. Die Genauigkeit hängt weiter vom Rauschen der Szenenpunkte, von der Anzahl der Szenenpunkte und von der Modellform ab.
Die folgenden generischen Parameter steuern die exakte Pose-Verfeinerung und beeinflussen ihre Genauigkeit und Geschwindigkeit. Die Werte werden über GenParamName und GenParamValue gesetzt:
Aktiviert oder deaktiviert die exakte Pose-Verfeinerung.
Mögliche Werte: 'true', 'false'
Standardwert: 'true'
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' > 0
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' > 0
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' und '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'
Setzt den Abstandsschwellwert für die exakte Pose-Verfeinerung als absoluten Wert. Für Details siehe den Parameter 'pose_ref_dist_threshold_rel'. Nur einer der beiden Parameter 'pose_ref_dist_threshold_rel' und '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'
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'. Nur einer der beiden Parameter 'pose_ref_scoring_dist_rel' und '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'
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' und '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.
Setzt die Art der zurückgegebenen Bewertung.
Verschiedene Bewertungen können nach der Pose-Verfeinerung berechnet und zurückgegeben werden. Dieser Parameter wird ignoriert, wenn sowohl die grobe als auch die exakte Pose-Verfeinerung deaktiviert ist.
Es ist zu beachten, dass für die Berechnung der Bewertung nach der groben Pose-Verfeinerung die abgetasteten Szenepunkte verwendet werden, während für die Berechnung nach der exakten Pose-Verfeinerung alle Szenepunkte verwendet werden.
Weitere Details über die verschiedenen Bewertungsarten finden sich weiter oben bei der Beschreibung der groben Pose-Verfeinerung.
Mögliche Werte: 'model_point_fraction', 'num_scene_points', 'num_model_points'
Standardwert: 'model_point_fraction'
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 Szenenpunkten 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', 'false'
Standardwert: 'false'
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 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
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
Mindestbewertung der zurückgegebenen Posen.
Defaultwert: 0
Restriktion: MinScore >= 0
Aktiviert die Rückgabe eines Ergebnishandels in SurfaceMatchingResultID.
Defaultwert: 'false'
Wertevorschläge: 'true', 'false'
Namen der generischen Parameter.
Defaultwert: []
Werteliste: '3d_edge_min_amplitude_abs', '3d_edge_min_amplitude_rel', '3d_edges', 'dense_pose_refinement', 'max_overlap_dist_abs', 'max_overlap_dist_rel', 'num_matches', 'pose_ref_dist_threshold_abs', 'pose_ref_dist_threshold_rel', 'pose_ref_num_steps', 'pose_ref_scoring_dist_abs', 'pose_ref_scoring_dist_rel', 'pose_ref_sub_sampling', 'pose_ref_use_scene_normals', 'scene_normal_computation', 'score_type', 'sparse_pose_refinement', 'viewpoint'
Werte der generischen Parameter
Defaultwert: []
Wertevorschläge: 0, 1, 'true', 'false', 0.005, 0.01, 0.03, 0.05, 0.1, 'num_scene_points', 'model_point_fraction', 'num_model_points', 'fast', 'mls'
3D-Pose des Oberflächenmodells in der Szene.
Bewertung der gefundenen Objektinstanzen.
Ergebnishandle, wenn ReturnResultHandle aktiviert ist.
Wenn alle Parameter korrekt sind liefert find_surface_model den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
read_object_model_3d, xyz_to_object_model_3d, get_object_model_3d_params, read_surface_model, create_surface_model, get_surface_model_param, edges_object_model_3d
refine_surface_model_pose, get_surface_matching_result, clear_surface_matching_result, clear_object_model_3d
refine_surface_model_pose, find_surface_model_image, refine_surface_model_pose_image
refine_surface_model_pose, find_surface_model_image
3D Metrology
| Operatoren |