project_3d_point ( : : X, Y, Z, CamParam : Row, Column )

Project 3D points into (sub-)pixels.

project_3d_point is used to project one or more 3D points (with coordinates X, Y, and Z) into the image plane (in pixel). The coordinates X, Y, and Z are given in the camera coordinate system, i.e., they describe the position of the point relative to the camera.

The internal camera parameters CamParam (Focus, Sx, Sy, Cx, Cy, Kappa , ImageWidth and ImageHeight) describe the projection characteristics of the camera. The underlying camera model is a pinhole camera with radial distortions. It describes the transform of a 3D point P_C into a (sub-)pixel [r,c] of the video image by the following equations:

  P_C = (x,y,z)

    u = Focus * x / z
    v = Focus * y / z

   u' = (2*u) / (1+sqrt(1-4*Kappa*(u^2+v^2)))
   v' = (2*v) / (1+sqrt(1-4*Kappa*(u^2+v^2)))

    c = u' / Sx + Cx
    r = v' / Sy + Cy
These equations consist of the perspective projection into the image plane, a radial distortion of the projected point, and finally a sampling and a image center displacement.


Parameters

X (input_control)
real-array -> real
X-coordinates of the 3D points to be projected.

Y (input_control)
real-array -> real
Y-coordinates of the 3D points to be projected.

Z (input_control)
real-array -> real
Z-coordinates of the 3D points to be projected.

CamParam (input_control)
number-array -> real / integer
Internal camera parameters.
Number of elements: 8

Row (output_control)
real-array -> real
Row-coordinates of pixels.
Default value: 'ProjectedRow'

Column (output_control)
real-array -> real
Column-coordinates of pixels.
Default value: 'ProjectedCol'


Example
/* read camera pose */
read_cam_pose(::'campose.dat':CamPose) >
/* transform camera pose to transformation matrix */
pose_to_hom_mat(::CamPose:HomTransMat) >
/* transform 3D points from source into destination coordinate system */
hom_3d_trans(::[3.0,3.2],[4.5,4.5],[5.8,6.2],HomTransMat:X,Y,Z) >
/* read internal camera parameters */
read_cam_par(::'campar.dat':CamParam) >
/* project 3D points into image */
project_3d_point(::X,Y,Z,CamParam:Row,Column).

Result

project_3d_point returns TRUE if all parameter values are correct. If necessary an exception is raised.


Possible Predecessors

read_cam_par, hom_3d_trans


Possible Successors

store_coord, store_polygon, disp_polygon


See also

camera_calibration, disp_caltab, read_cam_par, inverse_project_pixel, hom_3d_trans



Copyright © 1996-1997 MVTec Software GmbH