create_shape_model_3dT_create_shape_model_3dCreateShapeModel3dCreateShapeModel3d (Operator)

Name

create_shape_model_3dT_create_shape_model_3dCreateShapeModel3dCreateShapeModel3d — Vorbereiten eines 3D-Objektmodells für das Matching.

Signatur

create_shape_model_3d( : : ObjectModel3D, CamParam, RefRotX, RefRotY, RefRotZ, OrderOfRotation, LongitudeMin, LongitudeMax, LatitudeMin, LatitudeMax, CamRollMin, CamRollMax, DistMin, DistMax, MinContrast, GenParamName, GenParamValue : ShapeModel3DID)

Herror T_create_shape_model_3d(const Htuple ObjectModel3D, const Htuple CamParam, const Htuple RefRotX, const Htuple RefRotY, const Htuple RefRotZ, const Htuple OrderOfRotation, const Htuple LongitudeMin, const Htuple LongitudeMax, const Htuple LatitudeMin, const Htuple LatitudeMax, const Htuple CamRollMin, const Htuple CamRollMax, const Htuple DistMin, const Htuple DistMax, const Htuple MinContrast, const Htuple GenParamName, const Htuple GenParamValue, Htuple* ShapeModel3DID)

void CreateShapeModel3d(const HTuple& ObjectModel3D, const HTuple& CamParam, const HTuple& RefRotX, const HTuple& RefRotY, const HTuple& RefRotZ, const HTuple& OrderOfRotation, const HTuple& LongitudeMin, const HTuple& LongitudeMax, const HTuple& LatitudeMin, const HTuple& LatitudeMax, const HTuple& CamRollMin, const HTuple& CamRollMax, const HTuple& DistMin, const HTuple& DistMax, const HTuple& MinContrast, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ShapeModel3DID)

void HShapeModel3D::HShapeModel3D(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const HString& OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const HTuple& GenParamName, const HTuple& GenParamValue)

void HShapeModel3D::HShapeModel3D(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const HString& OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const HString& GenParamName, Hlong GenParamValue)

void HShapeModel3D::HShapeModel3D(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const char* OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const char* GenParamName, Hlong GenParamValue)

void HShapeModel3D::HShapeModel3D(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const wchar_t* OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const wchar_t* GenParamName, Hlong GenParamValue)   (Nur Windows)

void HShapeModel3D::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const HString& OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const HTuple& GenParamName, const HTuple& GenParamValue)

void HShapeModel3D::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const HString& OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const HString& GenParamName, Hlong GenParamValue)

void HShapeModel3D::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const char* OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const char* GenParamName, Hlong GenParamValue)

void HShapeModel3D::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, const HCamPar& CamParam, double RefRotX, double RefRotY, double RefRotZ, const wchar_t* OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const wchar_t* GenParamName, Hlong GenParamValue)   (Nur Windows)

HShapeModel3D HCamPar::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, double RefRotX, double RefRotY, double RefRotZ, const HString& OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const HTuple& GenParamName, const HTuple& GenParamValue) const

HShapeModel3D HCamPar::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, double RefRotX, double RefRotY, double RefRotZ, const HString& OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const HString& GenParamName, Hlong GenParamValue) const

HShapeModel3D HCamPar::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, double RefRotX, double RefRotY, double RefRotZ, const char* OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const char* GenParamName, Hlong GenParamValue) const

HShapeModel3D HCamPar::CreateShapeModel3d(const HObjectModel3D& ObjectModel3D, double RefRotX, double RefRotY, double RefRotZ, const wchar_t* OrderOfRotation, double LongitudeMin, double LongitudeMax, double LatitudeMin, double LatitudeMax, double CamRollMin, double CamRollMax, double DistMin, double DistMax, Hlong MinContrast, const wchar_t* GenParamName, Hlong GenParamValue) const   (Nur Windows)

