| Operatoren |
create_shape_model_3d — Vorbereiten eines 3D-Objektmodells für das Matching.
create_shape_model_3d( : : ObjectModel3D, CamParam, RefRotX, RefRotY, RefRotZ, OrderOfRotation, LongitudeMin, LongitudeMax, LatitudeMin, LatitudeMax, CamRollMin, CamRollMax, DistMin, DistMax, MinContrast, GenParamName, GenParamValue : ShapeModel3DID)
create_shape_model_3d bereitet ein 3D-Objektmodell, das in ObjectModel3D übergeben wird, als 3D-Formmodell für das Matching vor. Das 3D-Objektmodell muss zuvor mit read_object_model_3d eingelesen worden sein.
Das erstellte 3D-Formmodell umfasst unterschiedliche Ansichten des 3D-Objektmodells. Die Ansichten werden innerhalb des vom Benutzer vorgegebenen Pose-Bereichs generiert. Die Ansichtengenerierung erfolgt durch das automatische Platzieren virtueller Kameras um das 3D-Objektmodell und das Projizieren des 3D-Objektmodells in die Bildebene jeder virtuellen Kamera. Für jede auf diese Weise erstellte Ansicht wird dann eine 2D-Formbeschreibung erzeugt. Für die Erstellung des 3D-Formmodells werden also keine Bilder des Objektes benötigt sondern lediglich das 3D-Objektmodell, das in ObjectModel3D übergeben wird. Die Formbeschreibungen aller Ansichten werden im 3D-Formmmodell gespeichert, das in ShapeModel3DID zurückgeliefert wird. Während des Matching-Prozesses mit find_shape_model_3d werden die Formbeschreibungen dazu genutzt, die am besten passende Ansicht zu ermitteln, deren Pose schließlich verfeinert und zurückgegeben wird.
Um die Modellansichten korrekt erstellen zu können, müssen die Parameter der zum Matching verwendeten Kamera in CamParam übergeben werden. Die Kameraparameter sind notwendig um z.B. die Skalierung der Projektionen mit Hilfe der Brennweite festzulegen. Des weiteren werden sie benötigt, um radiale Verzeichnungen des Objektivs korrekt berücksichtigen zu können. Daher ist es absolut notwendig, die verwendete Kamera vor der Erstellung des 3D-Formmodells mit calibrate_cameras zu kalibrieren. Auf der einen Seite führt dies dazu, dass die von find_shape_model_3d zurückgegebenen Ergebnisse genauer sind. Auf der anderen Seite wird dadurch die Anwendung des 3D-Matchings selbst für Objektive mit deutlichen radialen Verzeichnungen ermöglicht.
Der Pose-Bereich, für den Modellansichten erstellt werden, kann mit den Parametern RefRotX, RefRotY, RefRotZ, OrderOfRotation, LongitudeMin, LongitudeMax, LatitudeMin, LatitudeMax, CamRollMin, CamRollMax, DistMin und DistMax festgelegt werden. Zu beachten ist, dass das Modell nur dann während des Matchings erkannt wird, wenn es innerhalb des angegebenen Pose-Bereichs liegt. Die Parameter werden im Folgenden beschrieben:
Vor der Berechnung der Ansichten wird der Ursprung des Koordinatensystems des 3D-Objektmodells in den Referenzpunkt des 3D-Objektmodells verschoben. Der Referenzpunkt ist der Mittelpunkt des kleinsten umschließenden achsenparallelen Quaders und kann mit get_object_model_3d_params abgefragt werden. Die virtuellen Kameras, die zum Erstellen der Ansichten verwendet werden, werden so um das 3D-Objektmodell angeordnet, dass deren Blickrichtung auf den Ursprung des Koordinatensystems gerichtet ist, d.h. die z-Achsen der Kameras gehen durch den Ursprung. Der Pose-Bereich kann dann dadurch angegeben werden, dass die Ansichten auf ein bestimmtes Viereck auf einer Kugel um den Ursprung beschränkt werden. Dabei bietet sich die Verwendung der sphärischen Koordinaten Länge, Breite und Radius an. Das sphärische Koordinatensystem ist so gewählt, dass die Äquatorebene der xz-Ebene des kartesischen Koordinatensystem entspricht, wobei die y-Achse zum Südpol (negative Breite) und die negative z-Achse zum Nullmeridian zeigt (vgl. convert_point_3d_spher_to_cart oder convert_point_3d_cart_to_spher für weitere Details zur Konvertierung zwischen kartesischen und sphärischen Koordinaten). Der Vorteil dieser Definition ist, dass eine Kamera mit der Pose [0,0,z,0,0,0,0] ihr optisches Zentrum bei Länge=0, Breite=0 und Radius=z hat. In diesem Fall entspricht der Radius der Distanz des optischen Zentrums der Kamera zum Referenzpunkt des 3D-Objektmodells.
Der Längenbereich, für den Ansichten generiert werden sollen, kann durch LongitudeMin und LongitudeMax angegeben werden (beide im Bogenmaß). Entsprechend kann der Breitenbereich durch LatitudeMin und LatitudeMax festgelegt werden (ebenso im Bogenmaß). Die minimale und maximale Distanz zwischen Kamerazentrum und Modell-Referenzpunkt können in DistMin und DistMax übergeben werden. Zu beachten ist, dass die Distanzen in der Einheit Meter angegeben werden müssen (davon ausgehend, dass der Parameter Scale beim Einlesen der CAD-Datei mit read_object_model_3d korrekt gesetzt wurde). Schließlich können in CamRollMin und CamRollMax der minimale und maximale Rollwinkel der Kamera angegeben werden. Dieses Intervall beschreibt die erlaubte Kamerarotation um deren z-Achse bezüglich des 3D-Objektmodells. Falls die Bildebene parallel zur Ebene liegt, auf der sich die Objekte befinden, und bekannt ist, dass die Objekte in dieser Ebene nur innerhalb eines eingeschränkten Bereichs rotieren, ist es sinnvoll, diesen Bereich in CamRollMin und CamRollMax anzugeben. In allen anderen Fällen ist die Interpretation des Kamera-Rollwinkels schwierig. In diesen Fällen sollte daher das Intervall auf gesetzt sein. Zu beachten ist, dass je größer der Pose-Bereich gewählt wird desto größer ist der Speicherbedarf für das Modell und desto langsamer wird das Matching.
Die Orientierung des Koordinatensystems des 3D-Objektmodells ist durch die Koordinaten innerhalb der mit read_object_model_3d eingelesenen CAD-Datei festgelegt. Daher ist es sinnvoll, das 3D-Objektmodell vorab in eine Referenzorientierung zu drehen, die ungefähr im Zentrum des Pose-Bereiches liegt. Dies kann durch die Angabe entsprechender Werte für RefRotX, RefRotY, RefRotZ und OrderOfRotation erreicht werden. Die Rotation erfolgt dabei um die Achsen des 3D-Objektmodells, dessen Ursprung in den Referenzpunkt verschoben wurde. Folglich können die angegebenen Längen- und Breitenbreiche als Variationen der 3D-Objektmodell-Pose bezüglich der Referenzorientierung interpretiert werden. Die Referenzorientierung kann auf zwei verschiedene Arten angegeben werden. In der ersten Möglichkeit können die drei Rotationswinkel in RefRotX, RefRotY und RefRotZ und die Reihenfolge, in der die Rotationen angewendet werden, übergeben werden. Für die Rotationsreihenfolge kann dabei entweder 'gba' oder 'abg' gewählt werden. In der zweiten Möglichkeit können die drei Komponenten des Rodriguez-Rotationsvektors in RefRotX, RefRotY und RefRotZ übergeben werden. In diesem Fall muss für OrderOfRotation 'rodriguez' übergeben werden (für weitere Details über Rotationsreihenfolgen und die Definition des Rodriguez-Vektors siehe create_pose).
Demnach werden zwei Transformationen auf das 3D-Objektmodell angewendet bevor die Modellansichten erstellt werden. Die erste Transformation ist die Translation des Koordinatenursprungs in den Modell-Referenzpunkt. Die zweite Transformation ist die Rotation des 3D-Objektmodells in die gewünschte Referenzorientierung um die Achsen des Referenzkoordinatensystems. Durch Kombinieren beider Transformationen erhält man die Referenz-Pose des 3D-Formmodells. Demnach beschreibt die Referenz-Pose des 3D-Formmodells die Lage des Referenzkoordinatensystems bezüglich des durch die CAD-Datei definierten Koordinatensystems des 3D-Objektmodells. Seien t = (x,y,z)' die Koordinaten des Referenzpunktes des 3D-Objektmodells und R die Rotationsmatrix mit der Referenzorientierung. Dann wird ein Punkt , der im 3D-Objektmodellkoordinatensystem gegeben ist, durch die Anwendung der folgenden Formel in einen Punkt im Referenzkoordinatensystem des 3D-Formmodels transformiert:
Diese Transformation kann durch eine homogene 3D-Transformationsmatrix ausgedrückt werden oder alternativ dazu in Form einer 3D-Pose. Letztere kann mit dem Operator get_shape_model_3d_params abgefragt werden, indem für GenParamName 'reference_pose' übergeben wird. Obige Formel kann man sich am besten als Pose des Pose-Typs 8, 10 oder 12 vorstellen, abhängig vom gewählten Wert für OrderOfRotation (für weitere Details über die verschiednen Typen von Poses siehe create_pose). Zu beachten ist allerdings, dass die mit get_shape_model_3d_params zurückgegebene Pose immer vom Typ 0 ist. Eine Pose, die in einem der beiden Koordinatensysteme gegeben ist kann mit dem Operator trans_pose_shape_model_3d in das andere Koordinatensystem transformiert werden.
Zu beachten ist außerdem, dass das Referenzkoordinatensystem nur deswegen verwendet wird, um die Festlegung des Pose-Bereiches möglichst einfach zu gestalten. Die beim 3D-Matching von find_shape_model_3d zurückgelieferte Pose bezieht sich dagegen stets auf das ursprüngliche durch die CAD-Datei definierten Koordinatensystems des 3D-Objektmodells.
Mit MinContrast wird festgelegt, welchen Grauwertkontrast das Modell später bei der Erkennung mit find_shape_model_3d im Bild mindestens besitzen muss. Mit anderen Worten stellt dieser Parameter somit eine Abgrenzung des Modells von Rauschen im Bild dar. Eine gute Wahl ist deshalb der Bereich von Grauwertänderungen, der durch das Rauschen im Bild verursacht wird. Falls die Grauwerte z.B. in einem Bereich von 10 Graustufen durch Rauschen schwanken, sollte MinContrast auf 10 gesetzt werden. Falls mehrkanalige Bilder für die Suchbilder verwendet werden, muss das Rauschen in einem Kanal noch mit der Wurzel der Anzahl der Kanäle multipliziert werden, um MinContrast zu bestimmen. Falls die Grauwerte in einem Kanal z.B. in einem Bereich von 10 Graustufen schwanken, sollte MinContrast bei einem dreikanaligen Bild auf 17 gesetzt werden. Falls das Modell später in sehr kontrastarmen Bildern erkannt werden soll, muss MinContrast entsprechend klein gewählt werden. Falls das Modell mit erheblichen Verdeckungen erkannt werden soll, sollte MinContrast etwas größer als der Grauwertbereich, der durch das Rauschen verursacht wird, gewählt werden, um eine robuste und genaue Lageschätzung des verdeckten Modells mit find_shape_model_3d zu gewährleisten.
Die oben beschriebenen Parameter sind anwendungsabhängig und müssen demnach immer bei der Erstellung eines 3D-Formmodells angegeben werden. Daneben gibt es generische Parameter, die optional angegeben werden können, um die Modellerstellung zu beeinflussen. Für die meisten Anwendungen brauchen diese Parameter nicht spezifiziert werden sondern können mit den Default-Werten übernommen werden. Fall erwünscht, können die generischen Parameter und deren Werte in GenParamName und GenParamValue übergeben werden. Die folgenden Werte für GenParamName sind möglich:
Aus Effizienzgründen werden die Modellansichten auf mehreren Pyramidenebenen erstellt. Auf höheren Ebenen werden weniger Ansichten generiert als auf niedrigeren Ebenen. Mit dem Parameter 'num_levels' kann die Anzahl der Pyramidenebenen angegeben werden. Sie sollte so groß wie möglich gewählt werden, da hierdurch das Auffinden des Modells erheblich beschleunigt wird. Bei der Wahl von 'num_levels' ist aber darauf zu achten, dass die Formbeschreibungen der Ansichten auf der obersten Pyramidenstufe noch erkennbar sind und genügend viele Punkte besitzen (mindestens vier). Falls nicht genügend Modellpunkte für eine bestimmte Ansicht erzeugt werden, wird diese Ansicht aus dem Modell gelöscht und durch eine Ansicht auf einer darunter liegenden Ebene ersetzt. Wenn für alle Ansichten einer Ebene nicht genügend Modellpunkte erzeugt werden, wird die Anzahl der Pyramidenstufen intern solange reduziert, bis auf der obersten Pyramidenstufe für mindestens eine Ansicht genügend Modellpunkte vorhanden sind. Falls durch diese Anpassung ein Modell mit keiner Pyramidenstufe entstehen würde, d.h. falls für alle Ansichten bereits auf der untersten Pyramidenstufe zu wenige Modellpunkte vorhanden sind, liefert create_shape_model_3d eine Fehlermeldung zurück. Falls für 'num_levels' 'auto' (Default-Wert) übergeben wird, wählt create_shape_model_3d die Anzahl der Pyramidenstufen automatisch. In diesem Fall werden die Ansichten aller Pyramidenebenen dahingehend überprüft, ob die entsprechenden Formbeschreibungen noch erkennbar sind. Stellt sich dabei heraus, dass die Formbeschreibung zu unspezifisch ist, wird die entsprechende Ansicht aus dem Modell entfernt und durch eine Ansicht auf einer darunter liegenden Ebene ersetzt. Zu beachten ist, dass es vorkommen kann, dass für unterschiedliche Ansichten unterschiedlich viele Pyramidenebenen erstellt werden, wenn für 'num_levels' 'auto' übergeben wird, In seltenen Fällen kann es vorkommen, dass create_shape_model_3d die Anzahl der Pyramidenstufen zu hoch oder zu niedrig bestimmt. Falls die Anzahl der Pyramidenstufen zu hoch gewählt wird, kann das dazu führen, dass das Modell im Bild nicht erkannt wird oder dass sehr niedrige Parameter für MinScore oder Greediness in find_shape_model_3d selektiert werden müssen, damit das Modell gefunden wird. Falls die Anzahl der Pyramidenstufen zu niedrig gewählt wird, kann es zu erhöhten Laufzeiten in find_shape_model_3d kommen. In diesen Fällen sollten die Ansichten auf den verschiedenen Pyramidenebenen mit get_shape_model_3d_contours überprüft werden.
Wertevorschläge: 'auto', 3, 4, 5, 6
Defaultwert: 'auto'
Der Parameter legt fest, ob die Pose-Verfeinerung während der Suche mit find_shape_model_3d in einem beschleunigten Modus durchgeführt werden soll. Falls für 'fast_pose_refinement' 'false' gewählt wird, kann die Pose-Verfeinerung bei komplexen Modellen mit vielen Flächen einen signifikanten Teil der Rechenzeit ausmachen. Falls für 'fast_pose_refinement' 'true' gewählt wird, werden für die Pose-Verfeinerung notwendige Berechnungen bereits während der Modellerzeugung ausgeführt und im Modell gespeichert. Die Pose-Verfeinerung während der Suche geht dann deutlich schneller. Zu beachten ist allerdings, dass die Größe des Modells in diesem Fall deutlich anwachsen kann (typischerweise um weniger als 30 Prozent). Außerdem ist zu beachten, dass es bei find_shape_model_3d in Abhängigkeit von der Wahl von 'fast_pose_refinement' zu leicht unterschiedlichen Ergebnis-Posen kommen kann, da bei der Wahl von 'true' intern die Pose-Verfeinerung approximiert wird.
Werteliste: 'true', 'false',
Defaultwert: 'true'
In manchen Fällen ist der Modellgenerierungsprozess sehr zeitaufwändig und der Speicherbedarf des resultierenden Modells sehr hoch. Der Grund hierfür ist, dass in diesen Fällen die Anzahl der Ansichten, die generiert und im Modell gespeichert werden müssen, sehr hoch ist. Je größer der Pose-Bereich gewählt wird und je größer die Objekte im Bild erscheinen (gemessen in Pixeln), desto mehr Ansichten werden benötigt. Vor allem die Verwendung von großen Bildern (z.B. größer als 640×480 ) kann folglich zu sehr großen Modellen führen. Da die Anzahl der Ansichten auf den untersten Pyramidenebene am größten ist, bietet der Parameter 'lowest_model_level' die Möglichkeit, die unterste(n) Pyramidenebene(n) von der Ansichtengenerierung auszuschließen. Der Wert, der für 'lowest_model_level' übergeben wird, bestimmt die unterste Pyramidenebene, bis zu der Ansichten generiert und im Modell gespeichert werden. Wird z.B. für 'lowest_model_level' der Wert 2 übergeben, verringert sich bei großen Modellen die Modellgenerierungszeit und die Modellgröße auf ca. ein Drittel der ursprünglichen Werte. Wird 'lowest_model_level' nicht angegeben, werden Ansichten bis zur untersten Pyramidenebene generiert, was dem Verhalten entspricht, wenn für 'lowest_model_level' 1 übergeben wird. Wird für 'lowest_model_level' ein Wert größer als 1 übergeben, wird bei der späteren Suche mit find_shape_model_3d die Verfolgung der Matches durch die Pyramide zunächst auf der angegebenen Ebene abgebrochen. Wird bei find_shape_model_3d für die Verfeinerung der Posen allerdings ein Least-Squares Adjustment gewählt, werden die Matches anschließend mit Hilfe des Least-Squares Adjustments auf der untersten Ebene verfeinert. Zu beachten ist, dass für verschiedene Werte von 'lowest_model_level' bei der Suche unterschiedliche Matches gefunden werden können. Des weiteren ist der Score der Matches abhängig von der bei der Suche gewählten Verfeinerungsmethode. Außerdem ist zu beachten, dass je größer 'lowest_model_level' gewählt wird, desto größer wird der Anteil der Verfeinerung an der Gesamtlaufzeit von find_shape_model_3d. Daher wirkt sich auch der Wert des generischen Parameters 'fast_pose_refinement' (siehe oben) mit größeren Werten für 'lowest_model_level' stärker aus. Auf der einen Seite kann ein großer Wert für 'lowest_model_level' bei ausgeschaltetem 'fast_pose_refinement' ('false') zu sehr langen Rechenzeiten während der Suche führen. Auf der anderen Seite kann ein großer Wert für 'lowest_model_level' bei eingeschaltetem 'fast_pose_refinement' ('true') zu ungenaueren Ergebnissen führen, da intern die Pose-Verfeinerung nur approximiert wird. Der Wert für 'lowest_model_level' sollte demnach so klein wie möglich gewählt werden. Außerdem sollte 'lowest_model_level' so klein gewählt werden, dass der Großteil der Kanten des 3D-Objektmodells auf dieser Pyramidenebene noch erkennbar sind.
Wertevorschläge: 1, 2, 3
Defaultwert: 1
Bei Modellen mit besonders großen Ansichten kann es auch sinnvoll sein, die Anzahl der Modellpunkte durch Setzen des Parameters 'optimization' auf einen Wert ungleich 'none' zu setzen. Falls 'optimization' = 'none', werden alle Modellpunkte abgespeichert. Ansonsten wird die Anzahl der Punkte entsprechend dem Parameter 'optimization' reduziert. Falls die Anzahl der Punkte reduziert wird, kann es bei find_shape_model_3d notwendig werden, den Parameter Greediness auf einen kleineren Wert, z.B. 0.7 oder 0.8, zu setzen. Bei Modellen mit kleineren Ansichten bewirkt die Reduktion der Anzahl der Punkte keine Beschleunigung, da dadurch typischerweise wesentlich mehr potentielle Instanzen des Modells untersucht werden müssen. Falls für 'optimization' 'auto' übergeben wird, wählt create_shape_model_3d die Reduktion der Punkte automatisch.
Werteliste: 'auto', 'none', 'point_reduction_low', 'point_reduction_medium', 'point_reduction_high'
Default value: 'auto'
Dieser Parameter legt fest, unter welchen Bedingungen das Modell im Bild noch erkannt wird. Wenn 'metric' = 'ignore_part_polarity', dann darf sich die Kontrastpolarität nur zwischen verschiedenen Modellteilen ändern, wohingegen die Polarität von Modellpunkten innerhalb des selben Modellteils nicht wechseln darf. Zu beachten ist, dass der Begriff 'ignore_part_polarity' missverstanden werden kann. Er bedeutet, dass Polaritätswechsel zwischen benachbarten Modellteilen den Score nicht beeinflussen und daher ignoriert werden. Geeignete Modellteile werden automatisch bestimmt. Die Größe der Teile kann mit dem generischen Parameter 'part_size', der weiter unten beschrieben ist, festgelegt werden. Zu beachten ist, dass diese Metrik nur mit einkanaligen Bildern verwendet werden kann. Wird ein mit dieser Metrik generiertes Modell mit find_shape_model_3d in einem mehrkanaligen Bild gesucht, wird ein Fehler zurückgegeben. Wenn 'metric' = 'ignore_local_polarity', dann können Objekte auch dann erkannt werden, wenn sich die Kontrastpolarität lokal für jeden Modellpunkt ändert. Diese Metrik kann sowohl für die Suche in einkanaligen als auch in mehrkanaligen Bildern verwendet werden. Die Metrik 'ignore_part_polarity' sollte verwendet werden, wenn das Objekt in Bildern mit starker Hintergrundtextur oder mit Störobjekten gesucht werden soll, was ansonsten zu falschen Matches führen würde. Zu beachten ist, dass der von find_shape_model_3d berechnete Score im Allgemeinen für 'ignore_part_polarity' kleiner ist als für 'ignore_local_polarity'. Dies sollte bei der Wahl von MinScore des Operators find_shape_model_3d berücksichtigt werden.
Werteliste: 'ignore_local_polarity', 'ignore_part_polarity'
Defaultwert: 'ignore_local_polarity'
Mit diesem Parameter wird die Größe der Objekteile festgelegt, die verwendet werden, wenn 'metric' auf 'ignore_part_polarity' (siehe oben) gesetzt wird. Die Größe muss in Pixeln angeben werden und sollte ungefähr zweimal so groß sein wie die Größe der Störtextur im Bild. Möchte man z.B. Objekte vor einem schachbrettartigen Hintergrund mit scharzen und weißen Quadraten der Größe 5×5 Pixel finden, dann sollte 'part_size' auf 10 gesetzt werden. Dabei ist zu beachten, dass größere Werte für 'part_size' den Score von korrekten Instanzen ebenfalls verringern kann. Dies kann vor allem bei Objekten mit glänzenden oder reflektierenden Oberflächen auftreten. Folglich kann ein höherer Wert für 'part_size' das Risiko erhöhen, richtige Instanzen nicht mehr finden zu können. Wurde für 'metric' 'ignore_local_polarity' gewählt, wird der Wert von 'part_size' ignoriert.
Wertevorschläge: 2, 3, 4, 6, 8, 10
Defaultwert: 4
Kanten des 3D-Objektmodells werden nur dann in die Formbeschreibung der Ansichten übernommen, wenn der Winkel zwischen den beiden benachbarten Flächen im 3D-Objektmodell, die diese Kante gemeinsam haben, größer ist als 'min_face_angle'. Wird 'min_face_angle' auf 0.0 gesetzt, werden alle Kanten übernommen. Wird 'min_face_angle' auf (entspricht 180 Grad) gesetzt, wird nur die Silhouette des 3D-Objektmodells übernommen. Dieser Parameter kann insbesondere dafür verwendet werden, um Kanten in gekrümmten Flächen, z.B. einer Zylinder- oder Kegeloberfläche, zu unterdrücken. Gekrümmte Flächen werden durch eine Vielzahl ebener Flächen approximiert. Die Kanten zwischen solchen Flächen sollten nicht in die Formbeschreibung aufgenommen werden, da sie auch in echten Bildern vom Modell nicht zu sehen sind. Deshalb sollte 'min_face_angle' genügend hoch gesetzt werden um solche Kanten zu unterdrücken. Die Auswirkung unterschiedlicher Werte für 'min_face_angle' kann vor dem Aufruf von create_shape_model_3d mit project_object_model_3d überprüft werden. Zu beachten ist, dass wenn Kanten in die Formbeschreibung aufgenommen werden, die im Suchbild nicht sichtbar sind, die Matchingperformance (Robustheit und Geschwindigkeit) deutlich absinken kann.
Wertevorschläge: 'rad(10)', 'rad(20)', 'rad(30)', 'rad(45)'
Defaultwert: 'rad(30)'
Dieser Wert dient zur Selektion von signifikanten Komponenten des Modells basierend auf der Größe der Komponenten, d.h. zusammenhängende Komponenten, deren Anzahl von Punkten kleiner ist als diese Mindestgröße, werden unterdrückt. Dieser Schwellwert wird pro Pyramidenstufe halbiert.
Wertevorschläge: 'auto', 0, 3, 5, 10, 20
Defaultwert: 'auto'
Der Parameter spezifiziert die Toleranz der projizierten Kanten des 3D-Objektmodells im Bild (in Pixel). Je größer der Wert gewählt wird, desto weniger Ansichten werden generiert. Ein größerer Wert hat demnach zur Folge, dass das Modell zum einen weniger Speicher benötigt und zum anderen schneller mit find_shape_model_3d gefunden werden kann. Andererseits kann sich die Robustheit des Matchings verringern, wenn für 'model_tolerance' ein zu großer Wert gewählt wird. Daher sollte dieser Parameter nur mit Sorgfalt verändert werden. Für die meisten Anwendungen stellt ein Wert von 1 einen guten Kompromiss zwischen Geschwindigkeit und Robustheit dar.
Wertevorschläge: 0, 1, 2
Defaultwert: 1
Dieser Parameter legt fest, ob nach der Projektion mittels project_shape_model_3d benachbarte Konturen verbunden werden sollen. Diese Option is äquivalent zu einem anschließenden Aufruf von union_adjacent_contours_xld, ist allerdings deutlich schneller.
Werteliste: 'true', 'false'
Defaultwert: 'false'
Ist die Systemvariable (siehe set_system) 'opengl_hidden_surface_removal_enable' auf 'true' gesetzt (Standard, sofern es verfügbar ist), wird die Grafikkarte verwendet um die Berechnung der sichtbaren Flächen in den Modellansichten zu beschleunigen. Abhängig von der verwendeten Grafikkarte ist dies signifikant schneller als die analytische Sichtbarkeitsberechnung. Ist 'fast_pose_refinement' auf 'true' gesetzt, werden auch die Vorberechnungen für die Pose-Verfeinerung auf der Grafikkarte durchgeführt. Es ist zu beachten, dass die Ergebnisse der OpenGL Projektion leicht verschieden zu den Ergebnissen der analytischen Projektion sind.
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 3D-Objektmodells.
Interne Kameraparameter.
Referenzorientierung: Rotation um x-Achse bzw. x-Komponente des Rodriguez-Vektors (in Bogenmaß bzw. ohne Einheit).
Defaultwert: 0
Wertevorschläge: -1.57, -0.78, -0.17, 0., 0.17, 0.78, 1.57
Referenzorientierung: Rotation um y-Achse bzw. y-Komponente des Rodriguez-Vektors (in Bogenmaß bzw. ohne Einheit).
Defaultwert: 0
Wertevorschläge: -1.57, -0.78, -0.17, 0., 0.17, 0.78, 1.57
Referenzorientierung: Rotation um z-Achse bzw. z-Komponente des Rodriguez-Vektors (in Bogenmaß bzw. ohne Einheit).
Defaultwert: 0
Wertevorschläge: -1.57, -0.78, -0.17, 0., 0.17, 0.78, 1.57
Bedeutung der Rotationswerte der Referenzorientierung.
Defaultwert: 'gba'
Werteliste: 'abg', 'gba', 'rodriguez'
Kleinste geographische Länge der Modellansichten.
Defaultwert: -0.35
Wertevorschläge: -0.78, -0.35, -0.17
Größte geographische Länge der Modellansichten.
Defaultwert: 0.35
Wertevorschläge: 0.17, 0.35, 0.78
Restriktion: LongitudeMax >= LongitudeMin
Kleinste geographische Breite der Modellansichten.
Defaultwert: -0.35
Wertevorschläge: -0.78, -0.35, -0.17
Restriktion: - pi / 2 <= LatitudeMin && LatitudeMin <= pi / 2
Größte geographische Breite der Modellansichten.
Defaultwert: 0.35
Wertevorschläge: 0.17, 0.35, 0.78
Restriktion: - pi / 2 <= LatitudeMax && LatitudeMax <= pi / 2 && LatitudeMax >= LatitudeMin
Kleinster Kamerarollwinkel der Modellansichten.
Defaultwert: -3.1416
Wertevorschläge: -3.14, -1.57, -0.39, 0.0, 0.39, 1.57, 3.14
Größter Kamerarollwinkel der Modellansichten.
Defaultwert: 3.1416
Wertevorschläge: -3.14, -1.57, -0.39, 0.0, 0.39, 1.57, 3.14
Restriktion: CamRollMax >= CamRollMin
Kleinster Kamera-Objekt-Abstand der Modellansichten.
Defaultwert: 0.3
Wertevorschläge: 0.05, 0.1, 0.2, 0.5
Restriktion: DistMin > 0
Größter Kamera-Objekt-Abstand der Modellansichten.
Defaultwert: 0.4
Wertevorschläge: 0.1, 0.2, 0.5, 1.0
Restriktion: DistMax >= DistMin
Minimaler Kontrast des Objektes in den Suchbildern.
Defaultwert: 10
Wertevorschläge: 1, 2, 3, 5, 7, 10, 20, 30, 1000, 2000, 5000
Namen von (optionalen) Parametern für die Steuerung des Verhaltens des Operators.
Defaultwert: []
Werteliste: 'fast_pose_refinement', 'lowest_model_level', 'metric', 'min_face_angle', 'min_size', 'model_tolerance', 'num_levels', 'optimization', 'part_size', 'union_adjacent_contours'
Die zu den optionalen generischen Parametern gehörenden Werte.
Defaultwert: []
Wertevorschläge: 0, 1, 2, 3, 4, 6, 8, 10, 'auto', 'none', 'point_reduction_low', 'point_reduction_medium', 'point_reduction_high', 0.1, 0.2, 0.3, 'ignore_local_polarity', 'ignore_part_polarity', 'true', 'false'
Handle des 3D-Formmodells.
Sind die Parameterwerte korrekt, dann liefert create_shape_model_3d den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt. Wenn die Parameter so gewählt worden sind, dass alle Modellansichten zu wenige Punkte besitzen, wird die Fehlermeldung 8510 zurückgeliefert. Für den Fall, dass das projizierte Modell in mindestens einer Ansicht größer als die doppelte Bildgröße ist, wird die Fehlermeldung 8910 zurückgeliefert.
read_object_model_3d, project_object_model_3d, get_object_model_3d_params
find_shape_model_3d, write_shape_model_3d, project_shape_model_3d, get_shape_model_3d_params, get_shape_model_3d_contours
convert_point_3d_cart_to_spher, convert_point_3d_spher_to_cart, create_cam_pose_look_at_point, trans_pose_shape_model_3d
Markus Ulrich, Christian Wiedemann, Carsten Steger, „Combining Scale-Space and Similarity-Based Aspect Graphs for Fast 3D Object Recognition,“ IEEE Transactions on Pattern Analysis and Machine Intelligence, pp. 1902-1914, Oct., 2012.
3D Metrology
| Operatoren |