Skip to content

intersect_lines_of_sightIntersectLinesOfSightIntersectLinesOfSightintersect_lines_of_sightT_intersect_lines_of_sightπŸ”—

Short descriptionπŸ”—

intersect_lines_of_sightIntersectLinesOfSightIntersectLinesOfSightintersect_lines_of_sightT_intersect_lines_of_sight β€” Get a 3D point from the intersection of two lines of sight within a binocular camera system.

SignatureπŸ”—

intersect_lines_of_sight( campar CamParam1, campar CamParam2, pose RelPose, number Row1, number Col1, number Row2, number Col2, out real X, out real Y, out real Z, out real Dist )void IntersectLinesOfSight( const HTuple& CamParam1, const HTuple& CamParam2, const HTuple& RelPose, const HTuple& Row1, const HTuple& Col1, const HTuple& Row2, const HTuple& Col2, HTuple* X, HTuple* Y, HTuple* Z, HTuple* Dist )static void HOperatorSet.IntersectLinesOfSight( HTuple camParam1, HTuple camParam2, HTuple relPose, HTuple row1, HTuple col1, HTuple row2, HTuple col2, out HTuple x, out HTuple y, out HTuple z, out HTuple dist )def intersect_lines_of_sight( cam_param_1: Sequence[Union[int, float, str]], cam_param_2: Sequence[Union[int, float, str]], rel_pose: Sequence[Union[int, float]], row_1: MaybeSequence[Union[int, float]], col_1: MaybeSequence[Union[int, float]], row_2: MaybeSequence[Union[int, float]], col_2: MaybeSequence[Union[int, float]] ) -> Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[float]]

def intersect_lines_of_sight_s( cam_param_1: Sequence[Union[int, float, str]], cam_param_2: Sequence[Union[int, float, str]], rel_pose: Sequence[Union[int, float]], row_1: MaybeSequence[Union[int, float]], col_1: MaybeSequence[Union[int, float]], row_2: MaybeSequence[Union[int, float]], col_2: MaybeSequence[Union[int, float]] ) -> Tuple[float, float, float, float]Herror T_intersect_lines_of_sight( const Htuple CamParam1, const Htuple CamParam2, const Htuple RelPose, const Htuple Row1, const Htuple Col1, const Htuple Row2, const Htuple Col2, Htuple* X, Htuple* Y, Htuple* Z, Htuple* Dist )

void HCamPar::IntersectLinesOfSight( const HCamPar& CamParam2, const HPose& RelPose, const HTuple& Row1, const HTuple& Col1, const HTuple& Row2, const HTuple& Col2, HTuple* X, HTuple* Y, HTuple* Z, HTuple* Dist ) const

void HCamPar::IntersectLinesOfSight( const HCamPar& CamParam2, const HPose& RelPose, double Row1, double Col1, double Row2, double Col2, double* X, double* Y, double* Z, double* Dist ) const

void HPose::IntersectLinesOfSight( const HCamPar& CamParam1, const HCamPar& CamParam2, const HTuple& Row1, const HTuple& Col1, const HTuple& Row2, const HTuple& Col2, HTuple* X, HTuple* Y, HTuple* Z, HTuple* Dist ) const

void HPose::IntersectLinesOfSight( const HCamPar& CamParam1, const HCamPar& CamParam2, double Row1, double Col1, double Row2, double Col2, double* X, double* Y, double* Z, double* Dist ) const

void HCamPar.IntersectLinesOfSight( HCamPar camParam2, HPose relPose, HTuple row1, HTuple col1, HTuple row2, HTuple col2, out HTuple x, out HTuple y, out HTuple z, out HTuple dist )

void HCamPar.IntersectLinesOfSight( HCamPar camParam2, HPose relPose, double row1, double col1, double row2, double col2, out double x, out double y, out double z, out double dist )

void HPose.IntersectLinesOfSight( HCamPar camParam1, HCamPar camParam2, HTuple row1, HTuple col1, HTuple row2, HTuple col2, out HTuple x, out HTuple y, out HTuple z, out HTuple dist )