static void HOperatorSet.CreateShapeModel3d(HTuple objectModel3D, HTuple camParam, HTuple refRotX, HTuple refRotY, HTuple refRotZ, HTuple orderOfRotation, HTuple longitudeMin, HTuple longitudeMax, HTuple latitudeMin, HTuple latitudeMax, HTuple camRollMin, HTuple camRollMax, HTuple distMin, HTuple distMax, HTuple minContrast, HTuple genParamName, HTuple genParamValue, out HTuple shapeModel3DID)

public HShapeModel3D(HObjectModel3D objectModel3D, HCamPar camParam, double refRotX, double refRotY, double refRotZ, string orderOfRotation, double longitudeMin, double longitudeMax, double latitudeMin, double latitudeMax, double camRollMin, double camRollMax, double distMin, double distMax, int minContrast, HTuple genParamName, HTuple genParamValue)

public HShapeModel3D(HObjectModel3D objectModel3D, HCamPar camParam, double refRotX, double refRotY, double refRotZ, string orderOfRotation, double longitudeMin, double longitudeMax, double latitudeMin, double latitudeMax, double camRollMin, double camRollMax, double distMin, double distMax, int minContrast, string genParamName, int genParamValue)

void HShapeModel3D.CreateShapeModel3d(HObjectModel3D objectModel3D, HCamPar camParam, double refRotX, double refRotY, double refRotZ, string orderOfRotation, double longitudeMin, double longitudeMax, double latitudeMin, double latitudeMax, double camRollMin, double camRollMax, double distMin, double distMax, int minContrast, HTuple genParamName, HTuple genParamValue)

void HShapeModel3D.CreateShapeModel3d(HObjectModel3D objectModel3D, HCamPar camParam, double refRotX, double refRotY, double refRotZ, string orderOfRotation, double longitudeMin, double longitudeMax, double latitudeMin, double latitudeMax, double camRollMin, double camRollMax, double distMin, double distMax, int minContrast, string genParamName, int genParamValue)

HShapeModel3D HCamPar.CreateShapeModel3d(HObjectModel3D objectModel3D, double refRotX, double refRotY, double refRotZ, string orderOfRotation, double longitudeMin, double longitudeMax, double latitudeMin, double latitudeMax, double camRollMin, double camRollMax, double distMin, double distMax, int minContrast, HTuple genParamName, HTuple genParamValue)

HShapeModel3D HCamPar.CreateShapeModel3d(HObjectModel3D objectModel3D, double refRotX, double refRotY, double refRotZ, string orderOfRotation, double longitudeMin, double longitudeMax, double latitudeMin, double latitudeMax, double camRollMin, double camRollMax, double distMin, double distMax, int minContrast, string genParamName, int genParamValue)

Beschreibung

