object_model_3d_to_xyzT_object_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyz (Operator)

Name

object_model_3d_to_xyzT_object_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyz — Transformieren eines 3D-Objektmodells in Bilder.

Signatur

object_model_3d_to_xyz( : X, Y, Z : ObjectModel3D, Type, CamParam, Pose : )

Herror T_object_model_3d_to_xyz(Hobject* X, Hobject* Y, Hobject* Z, const Htuple ObjectModel3D, const Htuple Type, const Htuple CamParam, const Htuple Pose)

void ObjectModel3dToXyz(HObject* X, HObject* Y, HObject* Z, const HTuple& ObjectModel3D, const HTuple& Type, const HTuple& CamParam, const HTuple& Pose)

static HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3DArray& ObjectModel3D, const HString& Type, const HCamPar& CamParam, const HPose& Pose)

HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HString& Type, const HCamPar& CamParam, const HPose& Pose) const

HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const char* Type, const HCamPar& CamParam, const HPose& Pose) const

HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const wchar_t* Type, const HCamPar& CamParam, const HPose& Pose) const   (Nur Windows)

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3DArray& ObjectModel3D, const HString& Type, const HPose& Pose) const

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3D& ObjectModel3D, const HString& Type, const HPose& Pose) const

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3D& ObjectModel3D, const char* Type, const HPose& Pose) const

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3D& ObjectModel3D, const wchar_t* Type, const HPose& Pose) const   (Nur Windows)

static void HOperatorSet.ObjectModel3dToXyz(out HObject x, out HObject y, out HObject z, HTuple objectModel3D, HTuple type, HTuple camParam, HTuple pose)

static HImage HObjectModel3D.ObjectModel3dToXyz(out HImage y, out HImage z, HObjectModel3D[] objectModel3D, string type, HCamPar camParam, HPose pose)

HImage HObjectModel3D.ObjectModel3dToXyz(out HImage y, out HImage z, string type, HCamPar camParam, HPose pose)

HImage HCamPar.ObjectModel3dToXyz(out HImage y, out HImage z, HObjectModel3D[] objectModel3D, string type, HPose pose)

HImage HCamPar.ObjectModel3dToXyz(out HImage y, out HImage z, HObjectModel3D objectModel3D, string type, HPose pose)

Beschreibung

object_model_3d_to_xyzobject_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyzObjectModel3dToXyz transformiert die Punkte des 3D-Objektmodells ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D in die drei Bilder XXXXx, YYYYy und ZZZZz.

Es gibt drei mögliche Transformationsmethoden, die über den Parameter TypeTypeTypeTypetype ausgewählt werden. Zu beachten ist, dass nur im Modus 'cartesian_faces'"cartesian_faces""cartesian_faces""cartesian_faces""cartesian_faces" mehr als ein 3D-Objektmodell in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D übergeben werden kann. Alle anderen Modi verlangen genau ein 3D-Objektmodell.

'cartesian'"cartesian""cartesian""cartesian""cartesian":

Die 3D-Punkte des Modells werden zunächst mit der übergebenen PosePosePosePosepose transformiert. Anschließend werden sie mittels der in CamParamCamParamCamParamCamParamcamParam übergebenen Kameraparameter in ein Bild projiziert.

Die internen Kameraparameter CamParamCamParamCamParamCamParamcamParam beschreiben die Art der Projektion (siehe Kalibrierung). Die PosePosePosePosepose wird in der Form erwartet. Dabei steht ccs für das Kamerakoordinatensystem und mcs für das Modellkoordinatensystem (ein 3D Weltkoordinatensystem), siehe auch Transformationen / Posen und „Solution Guide III-C - 3D Vision“. Folglich beschreibt die Pose die Position und Orientierung des Modellkoordinatensystems zum Kamerakoordinatensystem.

Die X-, Y- und Z-Koordinaten der transformierten Punkte werden jeweils in das entsprechende Ausgabebild an die projizierte Stelle geschrieben. Werden mehrere Punkte auf die selbe Bildkoordinate projiziert, so wird nur der Punkt mit dem kleinsten Z-Wert in die Bilder geschrieben. Die Größe der Bilder wird durch die Kameraparameter festgelegt.

Die zurückgegebenen Bilder zeigen das Objekt so wie es von der Kamera unter der entsprechenden Pose gesehen werden würde.

'cartesian_faces'"cartesian_faces""cartesian_faces""cartesian_faces""cartesian_faces":

Diese Transformationsmethode ist nur verwendbar, wenn die 3D-Objektmodelle Flächen (Dreiecke oder Polygone) enthalten. Andernfalls wird das 3D-Objektmodell ohne Flächen unberücksichtigt. Wenn eines der 3D-Objektmodelle Polygone enthält, werden diese intern zunächst in Dreiecke umgewandelt. Diese Umwandlung kann schon vorher durchgeführt werden, um diesen Operator zu beschleunigen. Dafür kann read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d mit GenParamNameGenParamNameGenParamNameGenParamNamegenParamName 'convert_to_triangles'"convert_to_triangles""convert_to_triangles""convert_to_triangles""convert_to_triangles" auf 'true'"true""true""true""true" gesetzt verwendet werden, um alle Polygone in Dreiecke zu konvertieren. Alternativ kann triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3dTriangulateObjectModel3d zur Erstellung der Oberflächendreiecke aufgerufen werden.