void HPose.IntersectLinesOfSight( HCamPar camParam1, HCamPar camParam2, double row1, double col1, double row2, double col2, out double x, out double y, out double z, out double dist )

DescriptionπŸ”—

Given two lines of sight from different cameras, specified by their image points (Row1row1row_1,Col1col1col_1) of camera 1 and (Row2row2row_2,Col2col2col_2) of camera 2, intersect_lines_of_sightIntersectLinesOfSight computes the 3D point of intersection of these lines. The binocular camera system is specified by its internal camera parameters CamParam1camParam1cam_param_1 of the projective camera 1 and CamParam2camParam2cam_param_2 of the projective camera 2, and the external parameters RelPoserelPoserel_pose. Latter one is of the form \(\mvPoseVar{{ccs1}}{{ccs2}}\) and characterizes the relative pose of both cameras to each other, thus defining a point transformation from camera coordinate system 2 (ccs2) into camera coordinate system 1 (ccs1), see Transformations / Poses and β€œSolution Guide III-C - 3D Vision”. These camera parameters can be obtained, e.g., from the operator calibrate_camerasCalibrateCameras, if the coordinates of the image points (Row1row1row_1,Col1col1col_1) and (Row2row2row_2,Col2col2col_2) refer to the respective original image coordinate system. In case of rectified image coordinates ( e.g., obtained from rectified images), the rectified camera parameters must be passed, as they are returned by the operator gen_binocular_rectification_mapGenBinocularRectificationMap. The β€˜point of intersection’ is defined by the point with the shortest distance to both lines of sight. This point is returned in Cartesian coordinates (Xxx,Yyy,Zzz) of camera system 1 and its distance to the lines of sight is passed in Distdistdist.

AttentionπŸ”—

Stereo setups that contain cameras with and without hypercentric lenses at the same time are not supported.

Execution informationπŸ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

ParametersπŸ”—

CamParam1camParam1cam_param_1 (input_control) campar β†’ (real / integer / string)HTuple (double / Hlong / HString)HCamPar, HTuple (double / int / long / string)Sequence[Union[int, float, str]]Htuple (double / Hlong / char*)

Internal parameters of the projective camera 1.

CamParam2camParam2cam_param_2 (input_control) campar β†’ (real / integer / string)HTuple (double / Hlong / HString)HCamPar, HTuple (double / int / long / string)Sequence[Union[int, float, str]]Htuple (double / Hlong / char*)

Internal parameters of the projective camera 2.

RelPoserelPoserel_pose (input_control) pose β†’ (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[int, float]]Htuple (double / Hlong)

Point transformation from camera 2 to camera 1.

Number of elements: 7

Row1row1row_1 (input_control) number(-array) β†’ (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[int, float]]Htuple (double / Hlong)

Row coordinate of a point in image 1.

Col1col1col_1 (input_control) number(-array) β†’ (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[int, float]]Htuple (double / Hlong)

Column coordinate of a point in image 1.

Row2row2row_2 (input_control) number(-array) β†’ (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[int, float]]Htuple (double / Hlong)

Row coordinate of the corresponding point in image 2.

Col2col2col_2 (input_control) number(-array) β†’ (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[int, float]]Htuple (double / Hlong)

Column coordinate of the corresponding point in image 2.

Xxx (output_control) real(-array) β†’ (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

X coordinate of the 3D point.

Yyy (output_control) real(-array) β†’ (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Y coordinate of the 3D point.

Zzz (output_control) real(-array) β†’ (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Z coordinate of the 3D point.

Distdistdist (output_control) real(-array) β†’ (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Distance of the 3D point to the lines of sight.

ResultπŸ”—

intersect_lines_of_sightIntersectLinesOfSight returns 2 (H_MSG_TRUE) if all parameter values are correct. If necessary, an exception is raised.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

binocular_calibrationBinocularCalibration

See also

disparity_to_point_3dDisparityToPoint3d

ModuleπŸ”—

3D Metrology