project_3d_pointT_project_3d_pointProject3dPointProject3dPoint (Operator)
Name
project_3d_pointT_project_3d_pointProject3dPointProject3dPoint
— Project 3D points into (sub-)pixel image coordinates.
Signature
Herror T_project_3d_point(const Htuple X, const Htuple Y, const Htuple Z, const Htuple CameraParam, Htuple* Row, Htuple* Column)
void Project3dPoint(const HTuple& X, const HTuple& Y, const HTuple& Z, const HTuple& CameraParam, HTuple* Row, HTuple* Column)
void HCamPar::Project3dPoint(const HTuple& X, const HTuple& Y, const HTuple& Z, HTuple* Row, HTuple* Column) const
Description
project_3d_pointproject_3d_pointProject3dPointProject3dPointProject3dPoint
projects one or more 3D points (with coordinates
XXXXx
, YYYYy
, and ZZZZz
) into the image plane (in pixels) and
returns the result in RowRowRowRowrow
and ColumnColumnColumnColumncolumn
. The coordinates
XXXXx
, YYYYy
, and ZZZZz
are given in the camera coordinate
system, i.e., they describe the position of the points relative to the
camera.
The internal camera parameters CameraParamCameraParamCameraParamCameraParamcameraParam
describe the projection
characteristics of the camera (see Calibration for
details).
Execution Information
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Automatically parallelized on internal data level.
Parameters
XXXXx
(input_control) point3d.x-array →
HTupleHTupleHtuple (real) (double) (double) (double)
X coordinates of the 3D points to be projected in the
camera coordinate system.
YYYYy
(input_control) point3d.y-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Y coordinates of the 3D points to be projected in the
camera coordinate system.
ZZZZz
(input_control) point3d.z-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Z coordinates of the 3D points to be projected in the
camera coordinate system.
CameraParamCameraParamCameraParamCameraParamcameraParam
(input_control) campar →
HCamPar, HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
Internal camera parameters.
RowRowRowRowrow
(output_control) point.y-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Row coordinates of the projected points (in pixels).
ColumnColumnColumnColumncolumn
(output_control) point.x-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Column coordinates of the projected points (in pixels).
Example (HDevelop)
* Set internal camera parameters and pose of the world coordinate
* system in camera coordinates.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
654, 519, 1280, 1024, CameraParam)
create_pose (0.1, 0.2, 0.3, 40, 50, 60, \
'Rp+T', 'gba', 'point', WorldPose)
* Convert pose into transformation matrix.
pose_to_hom_mat3d(WorldPose, HomMat3D)
* Transform 3D points from world into the camera coordinate system.
affine_trans_point_3d(HomMat3D, [3.0, 3.2], [4.5, 4.5], [3.8, 4.2], X, Y, Z)
* Project 3D points into image.
project_3d_point(X, Y, Z, CameraParam, Row, Column)
Example (HDevelop)
* Set internal camera parameters and pose of the world coordinate
* system in camera coordinates.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
654, 519, 1280, 1024, CameraParam)
create_pose (0.1, 0.2, 0.3, 40, 50, 60, \
'Rp+T', 'gba', 'point', WorldPose)
* Convert pose into transformation matrix.
pose_to_hom_mat3d(WorldPose, HomMat3D)
* Transform 3D points from world into the camera coordinate system.
affine_trans_point_3d(HomMat3D, [3.0, 3.2], [4.5, 4.5], [3.8, 4.2], X, Y, Z)
* Project 3D points into image.
project_3d_point(X, Y, Z, CameraParam, Row, Column)
Example (HDevelop)
* Set internal camera parameters and pose of the world coordinate
* system in camera coordinates.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
654, 519, 1280, 1024, CameraParam)
create_pose (0.1, 0.2, 0.3, 40, 50, 60, \
'Rp+T', 'gba', 'point', WorldPose)
* Convert pose into transformation matrix.
pose_to_hom_mat3d(WorldPose, HomMat3D)
* Transform 3D points from world into the camera coordinate system.
affine_trans_point_3d(HomMat3D, [3.0, 3.2], [4.5, 4.5], [3.8, 4.2], X, Y, Z)
* Project 3D points into image.
project_3d_point(X, Y, Z, CameraParam, Row, Column)
Example (HDevelop)
* Set internal camera parameters and pose of the world coordinate
* system in camera coordinates.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
654, 519, 1280, 1024, CameraParam)
create_pose (0.1, 0.2, 0.3, 40, 50, 60, \
'Rp+T', 'gba', 'point', WorldPose)
* Convert pose into transformation matrix.
pose_to_hom_mat3d(WorldPose, HomMat3D)
* Transform 3D points from world into the camera coordinate system.
affine_trans_point_3d(HomMat3D, [3.0, 3.2], [4.5, 4.5], [3.8, 4.2], X, Y, Z)
* Project 3D points into image.
project_3d_point(X, Y, Z, CameraParam, Row, Column)
Example (HDevelop)
* Set internal camera parameters and pose of the world coordinate
* system in camera coordinates.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
654, 519, 1280, 1024, CameraParam)
create_pose (0.1, 0.2, 0.3, 40, 50, 60, \
'Rp+T', 'gba', 'point', WorldPose)
* Convert pose into transformation matrix.
pose_to_hom_mat3d(WorldPose, HomMat3D)
* Transform 3D points from world into the camera coordinate system.
affine_trans_point_3d(HomMat3D, [3.0, 3.2], [4.5, 4.5], [3.8, 4.2], X, Y, Z)
* Project 3D points into image.
project_3d_point(X, Y, Z, CameraParam, Row, Column)
Result
project_3d_pointproject_3d_pointProject3dPointProject3dPointProject3dPoint
returns 2 (H_MSG_TRUE) if all parameter values are
correct. If necessary, an exception is raised.
Possible Predecessors
read_cam_parread_cam_parReadCamParReadCamParReadCamPar
,
affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3d
Possible Successors
gen_region_pointsgen_region_pointsGenRegionPointsGenRegionPointsGenRegionPoints
,
gen_region_polygongen_region_polygonGenRegionPolygonGenRegionPolygonGenRegionPolygon
,
disp_polygondisp_polygonDispPolygonDispPolygonDispPolygon
See also
camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibration
,
disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltab
,
read_cam_parread_cam_parReadCamParReadCamParReadCamPar
,
get_line_of_sightget_line_of_sightGetLineOfSightGetLineOfSightGetLineOfSight
,
affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3d
,
image_points_to_world_planeimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlaneImagePointsToWorldPlane
Module
Calibration