Name
find_surface_modelT_find_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel — Suche der besten Matches eines Oberflächenmodells in einer Szene.
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)
Herror 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)
HTuple HObjectModel3D::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HTuple* SurfaceMatchingResultID) const
HTuple HSurfaceModel::FindSurfaceModel(const HObjectModel3D& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HTuple* SurfaceMatchingResultID) const
HTuple HSurfaceMatchingResult::FindSurfaceModel(const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)
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
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
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)
void HOperatorSetX.FindSurfaceModel(
[in] VARIANT SurfaceModelID, [in] VARIANT ObjectModel3D, [in] VARIANT RelSamplingDistance, [in] VARIANT KeyPointFraction, [in] VARIANT MinScore, [in] VARIANT ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Pose, [out] VARIANT* Score, [out] VARIANT* SurfaceMatchingResultID)
VARIANT HObjectModel3DX.FindSurfaceModel(
[in] IHSurfaceModelX* SurfaceModelID, [in] double RelSamplingDistance, [in] double KeyPointFraction, [in] VARIANT MinScore, [in] BSTR ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score, [out] IHSurfaceMatchingResultX** SurfaceMatchingResultID)
VARIANT HSurfaceModelX.FindSurfaceModel(
[in] IHObjectModel3DX* ObjectModel3D, [in] double RelSamplingDistance, [in] double KeyPointFraction, [in] VARIANT MinScore, [in] BSTR ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score, [out] IHSurfaceMatchingResultX** SurfaceMatchingResultID)
VARIANT HSurfaceMatchingResultX.FindSurfaceModel(
[in] IHSurfaceModelX* SurfaceModelID, [in] IHObjectModel3DX* ObjectModel3D, [in] double RelSamplingDistance, [in] double KeyPointFraction, [in] VARIANT MinScore, [in] BSTR ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score)
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)
find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel sucht die besten Matches des Oberflächenmodells
SurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDsurfaceModelID in der 3D-Szene ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D.
Das Oberflächenmodell SurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDsurfaceModelID muss zuvor mittels
create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel oder read_surface_modelread_surface_modelReadSurfaceModelread_surface_modelReadSurfaceModelReadSurfaceModel erstellt
worden sein.
Das 3D-Objektmodell der Szene kann beispielsweise mittels
read_object_model_3dread_object_model_3dReadObjectModel3dread_object_model_3dReadObjectModel3dReadObjectModel3d aus einer Datei gelesen worden sein oder
mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d 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:
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_3dSampleObjectModel3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3d 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""scene_normal_computation" auf
'mls'"mls""mls""mls""mls""mls" gesetzt werden um robustere Ergebnisse zu erhalten (s.u.).
Die 3D-Pose der gefundenen Instanzen wird in PosePosePosePosePosepose 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_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel verwendet wurde.
Weiterhin wird in ScoreScoreScoreScoreScorescore 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 MinScoreMinScoreMinScoreMinScoreMinScoreminScore kann verwendet werden um die Ergebnisse
zu filtern. Nur Instanzen deren Bewertung größer als MinScoreMinScoreMinScoreMinScoreMinScoreminScore ist
werden zurückgegeben.
Wird MinScoreMinScoreMinScoreMinScoreMinScoreminScore auf 0 gesetzt, so werden alle gefundenen Instanzen
zurückgegeben.
Wird ReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandlereturnResultHandle auf 'true'"true""true""true""true""true" gesetzt, so wird in
SurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDsurfaceMatchingResultID ein Ergebnishandle zurückgegeben.
Weitere Details des Matchingverfahrens können dann mittels
get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResult abgerufen werden.
Das zurückgegebene Handle muss mittels clear_surface_matching_resultclear_surface_matching_resultClearSurfaceMatchingResultclear_surface_matching_resultClearSurfaceMatchingResultClearSurfaceMatchingResult
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 ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D wird zunächst gleichmäßig
abgetastet. Der Parameter RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance gibt die
Abtastdistanz relativ zum Durchmesser des Oberflächenmodells an.
Verkleinert man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance, so werden mehr
Punkte der Szene abgetastet, was zu einem stabileren aber
langsameren Matching führt.
Erhöht man RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance, so werden weniger Punkte
abgetastet, was zu einem weniger stabilen aber schnelleren Matching
führt.
Eine Illustration zur RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance befindet sich
bei dem Operator create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel.
Die abgetasteten Punkte können mit dem Operator
get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResult 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 KeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionkeyPointFraction 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 KeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionkeyPointFraction, 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_resultget_surface_matching_resultGetSurfaceMatchingResultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResult 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'"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""feat_angle_resolution" im Operator
create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel 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_3dedges_object_model_3dEdgesObjectModel3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3d -- 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""num_matches" gesteuert.
Ist die Pose-Verfeinerung deaktiviert, so wird die oben beschriebene
Bewertung jeder Pose in ScoreScoreScoreScoreScorescore 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 MinScoreMinScoreMinScoreMinScoreMinScoreminScore überschreitet
werden zurückgegeben.
Um einen guten Wert für MinScoreMinScoreMinScoreMinScoreMinScoreminScore 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 GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und
GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt:
- 'num_matches'"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""num_matches" > 0
- 'max_overlap_dist_rel'"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 ScoreScoreScoreScoreScorescore 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""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""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""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""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""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""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""max_overlap_dist_abs" >= 0
- 'scene_normal_computation'"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""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""mls" wird eine größere Nachbarschaft
einbezogen und das komplexere, aber genauere
'mls'"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""mls"-Verfahrens findet sich
beim Operator surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d.
Der 'mls'"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""fast", 'mls'"mls""mls""mls""mls""mls"
Standardwert: 'fast'"fast""fast""fast""fast""fast"
- '3d_edges'"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_3dEdgesObjectModel3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3d, können aber weiter gefiltert
werden um Ausreißer zu entfernen.
Wird dieser Parameter nicht angegeben, dann extrahiert
find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel die Kanten intern, analog zum
Operator edges_object_model_3dedges_object_model_3dEdgesObjectModel3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3d.
- '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_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""train_3d_edges"
erzeugt wurde und keine Kanten mittels '3d_edges'"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""MinAmplitude" des Operators
edges_object_model_3dedges_object_model_3dEdgesObjectModel3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3d.
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""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""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""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""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'"sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement" auf 'false'"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.
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 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance 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 GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und
GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt:
- 'sparse_pose_refinement'"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""true", 'false'"false""false""false""false""false"
Standardwert: 'true'"true""true""true""true""true"
- 'score_type'"score_type""score_type""score_type""score_type""score_type":
-
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 RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance ab.
Die folgenden Bewertungsarten werden unterstützt:
- 'num_scene_points'"num_scene_points""num_scene_points""num_scene_points""num_scene_points""num_scene_points":
-
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
RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance ab und liegt zwischen Null und der
Anzahl der abgetasteten Szenepunkte.
- 'num_model_points'"num_model_points""num_model_points""num_model_points""num_model_points""num_model_points":
-
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.
- 'model_point_fraction'"model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction":
-
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'"num_model_points""num_model_points""num_model_points""num_model_points""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'"model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction",
'num_scene_points'"num_scene_points""num_scene_points""num_scene_points""num_scene_points""num_scene_points",
'num_model_points'"num_model_points""num_model_points""num_model_points""num_model_points""num_model_points"
Standardwert: 'model_point_fraction'"model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction"
- '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""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 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'"true""true""true""true""true", 'false'"false""false""false""false""false"
Standardwert: 'false'"false""false""false""false""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'"num_matches""num_matches""num_matches""num_matches""num_matches" besten Posen des vorherigen
Schritts verfeinert, und
-
alle Punkte der in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D ü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'"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""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""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""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""pose_ref_scoring_dist_edges_abs" ein.
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 GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und
GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt:
- 'dense_pose_refinement'"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""true", 'false'"false""false""false""false""false"
Standardwert: 'true'"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""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""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""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""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""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""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""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_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""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""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""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""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_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""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""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""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""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_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""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""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""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.
- 'score_type'"score_type""score_type""score_type""score_type""score_type":
-
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'"model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction",
'num_scene_points'"num_scene_points""num_scene_points""num_scene_points""num_scene_points""num_scene_points",
'num_model_points'"num_model_points""num_model_points""num_model_points""num_model_points""num_model_points"
Standardwert: 'model_point_fraction'"model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction"
- '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""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 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'"true""true""true""true""true", 'false'"false""false""false""false""false"
Standardwert: 'false'"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""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""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""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_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""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""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""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""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_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""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""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""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""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_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""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""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""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""pose_ref_scoring_dist_edges_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.
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
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_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_edge_min_amplitude_rel", '3d_edges'"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""dense_pose_refinement", 'max_gap'"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_abs", 'max_overlap_dist_rel'"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""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_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_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_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_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_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_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_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_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_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_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""pose_ref_use_scene_normals", 'scene_normal_computation'"scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation", 'score_type'"score_type""score_type""score_type""score_type""score_type", 'sparse_pose_refinement'"sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement", 'viewpoint'"viewpoint""viewpoint""viewpoint""viewpoint""viewpoint"
Werte der generischen Parameter
Defaultwert: []
Wertevorschläge: 0, 1, 'true'"true""true""true""true""true", 'false'"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""num_scene_points", 'model_point_fraction'"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""num_model_points", 'fast'"fast""fast""fast""fast""fast", 'mls'"mls""mls""mls""mls""mls"
3D-Pose des Oberflächenmodells in der Szene.
Bewertung der gefundenen Objektinstanzen.
Wenn alle Parameter korrekt sind liefert find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel den
Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
read_object_model_3dread_object_model_3dReadObjectModel3dread_object_model_3dReadObjectModel3dReadObjectModel3d,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d,
get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParams,
read_surface_modelread_surface_modelReadSurfaceModelread_surface_modelReadSurfaceModelReadSurfaceModel,
create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel,
get_surface_model_paramget_surface_model_paramGetSurfaceModelParamget_surface_model_paramGetSurfaceModelParamGetSurfaceModelParam,
edges_object_model_3dedges_object_model_3dEdgesObjectModel3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3d
refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPose,
get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResult,
clear_surface_matching_resultclear_surface_matching_resultClearSurfaceMatchingResultclear_surface_matching_resultClearSurfaceMatchingResultClearSurfaceMatchingResult,
clear_object_model_3dclear_object_model_3dClearObjectModel3dclear_object_model_3dClearObjectModel3dClearObjectModel3d
refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPose,
find_surface_model_imagefind_surface_model_imageFindSurfaceModelImagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImage,
refine_surface_model_pose_imagerefine_surface_model_pose_imageRefineSurfaceModelPoseImagerefine_surface_model_pose_imageRefineSurfaceModelPoseImageRefineSurfaceModelPoseImage
refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPose,
find_surface_model_imagefind_surface_model_imageFindSurfaceModelImagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImage
3D Metrology