Name
image_points_to_world_planeT_image_points_to_world_planeImagePointsToWorldPlaneimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlane — Transformieren von Bildpunkten in die Ebene z=0 eines Weltkoordinatensystems.
void ImagePointsToWorldPlane(const HTuple& CameraParam, const HTuple& WorldPose, const HTuple& Rows, const HTuple& Cols, const HTuple& Scale, HTuple* X, HTuple* Y)
static void HMisc::ImagePointsToWorldPlane(const HTuple& CameraParam, const HPose& WorldPose, const HTuple& Rows, const HTuple& Cols, const HTuple& Scale, HTuple* X, HTuple* Y)
static void HMisc::ImagePointsToWorldPlane(const HTuple& CameraParam, const HPose& WorldPose, const HTuple& Rows, const HTuple& Cols, const HString& Scale, HTuple* X, HTuple* Y)
static void HMisc::ImagePointsToWorldPlane(const HTuple& CameraParam, const HPose& WorldPose, const HTuple& Rows, const HTuple& Cols, const char* Scale, HTuple* X, HTuple* Y)
void HOperatorSetX.ImagePointsToWorldPlane(
[in] VARIANT CameraParam, [in] VARIANT WorldPose, [in] VARIANT Rows, [in] VARIANT Cols, [in] VARIANT Scale, [out] VARIANT* X, [out] VARIANT* Y)
VARIANT HMiscX.ImagePointsToWorldPlane(
[in] VARIANT CameraParam, [in] VARIANT WorldPose, [in] VARIANT Rows, [in] VARIANT Cols, [in] VARIANT Scale, [out] VARIANT* Y)
static void HOperatorSet.ImagePointsToWorldPlane(HTuple cameraParam, HTuple worldPose, HTuple rows, HTuple cols, HTuple scale, out HTuple x, out HTuple y)
static void HMisc.ImagePointsToWorldPlane(HTuple cameraParam, HPose worldPose, HTuple rows, HTuple cols, HTuple scale, out HTuple x, out HTuple y)
static void HMisc.ImagePointsToWorldPlane(HTuple cameraParam, HPose worldPose, HTuple rows, HTuple cols, string scale, out HTuple x, out HTuple y)
image_points_to_world_planeimage_points_to_world_planeImagePointsToWorldPlaneimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlane transformiert Bildpunkte, die in
RowsRowsRowsRowsRowsrows und ColsColsColsColsColscols gegeben sind, in die Ebene z=0 in einem
Weltkoordinatensystem und liefert ihre 3D-Koordinaten in XXXXXx und
YYYYYy zurück. Das Weltkoordinatensystem wird gewählt, indem man seine
3D-Lage in Kamerakoordinaten in WorldPoseWorldPoseWorldPoseWorldPoseWorldPoseworldPose übergibt. In
CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam müssen die internen Kameraparameter übergeben werden
(siehe calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras für ihre Reihenfolge und das zu Grunde liegende
Kameramodell).
In vielen Fällen sind CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam und WorldPoseWorldPoseWorldPoseWorldPoseWorldPoseworldPose das
Ergebnis einer vorherigen Kamerakalibrierung mit dem Operator
calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras. Ein Beispiel findet sich weiter unten.
Die erhaltenen 3D-Koordinaten können mit dem Parameter ScaleScaleScaleScaleScalescale
beliebig skaliert werden. Der Parameter ScaleScaleScaleScaleScalescale entspricht dem
Verhältnis gewünschte Einheit/ursprüngliche Einheit. Die
ursprüngliche Einheit ist durch die Koordinaten des Kalibrierkörpers
gegeben. Falls dies, wie bei der Standard-Kalibrierplatte, Meter sind, ist es
auch möglich, die gewünschte Einheit direkt durch 'm'"m""m""m""m""m",
'cm'"cm""cm""cm""cm""cm", 'mm'"mm""mm""mm""mm""mm" oder 'um'"um""um""um""um""um" anzugeben.
Intern berechnet der Operator zuerst den Sehstrahl vom Projektionszentrum der
Kamera zum Bildpunkt in Kamerakoordinaten, unter Berücksichtigung der
radialen Verzeichnung. Anschließend wird dieser Sehstrahl in das in
WorldPoseWorldPoseWorldPoseWorldPoseWorldPoseworldPose spezifizierte Weltkoordinatensystem transformiert. Der
Schnittpunkt der Ebene z=0 mit dem Sehstrahl ergibt dann die
3D-Koordinaten XXXXXx und YYYYYy.
Es ist ratsam nur solche Bildkoordinaten RowsRowsRowsRowsRowsrows und ColsColsColsColsColscols zu
spezifizieren, die innerhalb der kalibrierten Bildgröße liegen. Das
mathematische Modell funktioniert nur gut innerhalb des kalibrierten
Bereichs.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Interne Kameraparameter.
Parameteranzahl: CameraParam == 8 || CameraParam == 10 || CameraParam == 11 || CameraParam == 12 || CameraParam == 14
3D-Lage des Weltkoordinatensystems in
Kamerakoordinaten.
Parameteranzahl: 7
RowsRowsRowsRowsRowsrows (input_control) coordinates.y-array → HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)
Zeilenkoordinaten der zu transformierenden Punkte.
Defaultwert: 100.0
ColsColsColsColsColscols (input_control) coordinates.x-array → HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)
Spaltenkoordinaten der zu transformierenden Punkte.
Defaultwert: 100.0
ScaleScaleScaleScaleScalescale (input_control) number → HTupleHTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)
Maßstab oder Dimension.
Defaultwert:
'm'
"m"
"m"
"m"
"m"
"m"
Wertevorschläge: 'm'"m""m""m""m""m", 'cm'"cm""cm""cm""cm""cm", 'mm'"mm""mm""mm""mm""mm", 'microns'"microns""microns""microns""microns""microns", 'um'"um""um""um""um""um", 1.0, 0.01, 0.001, 1.0e-6, 0.0254, 0.3048, 0.9144
XXXXXx (output_control) coordinates.x-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
X-Koordinaten der Punkte im Weltkoordinatensystem.
YYYYYy (output_control) coordinates.y-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Y-Koordinaten der Punkte im Weltkoordinatensystem.
* Perform camera calibration (with standard calibration plate)
calibrate_cameras (CalibDataID, Error)
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
* Get reference pose (pose 2 of calibration object 0)
get_calib_data (CalibDataID, 'calib_obj_pose',\
[0,2], 'pose', WorldPose)
* Compensate thickness of plate
set_origin_pose(ObjInCameraPose, 0, 0, 0.0006, WorldPose)
* Transform image points into world coordinate system (unit mm)
image_points_to_world_plane(CamParam, WorldPose, PointRows, PointColumns, \
'mm', PointXCoord, PointYCoord)
Sind die Parameterwerte korrekt, dann liefert
image_points_to_world_planeimage_points_to_world_planeImagePointsToWorldPlaneimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlane den Wert 2 (H_MSG_TRUE).
create_posecreate_poseCreatePosecreate_poseCreatePoseCreatePose,
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose,
camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration,
hand_eye_calibrationhand_eye_calibrationHandEyeCalibrationhand_eye_calibrationHandEyeCalibrationHandEyeCalibration,
set_origin_poseset_origin_poseSetOriginPoseset_origin_poseSetOriginPoseSetOriginPose
contour_to_world_plane_xldcontour_to_world_plane_xldContourToWorldPlaneXldcontour_to_world_plane_xldContourToWorldPlaneXldContourToWorldPlaneXld
Calibration