Die Flächen der Modelle werden zunächst mit der übergebenen PosePosePosePosepose transformiert. Anschließend werden sie mittels der in CamParamCamParamCamParamCamParamcamParam übergebenen Kameraparameter in ein Bild projiziert, wobei die 3D-Information (X-, Y- und Z-Koordinaten) in den Pixeln weiterhin enthalten bleibt. Mehr Details zu CamParamCamParamCamParamCamParamcamParam und PosePosePosePosepose finden sich auch im Abschnitt 'cartesian'"cartesian""cartesian""cartesian""cartesian". Werden mehrere Flächen auf dieselbe Bildkoordinate projiziert, so wird nur der Wert mit dem kleinsten Z-Wert in die Bilder geschrieben. Die Größe der Bilder wird durch die Kameraparameter festgelegt.

Die zurückgegebenen Bilder zeigen die Objekte so, wie sie von der Kamera unter der entsprechenden Pose gesehen werden würden.

Sind OpenGL 2.1, GLSL 1.2 und die OpenGL Extensions GL_EXT_framebuffer_object und GL_EXT_framebuffer_blit verfügbar, ist die Verarbeitungsgeschwindigkeit höher.

Dieser TypeTypeTypeTypetype kann zur Erzeugung von Modellen mit 2D-Mapping verwendet werden, indem mit xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d wieder ein Modell aus den zurückgegebenen Bildern erstellt wird. Die Verwendung eines 2D-Mappings ist oft vorteilhaft auf Grund besserer Robustheit und höherer Verarbeitungsgeschwindigkeit, z. B. für die Operatoren sample_object_model_3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3dSampleObjectModel3d und surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d, sowie in der Vorbearbeitung eines 3D-Objektmodells für das oberflächenbasierte 3D-Matching (Glättung, Entfernung der Ausreißer, und Reduzieren der Domäne).

'from_xyz_map'"from_xyz_map""from_xyz_map""from_xyz_map""from_xyz_map":

Diese Transformationsmethode ist nur möglich, wenn das 3D-Objektmodell mit dem Operator xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d erstellt wurde. Hier werden die 3D-Punkte an die Stelle der Bilder geschrieben von der sie ursprünglich kamen. Dabei wird die in xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d erstellte Abbildung der Punkte in Bildkoordinaten verwendet.

Die Parameter CamParamCamParamCamParamCamParamcamParam und PosePosePosePosepose werden ignoriert. Die Größe der Bilder ist gleich der Bildgröße der ursprünglich an xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d übergebenen Bilder und kann über get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams mit 'mapping_size'"mapping_size""mapping_size""mapping_size""mapping_size" abgefragt werden.

Diese Transformationsmethode ist schneller als 'cartesian'"cartesian""cartesian""cartesian""cartesian". Sie ist z.B. nützlich um das Ergebnis einer mit segment_object_model_3dsegment_object_model_3dSegmentObjectModel3dSegmentObjectModel3dSegmentObjectModel3d durchgeführten Segmentierung anzuzeigen.

Achtung

Kameras mit hyperzentrischen Objektiven werden nicht unterstützt.

Ausführungsinformationen

Parameter

XXXXx (output_object)  singlechannelimage objectHImageHImageHobject * (real)

Bild mit den X-Koordinaten der 3D-Punkte.

YYYYy (output_object)  singlechannelimage objectHImageHImageHobject * (real)

Bild mit den Y-Koordinaten der 3D-Punkte.

ZZZZz (output_object)  singlechannelimage objectHImageHImageHobject * (real)

Bild mit den Z-Koordinaten der 3D-Punkte.

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

Handle des zu transformierenden 3D-Objektmodells.

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

Transformationsmethode.

Defaultwert: 'cartesian' "cartesian" "cartesian" "cartesian" "cartesian"

Werteliste: 'cartesian'"cartesian""cartesian""cartesian""cartesian", 'cartesian_faces'"cartesian_faces""cartesian_faces""cartesian_faces""cartesian_faces", 'from_xyz_map'"from_xyz_map""from_xyz_map""from_xyz_map""from_xyz_map"

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

Kameraparameter.

PosePosePosePosepose (input_control)  pose HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Pose des 3D-Objektmodells.

Parameteranzahl: Pose == 0 || Pose == 7 || Pose == 12

Ergebnis

object_model_3d_to_xyzobject_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyzObjectModel3dToXyz liefert den Wert 2 (H_MSG_TRUE) wenn alle Parameter korrekt sind. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d, xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d, triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3dTriangulateObjectModel3d

Alternativen

project_object_model_3dproject_object_model_3dProjectObjectModel3dProjectObjectModel3dProjectObjectModel3d

Siehe auch

xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d, get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams

Modul

3D Metrology