create_shape_model_3dcreate_shape_model_3dCreateShapeModel3dCreateShapeModel3dCreateShapeModel3d bereitet ein 3D-Objektmodell, das in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D übergeben wird, als 3D-Formmodell für das Matching vor. Das 3D-Objektmodell muss zuvor mit read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d 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 ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D übergeben wird. Die Formbeschreibungen aller Ansichten werden im 3D-Formmmodell gespeichert, das in ShapeModel3DIDShapeModel3DIDShapeModel3DIDShapeModel3DIDshapeModel3DID zurückgeliefert wird. Während des Matching-Prozesses mit find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d 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 CamParamCamParamCamParamCamParamcamParam ü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_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCameras zu kalibrieren. Auf der einen Seite führt dies dazu, dass die von find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d 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 RefRotXRefRotXRefRotXRefRotXrefRotX, RefRotYRefRotYRefRotYRefRotYrefRotY, RefRotZRefRotZRefRotZRefRotZrefRotZ, OrderOfRotationOrderOfRotationOrderOfRotationOrderOfRotationorderOfRotation, LongitudeMinLongitudeMinLongitudeMinLongitudeMinlongitudeMin, LongitudeMaxLongitudeMaxLongitudeMaxLongitudeMaxlongitudeMax, LatitudeMinLatitudeMinLatitudeMinLatitudeMinlatitudeMin, LatitudeMaxLatitudeMaxLatitudeMaxLatitudeMaxlatitudeMax, CamRollMinCamRollMinCamRollMinCamRollMincamRollMin, CamRollMaxCamRollMaxCamRollMaxCamRollMaxcamRollMax, DistMinDistMinDistMinDistMindistMin und DistMaxDistMaxDistMaxDistMaxdistMax 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_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams 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_cartconvert_point_3d_spher_to_cartConvertPoint3dSpherToCartConvertPoint3dSpherToCartConvertPoint3dSpherToCart oder convert_point_3d_cart_to_spherconvert_point_3d_cart_to_spherConvertPoint3dCartToSpherConvertPoint3dCartToSpherConvertPoint3dCartToSpher 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 LongitudeMinLongitudeMinLongitudeMinLongitudeMinlongitudeMin und LongitudeMaxLongitudeMaxLongitudeMaxLongitudeMaxlongitudeMax angegeben werden (beide im Bogenmaß). Entsprechend kann der Breitenbereich durch LatitudeMinLatitudeMinLatitudeMinLatitudeMinlatitudeMin und LatitudeMaxLatitudeMaxLatitudeMaxLatitudeMaxlatitudeMax festgelegt werden (ebenso im Bogenmaß). LongitudeMinLongitudeMinLongitudeMinLongitudeMinlongitudeMin und LongitudeMaxLongitudeMaxLongitudeMaxLongitudeMaxlongitudeMax sind so eingestellt, dass sie einen Bereich von 360° beibehalten. Wenn eine Anpassung möglich ist, bleiben LongitudeMinLongitudeMinLongitudeMinLongitudeMinlongitudeMin und der Bereich erhalten. Die minimale und maximale Distanz zwischen Kamerazentrum und Modell-Referenzpunkt können in DistMinDistMinDistMinDistMindistMin und DistMaxDistMaxDistMaxDistMaxdistMax übergeben werden. Dabei befindet sich der Ursprung des Modells im Zentrum des kleinsten einschließenden Quaders und stimmt nicht notwendigerweise mit dem Ursprung des CAD-Koordinatensystems überein. Zu beachten ist, dass die Distanzen in der Einheit Meter angegeben werden müssen (davon ausgehend, dass der Parameter ScaleScaleScaleScalescale beim Einlesen der CAD-Datei mit read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d korrekt gesetzt wurde). Schließlich können in CamRollMinCamRollMinCamRollMinCamRollMincamRollMin und CamRollMaxCamRollMaxCamRollMaxCamRollMaxcamRollMax 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 CamRollMinCamRollMinCamRollMinCamRollMincamRollMin und CamRollMaxCamRollMaxCamRollMaxCamRollMaxcamRollMax 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_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d 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 RefRotXRefRotXRefRotXRefRotXrefRotX, RefRotYRefRotYRefRotYRefRotYrefRotY, RefRotZRefRotZRefRotZRefRotZrefRotZ und OrderOfRotationOrderOfRotationOrderOfRotationOrderOfRotationorderOfRotation 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 RefRotXRefRotXRefRotXRefRotXrefRotX, RefRotYRefRotYRefRotYRefRotYrefRotY und RefRotZRefRotZRefRotZRefRotZrefRotZ und die Reihenfolge, in der die Rotationen angewendet werden, übergeben werden. Für die Rotationsreihenfolge kann dabei entweder 'gba'"gba""gba""gba""gba" oder 'abg'"abg""abg""abg""abg" gewählt werden. In der zweiten Möglichkeit können die drei Komponenten des Rodriguez-Rotationsvektors in RefRotXRefRotXRefRotXRefRotXrefRotX, RefRotYRefRotYRefRotYRefRotYrefRotY und RefRotZRefRotZRefRotZRefRotZrefRotZ übergeben werden. In diesem Fall muss für OrderOfRotationOrderOfRotationOrderOfRotationOrderOfRotationorderOfRotation 'rodriguez'"rodriguez""rodriguez""rodriguez""rodriguez" übergeben werden (für weitere Details über Rotationsreihenfolgen und die Definition des Rodriguez-Vektors siehe create_posecreate_poseCreatePoseCreatePoseCreatePose).

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-Lage. Letztere kann mit dem Operator get_shape_model_3d_paramsget_shape_model_3d_paramsGetShapeModel3dParamsGetShapeModel3dParamsGetShapeModel3dParams abgefragt werden, indem für GenParamNameGenParamNameGenParamNameGenParamNamegenParamName 'reference_pose'"reference_pose""reference_pose""reference_pose""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 OrderOfRotationOrderOfRotationOrderOfRotationOrderOfRotationorderOfRotation (für weitere Details über die verschiednen Typen von Poses siehe create_posecreate_poseCreatePoseCreatePoseCreatePose). Zu beachten ist allerdings, dass die mit get_shape_model_3d_paramsget_shape_model_3d_paramsGetShapeModel3dParamsGetShapeModel3dParamsGetShapeModel3dParams 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_3dtrans_pose_shape_model_3dTransPoseShapeModel3dTransPoseShapeModel3dTransPoseShapeModel3d 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_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d zurückgelieferte Pose bezieht sich dagegen stets auf das ursprüngliche durch die CAD-Datei definierten Koordinatensystems des 3D-Objektmodells.

Mit MinContrastMinContrastMinContrastMinContrastminContrast wird festgelegt, welchen Grauwertkontrast das Modell später bei der Erkennung mit find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d 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 MinContrastMinContrastMinContrastMinContrastminContrast 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 MinContrastMinContrastMinContrastMinContrastminContrast zu bestimmen. Falls die Grauwerte in einem Kanal z.B. in einem Bereich von 10 Graustufen schwanken, sollte MinContrastMinContrastMinContrastMinContrastminContrast bei einem dreikanaligen Bild auf 17 gesetzt werden. Falls das Modell später in sehr kontrastarmen Bildern erkannt werden soll, muss MinContrastMinContrastMinContrastMinContrastminContrast entsprechend klein gewählt werden. Falls das Modell mit erheblichen Verdeckungen erkannt werden soll, sollte MinContrastMinContrastMinContrastMinContrastminContrast 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_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d 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 GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue übergeben werden. Die folgenden Werte für GenParamNameGenParamNameGenParamNameGenParamNamegenParamName sind möglich:

'num_levels'"num_levels""num_levels""num_levels""num_levels":

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'"num_levels""num_levels""num_levels""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'"num_levels""num_levels""num_levels""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_3dcreate_shape_model_3dCreateShapeModel3dCreateShapeModel3dCreateShapeModel3d eine Fehlermeldung zurück. Falls für 'num_levels'"num_levels""num_levels""num_levels""num_levels" 'auto'"auto""auto""auto""auto" (Default-Wert) übergeben wird, wählt create_shape_model_3dcreate_shape_model_3dCreateShapeModel3dCreateShapeModel3dCreateShapeModel3d 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'"num_levels""num_levels""num_levels""num_levels" 'auto'"auto""auto""auto""auto" übergeben wird, In seltenen Fällen kann es vorkommen, dass create_shape_model_3dcreate_shape_model_3dCreateShapeModel3dCreateShapeModel3dCreateShapeModel3d 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 MinScoreMinScoreMinScoreMinScoreminScore oder GreedinessGreedinessGreedinessGreedinessgreediness in find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d 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_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d kommen. In diesen Fällen sollten die Ansichten auf den verschiedenen Pyramidenebenen mit get_shape_model_3d_contoursget_shape_model_3d_contoursGetShapeModel3dContoursGetShapeModel3dContoursGetShapeModel3dContours überprüft werden.

Wertevorschläge: 'auto'"auto""auto""auto""auto", 3, 4, 5, 6

Defaultwert: 'auto'"auto""auto""auto""auto"

'fast_pose_refinement'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement":

Der Parameter legt fest, ob die Pose-Verfeinerung während der Suche mit find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d in einem beschleunigten Modus durchgeführt werden soll. Falls für 'fast_pose_refinement'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement" 'false'"false""false""false""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'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement" 'true'"true""true""true""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_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d in Abhängigkeit von der Wahl von 'fast_pose_refinement'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement" zu leicht unterschiedlichen Ergebnis-Posen kommen kann, da bei der Wahl von 'true'"true""true""true""true" intern die Pose-Verfeinerung approximiert wird.

Werteliste: 'true'"true""true""true""true", 'false'"false""false""false""false",

Defaultwert: 'true'"true""true""true""true"

'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level":

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'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" die Möglichkeit, die unterste(n) Pyramidenebene(n) von der Ansichtengenerierung auszuschließen. Der Wert, der für 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""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'"lowest_model_level""lowest_model_level""lowest_model_level""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'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" nicht angegeben, werden Ansichten bis zur untersten Pyramidenebene generiert, was dem Verhalten entspricht, wenn für 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" 1 übergeben wird. Wird für 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" ein Wert größer als 1 übergeben, wird bei der späteren Suche mit find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d die Verfolgung der Matches durch die Pyramide zunächst auf der angegebenen Ebene abgebrochen. Wird bei find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d 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'"lowest_model_level""lowest_model_level""lowest_model_level""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'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" gewählt wird, desto größer wird der Anteil der Verfeinerung an der Gesamtlaufzeit von find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d. Daher wirkt sich auch der Wert des generischen Parameters 'fast_pose_refinement'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement" (siehe oben) mit größeren Werten für 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" stärker aus. Auf der einen Seite kann ein großer Wert für 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" bei ausgeschaltetem 'fast_pose_refinement'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement" ('false'"false""false""false""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'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" bei eingeschaltetem 'fast_pose_refinement'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement" ('true'"true""true""true""true") zu ungenaueren Ergebnissen führen, da intern die Pose-Verfeinerung nur approximiert wird. Der Wert für 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level" sollte demnach so klein wie möglich gewählt werden. Außerdem sollte 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""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

'optimization'"optimization""optimization""optimization""optimization":

Bei Modellen mit besonders großen Ansichten kann es auch sinnvoll sein, die Anzahl der Modellpunkte durch Setzen des Parameters 'optimization'"optimization""optimization""optimization""optimization" auf einen Wert ungleich 'none'"none""none""none""none" zu setzen. Falls 'optimization'"optimization""optimization""optimization""optimization" = 'none'"none""none""none""none", werden alle Modellpunkte abgespeichert. Ansonsten wird die Anzahl der Punkte entsprechend dem Parameter 'optimization'"optimization""optimization""optimization""optimization" reduziert. Falls die Anzahl der Punkte reduziert wird, kann es bei find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d notwendig werden, den Parameter GreedinessGreedinessGreedinessGreedinessgreediness 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'"optimization""optimization""optimization""optimization" 'auto'"auto""auto""auto""auto" übergeben wird, wählt create_shape_model_3dcreate_shape_model_3dCreateShapeModel3dCreateShapeModel3dCreateShapeModel3d die Reduktion der Punkte automatisch.

Werteliste: 'auto'"auto""auto""auto""auto", 'none'"none""none""none""none", 'point_reduction_low'"point_reduction_low""point_reduction_low""point_reduction_low""point_reduction_low", 'point_reduction_medium'"point_reduction_medium""point_reduction_medium""point_reduction_medium""point_reduction_medium", 'point_reduction_high'"point_reduction_high""point_reduction_high""point_reduction_high""point_reduction_high"

Default value: 'auto'"auto""auto""auto""auto"

'metric'"metric""metric""metric""metric":

Dieser Parameter legt fest, unter welchen Bedingungen das Modell im Bild noch erkannt wird. Wenn 'metric'"metric""metric""metric""metric" = 'ignore_part_polarity'"ignore_part_polarity""ignore_part_polarity""ignore_part_polarity""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'"ignore_part_polarity""ignore_part_polarity""ignore_part_polarity""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'"part_size""part_size""part_size""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_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d in einem mehrkanaligen Bild gesucht, wird ein Fehler zurückgegeben. Wenn 'metric'"metric""metric""metric""metric" = 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""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'"ignore_part_polarity""ignore_part_polarity""ignore_part_polarity""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_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d berechnete Score im Allgemeinen für 'ignore_part_polarity'"ignore_part_polarity""ignore_part_polarity""ignore_part_polarity""ignore_part_polarity" kleiner ist als für 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity". Dies sollte bei der Wahl von MinScoreMinScoreMinScoreMinScoreminScore des Operators find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d berücksichtigt werden.

Werteliste: 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity", 'ignore_part_polarity'"ignore_part_polarity""ignore_part_polarity""ignore_part_polarity""ignore_part_polarity"

Defaultwert: 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity"

'part_size'"part_size""part_size""part_size""part_size":

Mit diesem Parameter wird die Größe der Objekteile festgelegt, die verwendet werden, wenn 'metric'"metric""metric""metric""metric" auf 'ignore_part_polarity'"ignore_part_polarity""ignore_part_polarity""ignore_part_polarity""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'"part_size""part_size""part_size""part_size" auf 10 gesetzt werden. Dabei ist zu beachten, dass größere Werte für 'part_size'"part_size""part_size""part_size""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'"part_size""part_size""part_size""part_size" das Risiko erhöhen, richtige Instanzen nicht mehr finden zu können. Wurde für 'metric'"metric""metric""metric""metric" 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity" gewählt, wird der Wert von 'part_size'"part_size""part_size""part_size""part_size" ignoriert.

Wertevorschläge: 2, 3, 4, 6, 8, 10

Defaultwert: 4

'min_face_angle'"min_face_angle""min_face_angle""min_face_angle""min_face_angle":

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'"min_face_angle""min_face_angle""min_face_angle""min_face_angle". Wird 'min_face_angle'"min_face_angle""min_face_angle""min_face_angle""min_face_angle" auf 0.0 gesetzt, werden alle Kanten übernommen. Wird 'min_face_angle'"min_face_angle""min_face_angle""min_face_angle""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'"min_face_angle""min_face_angle""min_face_angle""min_face_angle" genügend hoch gesetzt werden um solche Kanten zu unterdrücken. Die Auswirkung unterschiedlicher Werte für 'min_face_angle'"min_face_angle""min_face_angle""min_face_angle""min_face_angle" kann vor dem Aufruf von create_shape_model_3dcreate_shape_model_3dCreateShapeModel3dCreateShapeModel3dCreateShapeModel3d mit project_object_model_3dproject_object_model_3dProjectObjectModel3dProjectObjectModel3dProjectObjectModel3d ü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(10)""rad(10)""rad(10)""rad(10)", 'rad(20)'"rad(20)""rad(20)""rad(20)""rad(20)", 'rad(30)'"rad(30)""rad(30)""rad(30)""rad(30)", 'rad(45)'"rad(45)""rad(45)""rad(45)""rad(45)"

Defaultwert: 'rad(30)'"rad(30)""rad(30)""rad(30)""rad(30)"

'min_size'"min_size""min_size""min_size""min_size":

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'"auto""auto""auto""auto", 0, 3, 5, 10, 20

Defaultwert: 'auto'"auto""auto""auto""auto"

'model_tolerance'"model_tolerance""model_tolerance""model_tolerance""model_tolerance":

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_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d gefunden werden kann. Andererseits kann sich die Robustheit des Matchings verringern, wenn für 'model_tolerance'"model_tolerance""model_tolerance""model_tolerance""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

'union_adjacent_contours'"union_adjacent_contours""union_adjacent_contours""union_adjacent_contours""union_adjacent_contours":

Dieser Parameter legt fest, ob nach der Projektion mittels project_shape_model_3dproject_shape_model_3dProjectShapeModel3dProjectShapeModel3dProjectShapeModel3d benachbarte Konturen verbunden werden sollen. Diese Option is äquivalent zu einem anschließenden Aufruf von union_adjacent_contours_xldunion_adjacent_contours_xldUnionAdjacentContoursXldUnionAdjacentContoursXldUnionAdjacentContoursXld, ist allerdings deutlich schneller.

Werteliste: 'true'"true""true""true""true", 'false'"false""false""false""false"

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

Ist die Systemvariable (siehe set_systemset_systemSetSystemSetSystemSetSystem) 'opengl_hidden_surface_removal_enable'"opengl_hidden_surface_removal_enable""opengl_hidden_surface_removal_enable""opengl_hidden_surface_removal_enable""opengl_hidden_surface_removal_enable" auf 'true'"true""true""true""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'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement" auf 'true'"true""true""true""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.

Ausführungsinformationen

Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.

Parameter

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

Handle des 3D-Objektmodells.

CamParamCamParamCamParamCamParamcamParam (input_control)  campar HCamPar, HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter.

RefRotXRefRotXRefRotXRefRotXrefRotX (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

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

RefRotYRefRotYRefRotYRefRotYrefRotY (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

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

RefRotZRefRotZRefRotZRefRotZrefRotZ (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

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

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

Bedeutung der Rotationswerte der Referenzorientierung.

Defaultwert: 'gba' "gba" "gba" "gba" "gba"

Werteliste: 'abg'"abg""abg""abg""abg", 'gba'"gba""gba""gba""gba", 'rodriguez'"rodriguez""rodriguez""rodriguez""rodriguez"

LongitudeMinLongitudeMinLongitudeMinLongitudeMinlongitudeMin (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

Kleinste geographische Länge der Modellansichten.

Defaultwert: -0.35

Wertevorschläge: -0.78, -0.35, -0.17

LongitudeMaxLongitudeMaxLongitudeMaxLongitudeMaxlongitudeMax (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

Größte geographische Länge der Modellansichten.

Defaultwert: 0.35

Wertevorschläge: 0.17, 0.35, 0.78

Restriktion: LongitudeMax >= LongitudeMin

LatitudeMinLatitudeMinLatitudeMinLatitudeMinlatitudeMin (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

Kleinste geographische Breite der Modellansichten.

Defaultwert: -0.35

Wertevorschläge: -0.78, -0.35, -0.17

Restriktion: - pi / 2 <= LatitudeMin && LatitudeMin <= pi / 2

LatitudeMaxLatitudeMaxLatitudeMaxLatitudeMaxlatitudeMax (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

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

CamRollMinCamRollMinCamRollMinCamRollMincamRollMin (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

Kleinster Kamerarollwinkel der Modellansichten.

Defaultwert: -3.1416

Wertevorschläge: -3.14, -1.57, -0.39, 0.0, 0.39, 1.57, 3.14

CamRollMaxCamRollMaxCamRollMaxCamRollMaxcamRollMax (input_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

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

DistMinDistMinDistMinDistMindistMin (input_control)  number HTupleHTupleHtuple (real) (double) (double) (double)

Kleinster Kamera-Objekt-Abstand der Modellansichten.

Defaultwert: 0.3

Wertevorschläge: 0.05, 0.1, 0.2, 0.5

Restriktion: DistMin > 0

DistMaxDistMaxDistMaxDistMaxdistMax (input_control)  number HTupleHTupleHtuple (real) (double) (double) (double)

Größter Kamera-Objekt-Abstand der Modellansichten.

Defaultwert: 0.4

Wertevorschläge: 0.1, 0.2, 0.5, 1.0

Restriktion: DistMax >= DistMin

MinContrastMinContrastMinContrastMinContrastminContrast (input_control)  number HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Minimaler Kontrast des Objektes in den Suchbildern.

Defaultwert: 10

Wertevorschläge: 1, 2, 3, 5, 7, 10, 20, 30, 1000, 2000, 5000

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

Namen von (optionalen) Parametern für die Steuerung des Verhaltens des Operators.

Defaultwert: []

Werteliste: 'fast_pose_refinement'"fast_pose_refinement""fast_pose_refinement""fast_pose_refinement""fast_pose_refinement", 'lowest_model_level'"lowest_model_level""lowest_model_level""lowest_model_level""lowest_model_level", 'metric'"metric""metric""metric""metric", 'min_face_angle'"min_face_angle""min_face_angle""min_face_angle""min_face_angle", 'min_size'"min_size""min_size""min_size""min_size", 'model_tolerance'"model_tolerance""model_tolerance""model_tolerance""model_tolerance", 'num_levels'"num_levels""num_levels""num_levels""num_levels", 'optimization'"optimization""optimization""optimization""optimization", 'part_size'"part_size""part_size""part_size""part_size", 'union_adjacent_contours'"union_adjacent_contours""union_adjacent_contours""union_adjacent_contours""union_adjacent_contours"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.name(-array) HTupleHTupleHtuple (integer / real / string) (int / long / double / string) (Hlong / double / HString) (Hlong / double / char*)

Die zu den optionalen generischen Parametern gehörenden Werte.

Defaultwert: []

Wertevorschläge: 0, 1, 2, 3, 4, 6, 8, 10, 'auto'"auto""auto""auto""auto", 'none'"none""none""none""none", 'point_reduction_low'"point_reduction_low""point_reduction_low""point_reduction_low""point_reduction_low", 'point_reduction_medium'"point_reduction_medium""point_reduction_medium""point_reduction_medium""point_reduction_medium", 'point_reduction_high'"point_reduction_high""point_reduction_high""point_reduction_high""point_reduction_high", 0.1, 0.2, 0.3, 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity", 'ignore_part_polarity'"ignore_part_polarity""ignore_part_polarity""ignore_part_polarity""ignore_part_polarity", 'true'"true""true""true""true", 'false'"false""false""false""false"

ShapeModel3DIDShapeModel3DIDShapeModel3DIDShapeModel3DIDshapeModel3DID (output_control)  shape_model_3d HShapeModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des 3D-Formmodells.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert create_shape_model_3dcreate_shape_model_3dCreateShapeModel3dCreateShapeModel3dCreateShapeModel3d 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.

Vorgänger

read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d, project_object_model_3dproject_object_model_3dProjectObjectModel3dProjectObjectModel3dProjectObjectModel3d, get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams

Nachfolger

find_shape_model_3dfind_shape_model_3dFindShapeModel3dFindShapeModel3dFindShapeModel3d, write_shape_model_3dwrite_shape_model_3dWriteShapeModel3dWriteShapeModel3dWriteShapeModel3d, project_shape_model_3dproject_shape_model_3dProjectShapeModel3dProjectShapeModel3dProjectShapeModel3d, get_shape_model_3d_paramsget_shape_model_3d_paramsGetShapeModel3dParamsGetShapeModel3dParamsGetShapeModel3dParams, get_shape_model_3d_contoursget_shape_model_3d_contoursGetShapeModel3dContoursGetShapeModel3dContoursGetShapeModel3dContours

Siehe auch

convert_point_3d_cart_to_spherconvert_point_3d_cart_to_spherConvertPoint3dCartToSpherConvertPoint3dCartToSpherConvertPoint3dCartToSpher, convert_point_3d_spher_to_cartconvert_point_3d_spher_to_cartConvertPoint3dSpherToCartConvertPoint3dSpherToCartConvertPoint3dSpherToCart, create_cam_pose_look_at_pointcreate_cam_pose_look_at_pointCreateCamPoseLookAtPointCreateCamPoseLookAtPointCreateCamPoseLookAtPoint, trans_pose_shape_model_3dtrans_pose_shape_model_3dTransPoseShapeModel3dTransPoseShapeModel3dTransPoseShapeModel3d

Literatur

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.

Modul

3D Metrology